2011-10-14 22 views
5

Hola Estoy escribiendo un script de página de perfil, en este script verifico el valor de una variable $ _GET entrante y valido que es un entero, luego valido este valor contra un valor de $ _SESSION para confirmar que solo pueden acceder a sus propias cuentas. El código es el siguiente:

// 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 

Esto funciona bien, por ejemplo, si trato de pasar a '0', '2-2', 'abc' o ningún valor como el valor de $ _GET la consulta falla y vuelve a dirigir correctamente ellos a la página de inicio.

Lo que intenté hacer fue modificar mi archivo .htaccess para asignar las URL a 'perfil/1' solo para ponerlas en orden.

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

Lo que encontré ahora es que la página no redirige más usando esos parámetros no válidos $ _GET anteriormente. Simplemente trata de encontrar 'profile/abc.

¿Alguien sabe por qué?

Respuesta

10

utilizo este y funciona para mí:

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

Ahora, ¿cómo has profile/abc? Si intentas pasar letras en la regla, no funcionará, ya que solo especificas los números ([0-9]+). Si desea pasar cartas necesitará usar:

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

Gracias, voy a probar sus reglas. No tengo ni idea, debe ser algo relacionado con mis reglas .htacces porque las declaraciones php explícitamente descartan cualquier cosa que no sea === un entero y al pasar el $ _GET en las urls desenmascaradas arroja todo lo demás. – Jonnny

+0

bien, avíseme si necesita ayuda adicional –

+0

Acabo de intentarlo, todavía obtengo el mismo resultado. Qué extraño, tal vez es una peculiaridad en mi sistema. Apreciar tu ayuda, aunque – Jonnny