Link a pagine php

Scusa Eliox, perchè le vedi un pò pericolose?
Te lo chiedo perchè da principiante non riesco a vedere il PERICOLO.

Grazie

Efisio
 
Beh, ma allora il problema è proprio a monte. Tanto vale allora modificare la index così:
PHP:
<?php
$page = isset($_GET['page']) ? trim($_GET['page']) : 'centrale';

switch($page)
{
	case 'centrale':
		require_once('centrale.php');
		break;
	case 'fumetti':
		require_once('fumetti.php');
		break;
	default:
		require_once('error.php');
}
?>
E creare una pagina fumetti.php con dentro questo:
PHP:
<?php
$fumetto = isset($_GET['fumetto']) ? trim($_GET['fumetto']) : '';

switch($fumetto)
{
	case 'zorro':
		require_once('fumetti/zorro.php');
		break;
	default:
		require_once('error.php');
}
?>
Mi sembra la soluzione più ordinata e logica. Ti consiglio di adottare questa soluzione.
In questo modo avrai un URL del tipo: http://www.tuosito.com/index.php?page=fumetti&fumetto=zorro.


Scusa Alessandro se sono insistente, ma non riesco a capire il perchè di un file fumetto.
Cioè, io stavo cercando di creare una cartella (fumetti) in cui inserire un fumetto e una immagine a questa pagina. Come faccio se in questa cartella inserisco 50 fumetti?
 
Scusa Eliox, perchè le vedi un pò pericolose?
Te lo chiedo perchè da principiante non riesco a vedere il PERICOLO.

Grazie

Efisio

perché per queystring passata sotto forma i url ci può passare qualsiasi cosa, le inclusioni dinamiche sono una strada spianata per le XSS
 
Ma allora è meglio che rimetta "insieme" il sito e rinunci ad una gestione "separata" per evitare simili attacchi.
Grazie Eliox per il consiglio
 
oppure potresti ricavare i contenuti di quelle pagine eseguendo una query su un db
 
sai mica indicarmi un articolo in cui viene spiegato come gestire i files di un sito attroverso query e db?

Grazie ancora Eliox
 
Buonasera Alessandro, volevo chiederti come devo procedere con il tuo metodo.
Cioè, modifico la mia index e ci metto il codice che mi hai passato, ma poi come procedo per fare in modo che nella "cartellina fumetti" recupero il fumetto di superman e le foto ad esso correlate.
Inoltre se aumentano le "cartelline", chessò: libri, riviste etc.. devo modificare anche il codice nella index?

Grazie

Efisio
 
Per la decima volta, con il mio metodo non c'è pericolo per le XSS, in quanto per querystring si accetta solo una ristretta cerchia di parametri. Ma che avete contro di me in questa discussione? :D
Tieni conto che quando associ un valore a GET ad una variabile, permetti l'utilizzo di questa variabile nel contesto dell'applicazione, quindi per limitare possibili danni sarebbe megli validare tutto quello che passa per GET prima dell'associazione con la variabile.
 
orribile visu, ma questa volta son d'accordo con alex

non viene passatao un url e lo switch valuta il valore del get
quindi (almeno secondo me) se scrivo

$page=htmlspacialchars($GET['page']);
switch($page){
case:"pinco";
require_once "pagina1.php";
break;
//altri vari case
default:
exit;
break;
}

la variabile $page può contenere anche un js, ma lo swich cade nella parte default, il pericolo dovrebbe aversi se direttamente mettessi direttamente nel get l'url alla pagina
o sbaglio
 
Ultima modifica:
Buongiorno,
scusate la mia insistenza ma qualcuno può indicarmi come inserire il codice che mi ha postato Alessandro?
La mia conoscenza del php è appena cominciata.

Grazie

Efisio
 
efisio, per ogni nuova sezione che crei dovrai aggiungere un case a index.php, quindi creare un file chiamato come la sezione e, prendendo come esempio il codice di fumetti.php, inserirci tutti i sottovalori possibili. Un esempio per la sezione libri. File index.php:
PHP:
<?php
$page = isset($_GET['page']) ? trim($_GET['page']) : 'centrale';

switch($page)
{
    case 'centrale':
        require_once('centrale.php');
        break;
    case 'fumetti':
        require_once('fumetti.php');
        break;
    case 'libri':
        require_once('libri.php');
        break;
    default:
        require_once('error.php');
}
?>
E poi ti serve una pagina libri.php con dentro:
PHP:
<?php
$libro = isset($_GET['libro']) ? trim($_GET['libro']) : '';

switch($libro)
{
    case 'libro1':
        require_once('libri/libro1.php');
        break;
    case 'libro2':
        require_once('libri/libro2.php');
        break;
    default:
        require_once('error.php');
}
?>
Capito, ora? Poi i file dentro la cartella libri conteranno il codice HTML della pagina di ogni libro...
 
dovresti mostrargli anche come creare la querystring che invia il parametro tramite GET, forse è lì il dubbio..
 
Grazie Alessandro,
non puoi immaginare quanto mi sei stato di aiuto.:fonzie:
Efisio
 
Ho dei problemucci. Cioè, ho capito come inserire una nuova pagina nel sito, aggiungendo una sezione allo switch.

La index che ho creato è la seguente:

$page = isset($_GET['page']) ? trim($_GET['page']) :"centrale";
switch($page)
{
case "centrale" :
require_once("centrale.php");
break;
case "arte":
****require_once("arte.php");
break;
default:
require_once("error.php");
}

da notare che ho dovuto sostituire gli apici con i doppi apici altrimenti non riuscivo a vedere niente a video.

La pagina arte, che si trova allo stesso livello della index contiene il seguente codice:

<?php
$arte = isset($_GET['arte']) ? trim($_GET['arte']) : '';

switch($arte)
{
case "arte_astratta":
require_once("arte/arte_astratta.php");
break;
default:
require_once("error.php");
}
?>

in questo caso la pagina arte_astratta.php l'ho messa nella cartella arte. In questo caso non riesco a vedere la pagina desiderata.

La querystring che ho inserito è la seguente:
href="http://localhost:8889/simpatico/index.php?page...&arte=arte_astratta"

C'è qualcuno che può darmi una mano?

Grazie
Efisio
 
Temo che ci sia stato un errore di comprensione :D

L'URL è stato accorciato dal forum, in realtà l'indirizzo comprensivo di querystring è un altro. Guarda a cosa punta realmente l'URL del mio post (lo puoi leggere nella status bar del browser quando ci passi sopra col mouse).
 
Se il parametro passato contiene uno slash (es: fumetto/talefile.xyz) lo slash potrebbe essere la causa del problema.
Già il primo script postato dovrebbe funzionare, usando

$page=urldecode($_GET["page"]);

per leggere il parametro.
 
Ho dei problemucci. Cioè, ho capito come inserire una nuova pagina nel sito, aggiungendo una sezione allo switch.

La index che ho creato è la seguente:

$page = isset($_GET['page']) ? trim($_GET['page']) :"centrale";
switch($page)
{
case "centrale" :
require_once("centrale.php");
break;
case "arte":
****require_once("arte.php");
break;
default:
require_once("error.php");
}

da notare che ho dovuto sostituire gli apici con i doppi apici altrimenti non riuscivo a vedere niente a video.

La pagina arte, che si trova allo stesso livello della index contiene il seguente codice:

<?php
$arte = isset($_GET['arte']) ? trim($_GET['arte']) : '';

switch($arte)
{
case "arte_astratta":
require_once("arte/arte_astratta.php");
break;
default:
require_once("error.php");
}
?>

in questo caso la pagina arte_astratta.php l'ho messa nella cartella arte. In questo caso non riesco a vedere la pagina desiderata.

La querystring che ho inserito è la seguente:
href="http://localhost:8889/simpatico/index.php?page...&arte=arte_astratta"

C'è qualcuno che può darmi una mano?

Grazie
Efisio

Ho modificato laquerystring nel seguente modo: href="http://localhost:8889/simpatico/index.php?page=arte&arte=arte_astratta" ma continuo a non riuscire a vedere niente a video.
Ho anche provato la modifica di isset con urldecode, ma la cosa non è migliorata. Mi sembra di essere in un vicolo cieco dove l'unico cieco sono io. ma dove sbaglio:confused:
 
ciao
oggi la mia ca....a quotidiana, prova a mettere nella pag. index

page = isset($_GET['page']) ? trim($_GET['page']) :"centrale";
switch($page)
{
case "centrale" :
require_once("centrale.php");
break;
case "arte":
****require_once("arte.php?arte=arte_astratta");
break;
default:
require_once("error.php");
}
perchè con la querystringa che fai il get viene letto dalla pag. index, ma non viene trasmesso alla pag arte.php
 

Discussioni simili