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é?
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
bien, avíseme si necesita ayuda adicional –
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