Programación Web y Scripting > PHP
Problema muy extraño con COOKIES
th3r0rn:
Tengo un problema con un script, no me crea la cookie, ya lo hice en mi localhost y lo subi a mi servidor y nada, lo pase a varios amigos y les pasa lo mismo. Solo a un amigo dice que si le crea la cookie bien, y no entiendo por que. Lo puso en su localhost el cual es: 200.87.221.49/stuff/sessiones/cookies.php
Muestro mi codigo:
COOKIES.PHP
--- Código: PHP ---<?PHPif (!$_COOKIE["idiomaUser"]){ $pagina="pediridioma.html";}elseif($_COOKIE["idiomaUser"]=="sp"){ $pagina="spanish.html";}else{ $pagina="english.html";}?><html> <head><script language="javascript" type="text/javascript">location.href="<?php echo($pagina); ?>";</script> </head></html> PedirIdioma.html
--- Código: Text ---<html> <head> <title>Pedir Idioma</title> <script language="javascript" type="text/javascript"> function enviarIdioma(idioma){ location.href="grabarCookie.php?idiomaUser="+idioma; } </script> </head> <body> <a href="javascript:enviarIdioma('sp');">Castellano</a> <a href="javascript:enviarIdioma('en');">Ingles</a></body></html> GrabarCookies.php
--- Código: PHP ---<?PHP//Se graba la cookie con una valides de 24 horas.setcookie("idiomaUser",$idiomaUser,time()+86400);?><html> <body> <script language="javascript" type="text/javascript"> location.href="cookies.php"; </script> </body></html> Si lo desean, pueden bajar los archivos ya comprimidos en:
phpmexico.net/sessiones.tar
Espero puedan ayudarme ya que segun todo esta bien en mi codigo :(
Saludos
DriverOp:
Pue mira, no he probado los archivos pero a simple vista veo un problema. En el archivo PedirIdioma.html tienes código JavaScript que invoca a la página grabarCookie.php pasándole por GET una variable, nada malo con esto pero en el archivo grabarCookie.php nunca tomas ese parámetro usando $_GET.
Creo que lo que has querido hacer en grabarCookie.php es:
[php:2c103n2d] setcookie("idiomaUser",$_GET["idiomaUser"],time()+86400); [/php:2c103n2d]
Me parece que has querido programar en PHP como si Register_Globals estuviera en On, mala idea, siempre de debe programar como si estuviera en Off.
th3r0rn:
--- Citar ---Me parece que has querido programar en PHP como si Register_Globals estuviera en On, mala idea, siempre de debe programar como si estuviera en Off.
--- Fin de la cita ---
Hola. gracias por el consejo, pero me podrias decir por que???
Sobre el codigo, deje la direccion ip de mi amigo, con el archivo, ayi puedes ingresar y segun por lo q veo si corre el programa :(
----
EDIT:
HOLA!!! ya agregue el $_GET["idiomaUser"] y si me funcionoo!!
Muchas gracias, me puedes decir por que debo prgoramar con registres globals desactivado??
Muchas gracias
DriverOp:
--- Cita de: "th3r0rn" ---EDIT:
HOLA!!! ya agregue el $_GET["idiomaUser"] y si me funcionoo!!
Muchas gracias, me puedes decir por que debo prgoramar con registres globals desactivado??
Muchas gracias
--- Fin de la cita ---
Register_globals controla la registración automática de variables. Cuando Register_globals está activado (on) las variables superglobales automáticamente se registran como variables de usuario de forma tal que si PHP detecta pase de parámetros GET o POST crea esas variables ahorrándote tener que crearlas tú. Por ejemplo si tienes un script PHP tal como test.php y lo invocas pasándole parámetros tal como http://example.com/test.php?variable=valor PHP creará automáticamente una variable $variable y le asigna el valor "valor". Esto podría ser cómodo para el programador pero implica un agujero de seguridad pues considera este código:
[php:14ut78ds] if ($loggin == true) { echo "Mostrar mensaje secreto";} [/php:14ut78ds]
$loggin al no estar inicializado a ningún valor específico se presta para que un usuario malicioso le ponga un valor invocando el script con parámetros ?loggin=1 (1 evalua true, por lo tanto el if es verdadero).
Por el contrario con register_globals apagado (off) esto no ocurre y tienes que tomar los parámetros GET y POST explícitamente usando las variables superglobales $_GET y $_POST. En el ejemplo anterior con register_globals en off tendrás un aviso de variable no definida aún cuando se invoque el script con parámetros con el mismo nombre.
Cuando se dice que se debe programar como si register_globals estuviera en off se quiere decir que inicialices todas las variables explícitamente y no asumas que PHP las inicializará por ti. ¿Se entiende?.
th3r0rn:
Hola, si ya entendi muchas gracias, solo una duda, el register globals creo que lo tengo en off :
--- Código: Text ---; NOTE: applications relying on this feature will not recieve full; support by the security team. For more information please; see /usr/share/doc/php5-common/README.Debian.security; register_globals = Off O estoy mal? :unsure:
Navegación
[#] Página Siguiente
Ir a la versión completa