[RISOLTO][PHP] Corretto utilizzo di ISSET/INCLUDE

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
Malco
Prode Principiante
Messaggi: 189
Iscrizione: martedì 13 novembre 2007, 11:52
Località: Roma

[RISOLTO][PHP] Corretto utilizzo di ISSET/INCLUDE

Messaggio da Malco »

Salve a tutti, mi servirebbe una dritta riguardo php, premetto che non sono espertissimo e mi sto cimentando da poco nell'utilizzo di quest'ultimo.
Sto realizzando un sito in HTML5\php e mi è stato suggerito l'utilizzo della funzione isset/include per poter cambiare dinamicamente solo parti della pagina.
Quindi in pratica ho generato una pagina index.php che contiene il template principale e all'interno del content principale (ossia la section che cambia in base alla pagina selezionata) ho inserito:
[code2=php]<?php
if(isset($_GET['page'])){
include($_GET['page']);
}else{
include('home.php');
}
?>[/code2]

E fin qui tutto apposto, quando dall'homepage clicco su un link interno, ad esempio: [code2=html]<a href="?page=pagina.php">Pagina</a>[/code2]il tutto viene eseguito perfettamente.
Il problema nasce nel momento in cui sulla barra degli indirizzi vado direttamente sulla pagina localhost/pagina.php.
A questo punto viene visualizzato solo il content di pagina.php, senza il template contenuto nella pagina index.php perché sono andato direttamente a prendere la pagina senza passare per index.php.
Che pattern corretto dovrei utilizzare per evitare ciò?
Vi ringrazio per l'attenzione e le eventuali info! :D
Ultima modifica di Malco il martedì 15 aprile 2014, 18:39, modificato 1 volta in totale.
“Se tu hai una mela e io ho una mela e ce le scambiamo, restiamo entrambi con una mela. Ma se tu hai un’idea e io ho un’idea e ce le scambiamo, allora ciascuno di noi ha due idee.” (George Bernard Shaw)
Linux AL-9014 3.11.0-19-generic #33-Ubuntu SMP Tue Mar 11 18:48:34 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Avatar utente
Malco
Prode Principiante
Messaggi: 189
Iscrizione: martedì 13 novembre 2007, 11:52
Località: Roma

Re: [PHP] Corretto utilizzo di ISSET/INCLUDE

Messaggio da Malco »

Sviluppi:

Ho risolto temporaneamente spostando i moduli da includere in una sotto directory, in modo da non renderli accessibili direttamente, passando dunque a:
[code2=php]<?php
if(isset($_GET['page'])){
include('include/'.$_GET['page']);
}else{
include('include/home.php');
}
?>[/code2]

Ora se dalla barra degli indirizzi si clicca su localhost/pagina.php mi torna, giustamente, l'errore NOT FOUND di Apache.
E' possibile effettuare un controllo in cui se un utente prova a effettuare una richiesta del tipo localhost/pagina.php questi venga reindirizzato a localhost/index.php?page=pagina.php?
Grazie ancora :D
“Se tu hai una mela e io ho una mela e ce le scambiamo, restiamo entrambi con una mela. Ma se tu hai un’idea e io ho un’idea e ce le scambiamo, allora ciascuno di noi ha due idee.” (George Bernard Shaw)
Linux AL-9014 3.11.0-19-generic #33-Ubuntu SMP Tue Mar 11 18:48:34 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [PHP] Corretto utilizzo di ISSET/INCLUDE

Messaggio da Zoff »

La pagine le devi richiamare con: http://localhost/index.php?page=pagina.php

Se vuoi puoi fare un redirect automatico metti all'inizio di index.php questo:

Codice: Seleziona tutto

define("HOME",1);
e all'inizio di tutte le altre pagine invece metti:

Codice: Seleziona tutto

if ( !defined("HOME") ){ 
	header('Location: index.php?page='.basename(__FILE__) );
	exit;
}
Il codice però così com'è è insicuro.
Cambia l'include in:

Codice: Seleziona tutto

<?php
if(isset($_GET['page']) && file_exists(basename($_GET['page']))){
	include(basename($_GET['page']));
}else{
	include('home.php');
}
?>
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
Malco
Prode Principiante
Messaggi: 189
Iscrizione: martedì 13 novembre 2007, 11:52
Località: Roma

Re: [PHP] Corretto utilizzo di ISSET/INCLUDE

Messaggio da Malco »

Fantastico!
Risolto alla grande Zoff, ti ringrazio infinitamente, questi "trucchetti" sono stati preziosi come l'oro ;)
“Se tu hai una mela e io ho una mela e ce le scambiamo, restiamo entrambi con una mela. Ma se tu hai un’idea e io ho un’idea e ce le scambiamo, allora ciascuno di noi ha due idee.” (George Bernard Shaw)
Linux AL-9014 3.11.0-19-generic #33-Ubuntu SMP Tue Mar 11 18:48:34 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti