-
Link url directory php
Buona sera a tutti^^
ho di nuovo bisogno del vostro aiuto, x quanto abbia cercato nelle varie guide web, non riesco a capire come realizzare un menu di link con le pagine raccolte in diverse cartelle utilizzando php.
Mi spiego meglio... scusate,
seguendo questa guida LINK sono riuscita a realizzare una piccola sezione del mio sito in php, molto pratico, veloce e funzionale x cui ho pensato di trasformare in php anche un'altra sezione^^
Per sezione intendo pagine dedicate contenute in una cartella/directory specifica,
in questa cartella ho suddiviso le pagine per arcomenti, per cui ho altre cartelle
ora, il mio problema è questo, come faccio a mettere un link nella home di queste pagine considerando che lo script che ho ora x aprire le pagine nella cartella principale è questo:
Codice PHP:
<?php
$p="home"; //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");
?>
In pratica io ho la cartella principale che si chiama "Natale"
e dentro ci sono cartelle tipo: "gadget" "tag" "datari" ecc. ecc.
Spero di esser stata chiara e che possiate aiutarmi GRAZIE
-
ciao, quello che serve a te è un PHP LINK DIRECTORY SCRIPT.
qui trovi tanti script e gratuiti:
http://sourceforge.net/search/?type_...rectory+script
ciò che ho capito dalla tua descrizione è che vuoi uno script che indicizza ai file di una directory, guarda allora questo script:
http://sourceforge.net/projects/autoindex/
se ho capito male correggimi....?
-
Ciao Euro grazie come sempre sei gentilissimo^^
Allora ho guardato nei link che mi hai scritto, ma credo che quello che serve a me sia qualcosa di più semplice, nel senso che io devo solo fare in modo che il php capisca dove sta la pagina che viene lincata ovvero cerchi la cartella giusta.
X il momento io ho realizzato questo LINK
con questo script
Codice PHP:
<?php
$p="home"; //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");
?>
scrivo i link in questo modo:
Codice PHP:
<a href="index.php?page=affiliati">PAG PROVA</a>
ora se tu provi il link vedrai che funziona perfettamente perche la pagina è nella cartella principale "natale" il mio problema è linkare le pagine anteprima x i vari argomenti che si trovano in altre cartelle contenute nella cartella principale natale,
perchè se io metto il link così:
Codice PHP:
<a href="index.php?page=adottini/icon">ICON</a>
mi da' la pgina di errore....
il percorso della pagina sarebbe questo:
Codice HTML:
http://www.iltelaiodipenelope.it/natale/adottini/icon.php
Spero di essermi spiegata bene... ^_^ un abbraccio
-
be ovvio che ti da errore....
il problema principale è nell' if di confronto :
Codice PHP:
if($p!=basename($p) || !preg_match("/^[A-Za-z0-9\-_]+$/",$p) || $p=="index" || !file_exists($p.".php"))
$p="error"; //pagina di errore
}
e ovviamente se file non esiste ti darà sempre "error":
Codice PHP:
!file_exists($p.".php")
devi inserire il percorso giusto($p) del file .php da includere nella pagina...
anche basename() non va bene....
il tuo è un codice che funziona se inserito in un file appartente a quella directory.
-
Appunto Euro x questo avevo postato il codice, solo che non sono in grado di fare le giuste variazioni affinchè si aprano le pagine che stanno nelle varie cartelle.
Non mi riesce di trovare una guida in italiano, x capire come fare.... haelp me!!!!
-
mi sa che forse ho sbagliato....
puoi provare singolarmente ogni condizione dell if, dato che sono or ???
__________________________________________________ ____________
Allora ho provato queste 2 condizioni con $p="adottini/icon":
$p!=basename($p) ==> l'output è icon
!preg_match("/^[A-Za-z0-9\-_]+$/",$p)
sono entrambi sbagliate!!!quindi ti da errore con tutte e due!!!
per !file_exists($p.".php") ..dipende dove hai caricato lo script(il tuo codice) , in quale cartella?
QUINDI NON HO SBAGLIATO....SENZA PROVARE!!!!
__________________________________________________ ____________
Allora puoi risolvere in questo modo:
sostituisci !preg_match("/^[A-Za-z0-9\-_]+$/",$p) con:
Codice PHP:
!preg_match("/^[A-Za-z0-9\/-_]+$/",$p)
sostituisci $p!=basename($p) con:
Codice PHP:
if (substr_count($p,"/")) $page=dirname($p)."/".basename($p) ;
else $page = basename($p);
//nell if:
$p!=$page
-
Perfetto Euro ^_^ ora mi apre tutte le pagine,
c'è un problema però, non legge le immagini, io in ogni cartella/categoria faccio anche una cartella "images" dove salvo tutte le immagini che mi servono x le pagine, per avere meno confusione. Per esempio nella pagina "adottini/icon" che ora si apre benissimo non si visualizzano le immagini che si trovano nella cartella images -- ovvero il percorso delle immagini sarebbe
Codice HTML:
http://www.miosito/natale/adottini/images/icon-1.gif
mentre il percorso della pagina anteprima icon è:
Codice HTML:
http://www.miosito/natale/adottini/icon.php
il link che uso per richiamarla è:
Codice HTML:
<a href="index.php?page=adottini/icon">ICON</a>
spero di non averti confuso le idee!!!!
Ho sistemato il codice così e forse al solito ho pasticciato io^^:
Codice PHP:
<?php
$p="home"; //pagina di default per i contenuti centrali
if(isset($_GET['page'])){ //pagina passata via parametro
$p=$_GET['page'];
if (substr($p,"/")) $page=dirname($p)."/".basename($p) ;
else $page = basename($p);
}
include($p.".php");
?>
PS Non ho più la pagina errore
GRAZIE EURO ^_______^
-
probabilmente non hai capito quello che ho scritto....
devi lasciare il loop di confronto variando la parte di basename e preg_match, così:
Codice PHP:
<?php
$p="home"; //pagina di default per i contenuti centrali
if(isset($_GET['page'])){ //pagina passata via parametro
$p=$_GET['page'];
if (substr_count($p,"/")) $page=dirname($p)."/".basename($p) ;
else $page = basename($p);
if($p!=$page || !preg_match("/^[A-Za-z0-9\/-_]+$/",$p) || $p=="index" || !file_exists($p.".php")) $p="error"; //pagina di errore
}
include($p.".php");
?>
per le immagini:
se hai :
iltelaiodipenelope.it/natale/index.php <== dove hai lo script
avrai:
iltelaiodipenelope.it/natale/adottini/icon.php
e le immagini sono in:
iltelaiodipenelope.it/natale/adottini/images/icon-1.gif
dipende dal file icon.php che dovrà avere il percorso assoluto alle immagini
controlla quindi nel file icon.php il percorso delle immagini da caricare.
in pratica includendo il file icon.php alla index.php di natale, dovrai avere nel file icon.php:
Codice HTML:
<img border="0" src="adottini/images/penelopecrisfan1.gif">
oppure:
Codice HTML:
<img border="0" src="http://iltelaiodipenelope.it/natale/adottini/images/penelopecrisfan1.gif">
-
Grazie Euro ero sicura che avevo fatto casino io ^_^' ora faccio prova e ti faccio sapere^^
Un abbraccio gentilissimo come sempre
FUNZIONA TUTTO ALLA PERFEZIONE GRAZIE INFINITE ^____________^
NATURALMENTE SARAI MENSIONATO NEI CREDITS
UN ABBRACCIONE
.... piccola rettifica^^
con la stringa della pagina errore, non legge le pagine contenute nella cartella principale
ovvero la base della sezione "cartella/natale" se la tolgo non ho la pagina errore però legge tutte le pagine,
si può far qualcosa per avere questa opzione?
Altrimenti la tolgo e via^^
La stringa di cui parlo è questo pezzo qui:
Codice PHP:
if($p!=$page || !preg_match("/^[A-Za-z0-9\/-_]+$/",$p) || $p=="index" || !file_exists($p.".php")) $p="error"; //pagina di errore
-
scusami ho sbagliato l'istruzione, ho messo substr() invece di substr_count(), codice giusto:
(nella fretta ho scritto substr() ed ho ommesso _count dell'istruzione)
funziona sempre, anche per sottodirectory, es: adottini/icon/subicon/subsubicon ecc....
Codice PHP:
<?php
$p="home"; //pagina di default per i contenuti centrali
if(isset($_GET['page'])){ //pagina passata via parametro
$p=$_GET['page'];
if (substr_count($p,"/")) $page=dirname($p)."/".basename($p) ;
else $page = basename($p);
if($p!=$page || !preg_match("/^[A-Za-z0-9\/-_]+$/",$p) || $p=="index" || !file_exists($p.".php")) $p="error"; //pagina di errore
}
include($p.".php");
?>
-
Ora e' perfettissimo grazie e figurati se ti devi scusare io da sola non ce l'avrei mai fatta ^__________________^
un abbraccio alla prossima che sicuro non sara' tanto a lungo....
-
ciao, un abbraccio ..... e auguroni
:oops:
-
...scusate se sono di nuovo qui a rompere^^
premetto che ora il sito con le correzioni di Euro funziona perfettamente, solo che ho notato che in pratica adottando questa struttura x realizzare la mia piccola sezione ho ingabbiato tutte le pagine nella index, nel senso che se provo ad inserire un qualsiasi script (ho provato ad inserire il servizio di statistiche seguendo la lezione di weblink)funziona solo nella pagina index, compreso il contatore che si incrementa ad ogni clik sui link... e se lo metto su una qualsiasi pagina mi da le pagine della index >.<
C'è un sistema diverso per realizzare un sito in php?
Ho provato a leggere delle guide ma al solito con scarsi risultati.... non sono in grado di scrivere degli script in php
grazie
-
dalle stats dovrebbe rilevare la pagina dal querystring...vedrai sempre la index.php ma dove punta:
iltelaiodipenelope.it/natale/index.php?page=accessori/natalemondo
punta alla pagina accessori/natalemondo
utilizzando un servizio opportuno che ti permetta di inserire uno script che rilevi l'apertura di ogni singolo file
-
Ciao Euro grazie prima di tutto^^
allora io non so se mi sono spiegata bene su ciò che volevo dire... come al solito^^
x farti capire se io provo a mettere questo script in una delle pagine:
Codice PHP:
<?php print ("Sei nella pagina: "); ?>
<?php $currentPage = $_SERVER["PHP_SELF"];
print ($currentPage); ?>
e la vado ad aprire dalla index mi da il percorso della index e non quello della pagina^^ ora io mi ero divertita a realizzare il minisito in php proprio x provare un po' di script che ho trovato in giro ma essendo poi in un certo senso attiva solo la index non lo posso fare x cui mi chiedevo se c'era uno script diverso da utilizzare x far funzionare il menu affinchè le pagine sono siano incatenate nella index
Un abbraccio
-
invece di utilizzare $_SERVER["PHP_SELF"], dovresti provare a utilizzare $_SERVER['REQUEST_URI']
il manuale per $_SERVER lo trovi a questa pagina:
http://php.net/manual/en/reserved.variables.server.php
:mrgreen:
se prendiamo questa pagina di esempio iltelaiodipenelope.it/natale/index.php?page=gif/alberi
$_SERVER['REQUEST_URI'] sarà uguale a /natale/index.php?page=gif/alberi
quindi potresti fare così:
Codice PHP:
Sei nella Pagina : <a href="<?=$_SERVER['REQUEST_URI'] .'.php'?>">Gif Alberi</a>
-
Ti ringrazio Euro e così magari faccio funzionare lo script per sapere il percorso delle pagine,
ma c'è un altro script per il menu link?
Un abbraccio e buonissimo fine settimana a tutti ^_^
-
ci sono altri metodi, e penso che siano molto simili fra di loro o anche a quello che utilizzi tu.
uno di questi è quello che utilizza gli array e funzioni di stampa dei diversi contenuti(che sarebbero i contenuti di ogni file da includere)....questo metodo è abbastanza complesso, mentre quello che utilizzi tu è relativamente semplice.
un esempio di funzione per includere i diversi contenuti delle pagine è questo :
si può specificare un titolo, un contenuto e le dimensioni, la funzione ritornerà il titolo e il contenuto che si vuole visualizzare in quel punto della pagina....
Codice PHP:
function contenuto($title="",$content="", $width="100%", $height="100%") {
return "
<table cellpadding=0 cellspacing=0 class=\"\" width=\"$width\">
<tr>
<td>
<table cellpadding=0 cellspacing=1 width=\"100%\">
<tr>
<td valign=\"top\" align=\"center\" class=\"\"><b>$title</b></td>
</tr>
<tr>
<td bgcolor=\"\" valign=\"top\">
<table cellpadding=2 width=\"100%\" height=\"$height\" class=\"\">
<tr>
<td valign=\"top\">$content</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
";
}
puoi quindi utilizzare la funzione in questo modo, ovviamente dando alle variabili i rispettivi contenuti:
Codice PHP:
<? echo contenuto($includes[title], $includes[content]); ?>
-
Ciao Euro ^_^ buon inizio settimana a tutti^^
Allora ho provato uno script con gli array x le pagine ma io al solito ne ho troppe e mi diventa più complicato^^ e hai ragione x me è difficile la funzione che mi suggerisci dai va benissimo così per ora, mi studierò le funzioni x bene e vedrò se più avanti sarò in grado di trafficarci in caso saprò a chi rivolgermi x difficoltà^^
Ti ringrazio tantissimo sei stato come sempre prezioso e paziente
Un abbraccio alla prossima.... tanto non mancherà figurati!!!!
-
con gli array diventa più laborioso....
bisogna impostare gli array per ogni pagina (o file .php) che si vuole andare a visualizzare in questo modo:
prendiamo in esempio la pagina iltelaiodipenelope.it/natale/index.php?page=gif/alberi
quindi sarà:
Codice PHP:
$modulo['gif/alberi'] = array("Gif Alberi","gif/alberi.php");
//imposti una pagina not found:
$modulo['not_found']= array("Pagina non trovata!","errors/404.php");
if(!$modulo[$p][1]) {
$p="not_found";
}
$includes[title]=$modulo[$p][0];
if(!include($modulo[$p][1])) {
$p="not_found";
include($modulo[$p][1]);
}