2011-10-14 3 views
5

Ciao Sto scrivendo uno script di pagina profilo, in questo script controllo il valore di una variabile $ _GET in entrata e convalido che è un numero intero, quindi convalido questo valore con un valore $ _SESSION per confermare che possono accedere solo ai propri account. Il codice è simile al seguente:

// validate $_GET field 
if(isset($_GET['identity']) && filter_var($_GET['identity'], FILTER_VALIDATE_INT, array('min_range' => 1))) { 


if(isset($_SESSION['user_identity']) && ((int)$_SESSION['user_identity'] === (int)$_GET['identity'])) { // if session exists and is === $_GET['identity'] 
// Proceed with code 

Questo funziona bene per esempio se cerco di trasmettere '0', '2-2', 'abc' o nessun valore come il valore $ _GET la query non riesce e reindirizza in modo corretto li alla home page.

Quello che ho provato a fare è stato modificare il mio file .htaccess per mappare gli URL a 'profile/1' solo per riordinarlo.

RewriteRule ^profile$ profile.php 
RewriteRule ^profile/([0-9]+)$ profile.php?identity=$1 [NC,L] 

Quello che ho trovato oggi è che la pagina non reindirizza più usando quei validi parametri di $ _GET sopra. Cerca solo di trovare 'profile/abc.

Qualcuno sa perché?

risposta

10

Io uso questa e funziona per me:

RewriteEngine On 
RewriteBase/
RewriteRule ^profile$ profile.php 
RewriteRule ^profile/([a-z0-9\-]+)$ profile.php?identity=$1 [NC,L,QSA] 

Ora, come sei arrivato profile/abc? se si tenta di passare le lettere nella regola, non funzionerà poiché si specificano solo i numeri ([0-9]+). Se si desidera passare le lettere è necessario utilizzare:

RewriteRule ^profile/([a-z0-9\-]+)/?$ profile.php?identity=$1 [NC,L,QSA] 
+0

Grazie, proverò le regole. Non ne ho idea, deve essere qualcosa a che fare con le mie regole .htacces perché le dichiarazioni php escludono esplicitamente tutto ciò che non è === un intero e passando $ _GET negli URL smascherati lancia tutto il resto. – Jonnny

+0

ok fammi sapere se hai bisogno di ulteriore aiuto –

+0

Ho appena provato, ho ancora lo stesso risultato. Che strano, forse è qualcosa di strano nel mio sistema. Apprezzo il tuo aiuto anche se – Jonnny