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 html che visualizzi un iframe che 'punta' ad un file che risiede sul mio server.
Il percorso del file in questione però ho necessita di leggerlo da un db mysql (sennò sarebbe troppo facile .
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();
return $row["proj_path"];
}
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 tramite un link, 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)
Questo è il file projects.php:
Codice PHP:
<?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 htmlspecialchars(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 HTML:
<!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 = http://localhost/projects.php?proj_key=keirp94v9ks8fb2s
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, quindi non 'parsa' il link consegnato.
Ho guardato e riguardato la sintassi del risultato in google chrome ma è a posto, tant'è che se lo copio e lo incollo in una nuova finestra del browser funziona.
Sto lavorando su webserver locale, apache 2.4, php 5.4, mysql 5.6.
Sono ancora alle prime armi e se qualcuno vorrà aiutarmi a capire qualcosa in più gliene sarò grato.