|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Oct 2005
Messaggi: 44
|
[PHP] problema percorsi assoluti
Ciao scusate, ma sono ignorante in materia!
Il mio obiettivo è creare una pagina .php con header main e footer. Cliccando su un link deve cambiare solo il main. Mi potete guidare passo passo?!? Ho creato una pagina index.php nella directory principale del sito in cui c'è questo script php che mi permette di sostituire solo il contenuto centrale senza ricaricare header e footer: <? include("header.php"); $p="main"; //pagina di default per i contenuti centrali if(isset($_GET['page'])){ //pagina passata via parametro $p=$_GET['page']; if($p!=basename($p) || !preg_match("/^[A-Za-z0-9\-_]+$/",$p) || $p=="index" || !file_exists($p.".php")) $p="error"; //pagina di errore } include($p.".php"); include("footer.php"); ?> I link all'interno dell'header (dov'è il menù di navigazione) sono di questo tipo: <a href="index.php?page=contattaci"> e funzionano correttamente, ma per link che puntano a pagine in sottodirectory non so come fare... Per es ho il guestbook che è nella directory /guestbook/index.php Se per es faccio un link di questo tipo: <a href="index.php?page=/guestbook/index"> oppure <a href="index.php?page=./guestbook/index"> mi viene sempre mostrata la pagina d'errore perchè non trova i file che gli ho chiesto di includere! In pratica non riconosce il percorso come l'ho scritto io... Grazie |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Posso consigliarti di fare così: i file che contengono i pezzi (perché non contengono header/footer) di pagina che devono essere inclusi in modo "dinamico", potresti metterli con una estensione particolare, es. ".part.php". A quel punto devi solo testare se il file esiste. Cioè se ti viene richiesto "/guestbook/index", tu testi se esiste "/guestbook/index.part.php" Nota che per comporre (e poi includere) il file, ti conviene usare la variabile $_SERVER['DOCUMENT_ROOT'] che contiene il path in locale che punta alla root del sito. Quindi potresti fare una cosa del tipo (non l'ho testato Codice:
$finc = $_SERVER['DOCUMENT_ROOT'] . "/error.php";
if (isset ($_GET['page']))
{
$ftest = $_SERVER['DOCUMENT_ROOT'] . $_GET['page'] . ".part.php";
if (file_exists ($ftest))
$finc = $ftest;
}
include "$finc";
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:51.



















