assegnare src iframe tramite php

Stefano Bonifazzi

Nuovo Utente
8 Mag 2015
3
0
0
Ciao.
Ho provato e riprovato a cercare sul web la soluzione al mio problema ma non ho trovato niente, provo a spiegare:

Ho la necessità di fornire all'esterno un codice iframe che 'punta' ad un file che risiede sul mio server.

Il percorso del file in questione lo leggo da un db mysql.

Questi sono i passaggi che ho fatto:

ho un file 'functions.php' che contiene una funzione che si chiama 'getsource($mykey)'. dove $mykey è la chiave per ottenere il percorso del file da visualizzare nell'iframe.
Per fare una prova ho creato un file 'test.php' dentro al quale ho dichiarato in una variabile la chiave, e successivamente richiamato la funzione getsource(chiave) che mi ha restituito il percorso applicandolo all'iframe:

<iframe src=<?php echo getsource(chiave) width=100 height... ecc

e tutto funziona.

Ma la chiave deve essere fornita come variabile esterna, quindi ho creato un altro file che si chiama projects.php, al quale viene consegnato tramite GET la chiave necessaria e che - sempre tramite la funzione getsource(key) - non fa altro che andare a leggere il percorso del file che voglio visualizzare e restituirlo: echo getsource(key)
Per ultimo ho creato un altro file di prova 'prova_iframe.html' dove ho inserito nel src; projects.php?key=chiave

L'unico problema ora è che quando carico prova_iframe.html, mi genera il contorno dell'iframe ma invece di visualizzarmi il contenuto del file risultato dall'interrogazione al db, mi mostra la stringa del percorso!

Ho usato echo in entrambi i casi, con test.php funziona, mentre con prova-iframe no. Dove sbaglio?
Sto lavorando su webserver in locale.

Ringrazio chi vorrà aiutarmi.
 
Senza un minimo di codice difficilmente possiamo dirti dove sbagli.

Se non vuoi postare tutto il lavoro che hai fatto almeno posta la pagina prova-iframe, per vedere se c'è qualcosa di sbagliato li
 
Chiedo venia, ho voluto essere sbrigativo per non annoiare ma in effetti...

Allora... ho la necessità di fornire all'esterno un codice iframe che 'punta' ad un file che risiede sul mio server.

Il percorso del file in questione lo leggo da un db mysql.

Questi sono i passaggi che ho fatto:

ho un file 'functions.php' che contiene la funzione 'getsource($mykey)'. dove $mykey è la chiave per ottenere il percorso del file da visualizzare nell'iframe.

questo è il codice della funzione getsource($key), contenuta nel file 'functions.php:

Codice:
function get_source($proj_key){
    //Funzione per ottenere il sorgente da inserire nel codice html dell'iframe
    //del progetto da visualizzare, il cui codice identificativo è fornito
    //come argomento ($proj_key).

    
    //Connessione al db
    require_once 'maindb_connect.php';
	
    //Dichiarazione costanti
    define ("IMG_PROJ_NOT_AVAILABLE", "/images/ProjectNotAvailable.jpg");
           
	
    if (!$Result = $mysqli->query("SELECT * FROM tb_works WHERE proj_key = '$proj_key'")){
            echo "Err: " . $mysqli->error . ".";
            exit();
    }

    //$NumRows = $Result->num_rows;
    if ($Result->num_rows == 0){
        return IMG_PROJ_NOT_AVAILABLE;
     }

    $row = $Result->fetch_assoc();

    	
    $proj_path = $row["proj_path"];

    $src = $proj_path;

    return $src;
}

Per fare una prima prova, ho creato il seguente file 'test.php':

Codice:
<!DOCTYPE HTML>
<html>
<head>
    <title>Test lettura progetto php</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <?php
        include_once 'project_functions.php';
        $proj_key='keirp94v9ks8fb2s'; /*-- dichiaro la chiave del progetto --*/
    ?>
</head>
<body>

		<iframe 
				width="1000px"
				height="500px"
				style="border:5px solid #ff9600;"
				src=<?php echo get_source($proj_key); ?>>
		</iframe>
</body>
</html>

e tutto funziona, l'iframe visualizza il contenuto del link letto dal db.

io però ho necessità di fornire la chiave dall'esterno, tramite $_GET ad un file php, e allora ho creato un altro file che si chiama projects.php, al quale viene consegnato tramite $_GET la chiave necessaria e che - sempre tramite la funzione getsource(key) - non fa altro che andare a leggere il percorso del file che voglio visualizzare e restituirlo: echo getsource(key)

Questo è il file projects.php:

Codice:
<?php
    //consegna all'esterno la stringa sorgente per l'iframe
    
    //Carica libreria funzioni
    require_once '../php/project_functions.php';
   
    //Dichiarazione variabile proj_key
    if(isSet($_GET['proj_key']))
    {
    $proj_key = $_GET['proj_key'];
    }   
	
    echo htmlentities(get_source($proj_key));
?>


Per ultimo poi ho creato un altro file di prova 'prova_iframe.html' dove ho inserito nel src; projects.php?key=chiave
questo è prova_iframe.html:

Codice:
<!DOCTYPE HTML>
<html>
	<head>
		<title>Test lettura progetto dall'esterno</title>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	</head>
	<body>
		<iframe src = [url]http://localhost/projects.php?proj_key=keirp94v9ks8fb2s[/url]
			width="1000"
			height="500"
			style="border:5px solid #ff9600;">
		</iframe>
	</body>
</html>
Questa volta però, il frame anzichè mostrarmi il contenuto del file linkato, mi mostra (all'interno dell'iframe) la stringa del percorso.
Sto lavorando su webserver locale, apache 2.4, php 5.4, mysql 5.6.

Ringrazio chi vorrà aiutarmi.
 
Ho trovato la soluzione, che posto nel caso possa servire a qualcun.altro.

E' bastato portare fuori la stringa percorso con

PHP:
 'header("location: " . stringapercorso)'
 

Discussioni simili