aprire pagina linkata nel content

donato.chpp

Utente Attivo
26 Ott 2008
36
0
0
ciao ciao
ho un dilemma, ho creato un template con php e html fatto in questo modo:
creato un file html con 4 div (header, menu, content, footer) e un file css per la grafica.
poi ho tagliato il file html in 4 file php (appunto header, menu, content e footer) e creato un file index.php dove includo le 4 parti.

questo è il file index.php

<?php
include("tmp/header.php");
include("tmp/menu.php");

$p="tmp/content"; //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("tmp/footer.php");

?>

che funziona senza problemi.
la domanda è su come posso fare ad aprire i link del menu nel content
cioè, nel momento in cui apro il sito ci deve essere nel content il file "tmp/content" che è un file php con dentro solo codice html contenente il div.oltre a questa ci saranno altre pagine come "temp/content", magari "temp/download", contenente solo il div content.come faccio a farla aprire nel content nel momento in cui la linko?
spero di essere stato chiaro
 

satifal

Utente Attivo
25 Set 2008
522
13
0
Roma
Nel menu devi mettere link del tipo:

HTML:
<a href="index.php?page=pagina_voce1">Voce 1</a>
<a href="index.php?page=pagina_voce2">Voce 2</a>
...
 

donato.chpp

Utente Attivo
26 Ott 2008
36
0
0
SATIFAL grazie mille per la risposta...
ho provato ma non mi apre la finestra, di sicuro sbaglio qualcosa.
ho creato semplicemente una pagina prova php, nel menu devo mettere:

<a href="index.php?page=prova.php">prova</a>

in questo modo mi da impossibile trovare la pagina web.

dove sbaglio?
 

satifal

Utente Attivo
25 Set 2008
522
13
0
Roma
Il meccanismo è molto semplice, non fai altro che chiamare sempre la pagina index.php (che quindi ricaricherà sempre header, menu e footer) passando di volta in volta come parametro page la pagina che dovrà essere caricata come content.
Nel tuo caso credo ci sia un problema di percorsi per cui controlla bene le cartelle dome metti i file. Comunque per come è strutturato il tuo codice non devi mettere il .php in fondo alla pagina da caricare in quanto lo aggiungi successivamente.
Per cui:

HTML:
<a href="index.php?page=prova.php">prova</a>

diventa:

HTML:
<a href="index.php?page=prova">prova</a>

e comunque ripeto, controlla bene i percorsi in quanto il codice è corretto.
 

donato.chpp

Utente Attivo
26 Ott 2008
36
0
0
giusto, che stupido, funziona perfettamente... :mavieni:
come sistema credi sia buono o secondo te non va bene?
ps. grazie ancora moltissimo per l'aiuto 0:)
 

donato.chpp

Utente Attivo
26 Ott 2008
36
0
0
ciao SATIFAL
le pagine si aprono perfettamente, però se la pagina prova la metto in una cartella ad esempio tmp la scritta diventa

index.php?page=tmp/prova

no?

perchè non me la fa aprire, mi potresti aiutare?
 

satifal

Utente Attivo
25 Set 2008
522
13
0
Roma
Il valore del parametro page che cerchi di passare "tmp/prova" è corretto se il file prova.php si trova nella cartella tmp. Il problema risiede nello script php e più precisamente nei controlli che vengono effettuati sul valore del parametro page. Nel caso il valore da te passato contenga il carattere / il seguente controllo fallisce in ben 2 punti impedendo la corretta visualizzazione della pagina da te desiderata:

PHP:
if ($p != basename($p) || !preg_match("/^[A-Za-z0-9\-_]+$/", $p) || $p == "index" || !file_exists($p.".php"))

I controlli che falliscono sono "$p != basename($p)" e "!preg_match("/^[A-Za-z0-9\-_]+$/", $p)".

Nel primo controllo la funzione basename() restituisce il nome del file estrapolandolo dal percorso indicato per cui il parametro tmp/prova restituisce prova in quanto tmp/ viene considerato come percorso. Quindi il controllo fallisce in quanto $p che è uguale a tmp/prova è diverso da basename($p) che è uguale a prova.
Il secondo controllo invece consiste di un'espressione regolare che verifica i caratteri di cui è composto il valore del parametro. Nel tuo caso i caratteri leciti sono quelli alfabetici (maiuscoli e minuscoli), le cifre, ed i caratteri \ - _
Per permettere il passaggio del carattere / devi inserirlo nell'elenco dei caratteri leciti, ma dato che / è un carattere speciale, nelle espressioni regolari, devi anteporgli il carattere \ Per cui il controllo diventa:

Codice:
!preg_match("/^[A-Za-z0-9\-_\/]+$/", $p)
 

donato.chpp

Utente Attivo
26 Ott 2008
36
0
0
capito, preg_match l'ho modificato, però come mi devo comportare con basename?

ho provato a fare così ma non va bene:

<a href="index.php?page=prova">prova</a>

e nell'index:

<?php
include("tmp/header.php");
include("tmp/menu.php");
include("tmp/extra.php");

$p="tmp/content"; //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("tmp/."$p.".php");
include("tmp/footer.php");

?>

cioè gli passo prova come file, quindi $p=basename($p)
e poi nel penultimo include gli aggiungo il path,
però credo stia andando in cunfusione totale :dipser:
 

satifal

Utente Attivo
25 Set 2008
522
13
0
Roma
Secondo me puoi anche togliere il controllo col basename() e rimettere l'include così com'era.

PHP:
if(!preg_match("/^[A-Za-z0-9\-_\/]+$/", $p) || $p=="index" || !file_exists($p.".php"))
 

Disordier

Nuovo Utente
5 Dic 2008
4
0
0
scusate se mi intrometto ma pur copiando il codice a quanto pare sono una schiappa e non ci riesco...

allora questa è la home

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

<?php
include("tmp/header.php");
include("tmp/menu.php");

$p="tmp/content"; //pagina contenuti centrali
if(isset($_GET['page'])){ //pagina passata via parametro
$p=$_GET['page'];
if(!preg_match("/^[A-Za-z0-9\-_\/]+$/", $p) || $p=="index" || !file_exists($p.".php"))
$p="error"; //pagina errore
}
include("tmp/."$p.".php");
include("tmp/footer.php");

?>

</body>
</html>

la mia domanda a questo punto è... le pagine che vengono incluse (header.php, menu.php, index.php, error.php, footer.php) vanno messe in una cartella o nella stessa directory dell'home.php...

ho provato in entrambi i modi ma in entrambi i casi mi da questo errore:
Codice:
Parse error: syntax error, unexpected T_VARIABLE in /users/p/s/i/psike/public_html/home.php on line 21
 

satifal

Utente Attivo
25 Set 2008
522
13
0
Roma
C'è un errore di sintassi nel codice:

PHP:
include("tmp/."$p.".php");

dovrebbe essere così:

PHP:
include("tmp/".$p.".php");
 
Discussioni simili
Autore Titolo Forum Risposte Data
P [Javascript] Aprire Link in Div e pagina Dinamica Javascript 0
F aprire una pagina in un overlay jQuery 0
M Salvare i dati nel db e aprire altra pagina php PHP 7
C [PHP] Aprire la pagina dopo aver fatto il login PHP 1
G Aprire un app da pagina web Sviluppo app per Android 3
F aprire un file pdf da una pagina asp Classic ASP 2
M Aprire file php di una pagina web! PHP 5
MrClog Aprire un link da una pagina PHP con "esplora risorse" PHP 3
Elisacau Aprire un link in un div nella stessa pagina!? HTML e CSS 7
L Aprire link in nuova pagina HTML e CSS 4
C Aprire link ad un pagina in un div senza refresh jQuery 41
C Aprire con un button un'altra schermata all'interno della pagina html. Javascript 25
A aprire pagina con form in una nuova finestra Javascript 2
F Aprire una pagina php o html in una nuova finestra da una pagina php PHP 2
A aprire pagina html in un punto preciso HTML e CSS 4
A Aprire pagina in div tramite unity Javascript 19
G DOMDocument: aprire Feed rss in nuova pagina PHP 2
T aprire una nuova pagina dinamicamente PHP 4
A Problema: Aprire la pagina gmail in un iframe Javascript 1
M Aprire il contenuto di un link in un altro div (senza aggiornare tutta la pagina) Javascript 1
M aprire da una pagina master altre pagine php PHP 7
N Aprire un link esterno dentro ad una pagina del sito HTML e CSS 6
M Aprire popup al caricamento della pagina Javascript 3
G [javaScript]Aprire file Excel in un'altra pagina Javascript 1
P Aprire una pagina aspx da html HTML e CSS 1
V Aprire Pagina Indipendente Flash 1
L aprire un link esterno all'interno di una pagina web rispettando w3c. help :( HTML e CSS 5
P Aprire Un Link In Una Pagina Secondaria Flash 1
C aprire una pagina diversa in una tabella HTML e CSS 9
P Aprire pagina nella stessa pagina HTML e CSS 3
L aprire i link in una nuova pagina HTML e CSS 5
ilvampiro Aprire Pagina Html Con Dimensioni Fisse E Senza Scrollbar HTML e CSS 5
E fpdf salvare e aprire il file PHP 4
M pulsante per aprire una maschera che contiene controllo schede MS Access 0
C ACCESS Aprire maschera se valore non presente in una combo MS Access 7
R Aprire maschera con Openform filtrando un campo testuale con un valore recuperato da un'altra maschera MS Access 10
W Aprire un pop-up da un pop-up HTML e CSS 3
T Come aprire file .wtb Discussioni Varie 10
A Aprire la window form Add Connection da codice Visual Basic 4
S Aprire su Mac Progetto PSD salvato su win Photoshop 0
D [HTML] Non riesco aprire foto singole in un album creato con "iWebAlbum" HTML e CSS 1
A [MS Access] Aprire maschera con sottomaschera su ultimo record MS Access 0
L [Javascript]Aprire div con click e chiuderlo con altro pulsante Javascript 2
Tommy03 Aprire un file .asp nel browser Classic ASP 5
K Aprire porte modem Tim smart Fibra Adsl e Connettività 0
ste80 [MS Access] Impossibile aprire una maschera da pulsante MS Access 2
R [MS Access] COME APRIRE UNA MASCHERA FACENDO DOPPIO CLICK SU UN RECORDSET MS Access 1
R [MS Access] aprire maschera con doppio click su recordset di sottomaschera MS Access 4
G [PHP] Aprire una cartella tramite un link PHP 1
S [PHP] Aprire file in locale PHP 1

Discussioni simili