Foros del Web » Programando para Internet » PHP »

Problema con Cookies

Estas en el tema de Problema con Cookies en el foro de PHP en Foros del Web. Hola, Programando un formulario de acceso tengo el siguiente problema: Tengo una página de login(index.php): <form action="entrar.php" method="POST" class="miform"> Usuario:<br> <input type="text" name="usuario"><br> Contrase&ntilde;a:<br><input type="password" ...
  #1 (permalink)  
Antiguo 05/07/2011, 05:50
 
Fecha de Ingreso: julio-2011
Mensajes: 16
Antigüedad: 12 años, 9 meses
Puntos: 0
Problema con Cookies

Hola, Programando un formulario de acceso tengo el siguiente problema:
Tengo una página de login(index.php):

<form action="entrar.php" method="POST" class="miform">
Usuario:<br> <input type="text" name="usuario"><br>
Contrase&ntilde;a:<br><input type="password" name="contrasena"><br><br>
<input type="submit" value="Entrar" class="boton">
</form>


Tengo una para validar(entrar.php):

<?php
//conexión con la base de datos.
$conexion=mysql_connect('localhost','root','contra ');
//Selección de la base de datos.
mysql_select_db('adminnefema',$conexion);
//Recibimos lo que ingresó por teclado el usuario y lo asignamos a un variable para un mejor manejo
$nick=$_POST[usuario];
$pass=$_POST[contrasena];
//Buscamos en la tabla si existe un usuario con ese nombre y esa contraseña
$registrado=mysql_query("select usuario,contrasena from usuarios where usuario='$nick' and contrasena='$pass'",$conexion) or die (mysql_error());
//Si existe un usuario con ese nick y esa contraseña le damos una session
if($usuario=mysql_fetch_array($registrado))
{
//Le damos una coockie que se guarda en su computadora que será igual al su nombre de nick.
setcookie("usuario",$usuario['nick'],time()+7776000);
setcookie("contrasena",$usuario['pass'],time()+7776000);
//Le mencionamos al usuario que ha iniciado correctamente.
header ("Location: dentro.php");
//echo 'Has iniciado sesión con éxito.';
}
//Si no existe no existen esos datos en la tabla, le decimos que no son correctos
else
{
echo 'Los datos ingresados no son correctos.';
}
?>


Y finalmente otra que es(dentro.php):


<?php

if(isset($HTTP_COOKIE_VARS["usuario"]) && isset($HTTP_COOKIE_VARS["contrasena"]))

{

echo 'Binvenido';

}

else

{

echo 'Área sólo para usuarios registrados';

}

?>


Pero el sistema de cookies no me funciona, alguien sabría por qué?
  #2 (permalink)  
Antiguo 05/07/2011, 06:07
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Problema con Cookies

"el sistema de cookies no me funciona" no puedes asigarlas o no puedes leerlas?
Comprueba que el while que crea las cookies funcione y que efectivamente se están creando. Utiliza Firebug para analizar las cookies.
Si no las estás creando correctamente, entonces siempre deberías entrar en :

Código PHP:
Ver original
  1. else
  2.  
  3. {
  4.  
  5. echo 'Área sólo para usuarios registrados';
  6.  
  7. }

Salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 05/07/2011, 07:53
 
Fecha de Ingreso: julio-2011
Mensajes: 16
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Problema con Cookies

Ese es mi problema que al no almacenar bien las cookies siempre me da restringido
  #4 (permalink)  
Antiguo 05/07/2011, 07:58
 
Fecha de Ingreso: agosto-2007
Mensajes: 345
Antigüedad: 16 años, 8 meses
Puntos: 21
Respuesta: Problema con Cookies

Comprueba que en entrar.php no haya ninguna salida antes de ejecutar setcookie

http://www.php.net/manual/es/function.setcookie.php
Cita:
If output exists prior to calling this function, setcookie() will fail and return FALSE. If setcookie() successfully runs, it will return TRUE. This does not indicate whether the user accepted the cookie.
__________________
----
http://www.mascodigo.com
  #5 (permalink)  
Antiguo 05/07/2011, 07:59
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Problema con Cookies

En principio lo único que parece incorrecto es:

Código PHP:
Ver original
  1. $nick=$_POST[usuario];
  2. $pass=$_POST[contrasena];
debe ser
Código PHP:
Ver original
  1. $nick=$_POST["usuario"];
  2. $pass=$_POST["contrasena"];

La select no puedo comprobarla, pero evidentemente no entras en el while.
salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #6 (permalink)  
Antiguo 05/07/2011, 08:47
 
Fecha de Ingreso: julio-2011
Mensajes: 16
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Problema con Cookies

Cita:
Iniciado por nx00 Ver Mensaje
Comprueba que en entrar.php no haya ninguna salida antes de ejecutar setcookie

[url]http://www.php.net/manual/es/function.setcookie.php[/url]
Perdón por mi ignorancia pero a que se refiere con salida?
  #7 (permalink)  
Antiguo 05/07/2011, 11:57
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Problema con Cookies

Se refiere a salida por pantalla, que no haya ningún echo o mensaje de error. Eso afecta al funcionamiento de cookies y sesiones.
__________________
Fere libenter homines, id quod volunt, credunt.
  #8 (permalink)  
Antiguo 05/07/2011, 12:54
 
Fecha de Ingreso: julio-2011
Mensajes: 16
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Problema con Cookies

Pero el código es tal cual lo puse, sigo sin poder solucionar mi problema
  #9 (permalink)  
Antiguo 05/07/2011, 13:16
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Problema con Cookies

Por lo pronto
Info
http://www.php.net/manual/en/reserve...es.cookies.php

usa $_COOKIE

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #10 (permalink)  
Antiguo 05/07/2011, 14:34
 
Fecha de Ingreso: julio-2011
Mensajes: 16
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Problema con Cookies

Sigue sin ir :S
  #11 (permalink)  
Antiguo 06/07/2011, 02:12
 
Fecha de Ingreso: julio-2011
Mensajes: 16
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Problema con Cookies

Alguna otra solución? Si queréis preguntar cualquier cosa
  #12 (permalink)  
Antiguo 06/07/2011, 07:56
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Problema con Cookies

dame hasta la tarde que lo reviso con mas tiempo
ahora para mi es "la mañana"

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #13 (permalink)  
Antiguo 06/07/2011, 12:06
 
Fecha de Ingreso: julio-2011
Mensajes: 16
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Problema con Cookies

Sin problemas, gracias a todos, la verdad está muy bien este foro, yo estoy aprendiendo y gracias a foros como estos puedo solucionar todos los problemas. Gracias
  #14 (permalink)  
Antiguo 07/07/2011, 09:19
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Problema con Cookies

skatersamu:

Compará lo que hiciste con el funcionamiento de esto, pero te anticipo, que para hacer un sistema un poco mehjor, te convendria trabajar con sesiones además de agregar cierta seguridad en el filtrado de los campos del form.
Espero que sto te sirva de guía, y recordá qe es solo un ejemplo

acceso.php

Código PHP:
Ver original
  1. <?php
  2. if (isset($_POST['usuario'])){
  3.  
  4. $contrasena  = $_POST['contrasena'];
  5. $usuario = $_POST['usuario'];
  6. $sql_login = "xxxxx";
  7. $sql_password = "xxxx";
  8. $sql_base = "xxxxxxx";
  9.  
  10. $conectar_BD = mysql_connect($sql_hostname,$sql_login,$sql_password);
  11. $seleccion_BD = mysql_select_db($sql_base,$conectar_BD);
  12. $consulta = "SELECT * FROM usuarios WHERE password='$contrasena' AND usuario='$usuario' LIMIT 1";
  13. $respuesta = mysql_query($consulta);
  14. $res = mysql_num_rows($respuesta);
  15.  
  16. if ($res == 0){
  17. headers();
  18. echo "<div>Clave ó usuario inválidos</div>";}
  19. else{
  20. setcookie("usuario",$usuario,time()+7776000);
  21. headers();
  22. echo "<a href='pagina2.php'>ir a página 2</a>\n";
  23. mysql_free_result($respuesta);
  24. }
  25.  
  26. }else {
  27. headers();
  28. ?>
  29. <div>
  30. <form action="acceso.php" method="POST" class="miform">
  31. Usuario:<br> <input type="text" name="usuario"><br />
  32. Contrase&ntilde;a:<br><input type="password" name="contrasena"><br /><br />
  33. <input type="submit" value="Entrar" class="boton">
  34. </form>
  35. </div>
  36. <?php
  37. }
  38. ?>
  39. </body>
  40. </html>
  41. <?php
  42. function headers(){
  43. echo<<< HEADERS
  44. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  45. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  46. <html xmlns="http://www.w3.org/1999/xhtml">
  47. <head>
  48. <title>titulo</title>
  49. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  50. </head>
  51. <body>
  52. HEADERS;
  53. }
  54. ?>

pagina2.php

Código PHP:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <title>titulo</title>
  6. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  7. </head>
  8. <body>
  9. <p>
  10. <?php
  11. if(isset($_COOKIE["usuario"])){
  12. echo 'Binvenido';
  13. }else{
  14. echo 'Área sólo para usuarios registrados';
  15. }
  16. ?>
  17. </p>
  18. </body>
  19. </html>

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #15 (permalink)  
Antiguo 09/07/2011, 05:18
 
Fecha de Ingreso: julio-2011
Mensajes: 16
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Problema con Cookies

Gracias emprear, ya he solucionado el problema, muchas gracias a todos por vuestra ayuda !
  #16 (permalink)  
Antiguo 09/07/2011, 06:21
 
Fecha de Ingreso: julio-2011
Mensajes: 16
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Problema con Cookies

Otra pregunta, para cerrar la sesión?
  #17 (permalink)  
Antiguo 09/07/2011, 17:36
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Problema con Cookies

Puede haber alguna diferencia segun la versión de php.

Te recomiendo leas
http://www.cristalab.com/tutoriales/...5.3.5-c96438l/

En tu caso tambien deberias eleiminar la cookie usuario, basta con escribirla de vuelta con una valor de tiempo negativo, es decir en el pasado.

setcookie("usuario",$usuario,time()-3600);


Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Etiquetas: cookies
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:46.