Foros del Web » Programando para Internet » PHP »

Problema con Cookie que no se crea al iniciar sesion

Estas en el tema de Problema con Cookie que no se crea al iniciar sesion en el foro de PHP en Foros del Web. Tengo un login sencillo el cual hice a mi manera y con el que tengo problemas para trabajar. Les dejo todo el código del login ...
  #1 (permalink)  
Antiguo 10/06/2011, 11:03
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 15 años
Puntos: 3
Problema con Cookie que no se crea al iniciar sesion

Tengo un login sencillo el cual hice a mi manera y con el que tengo problemas para trabajar.

Les dejo todo el código del login que obvio esta horrible.

Código PHP:
Ver original
  1. <?php
  2.  
  3. if(isset($_POST["cerrarsesion"])){
  4.     echo "cerrar sesion";
  5.     //aqui iria la funcionalidad del login 
  6.         setcookie("EMail1", "", time()+604800); //enviamos las cookies al nacegador [expiraran dentro de una semana]           
  7.         setcookie("CL_id1", 0, time()+604800);
  8.         setcookie("Carrito1", 0, time()+604800);
  9.         $opc="";
  10.         $ct_id=0;
  11.  
  12. ?>
  13. <form action="index.php" name="login" id="login" method="post">
  14.           <div id="labels">
  15.             <div id="lbl_user"><label>E-Mail</label></div>
  16.             <div id="lbl_pass"><label>Password</label></div>
  17.           </div>
  18.          
  19.           <div id="inputs">
  20.             <div id="inp_user"><input name="email" id="email" type="text" maxlength="30" value="E-Mail" /></div>
  21.             <div id="inp_pass"><input name="contraseña" id="contraseña" type="password" maxlength="30" /></div>
  22.             <div id="inp_enviar"><input type="submit" name="btnlogin" id="btnlogin" value="Enviar"/></div>
  23.            
  24.           </div>
  25.          
  26.           <div style="clear:both;"></div>
  27.           <div><a href="index.php?opc=recordarpass">Recordar Contrase&ntilde;a?</a></div>          
  28.             <div>No se ha registrado a&uacute;n?<br /> <a href="index.php?opc=registro">Registrarse</a></div>
  29.           <div id="inp_r"><label id="r" class="res"></label></div>
  30.         </form>
  31. <?php }
  32. else
  33. if(isset($_POST["btnlogin"])){ 
  34.     //aqui iria la funcionalidad del login
  35.     echo "login";
  36.     $Q=Login($_POST["email"],$_POST["contraseña"]);
  37.    
  38.     if(mysql_num_rows($Q)>0)
  39.     {              
  40.         //echo $_POST["email"]."=>".$_POST["contraseña"];
  41.        
  42.         $row=mysql_fetch_array($Q);
  43.         //echo $row["cl_id"]."=>".$row["cr_id"];
  44.         setcookie("EMail1", $_POST["email"], time()+604800); //enviamos las cookies al nacegador [expiraran dentro de una semana]          
  45.         setcookie("CL_id1", $row["cl_id"], time()+604800);
  46.         setcookie("Carrito1", $row["cr_id"], time()+604800);
  47.         if(is_integer($_SESSION["opc"]) && $_SESSION["opc"]>0)
  48.             $ct_id=$_SESSION["opc"];
  49.         else if($_SESSION["opc"]=="micuenta" || $_SESSION["opc"]== "quienessomos" || $_SESSION["opc"]== "contactanos" || $_SESSION["opc"]== "tienda" || $_SESSION["opc"]== "dudas" || $_SESSION["opc"]== "micuenta")
  50.             $opc=$_SESSION["opc"];
  51.             else {$opc=""; $ct_id=0;}                  
  52.     }
  53.     else $opc="errorlogin";
  54.     //si se pudo logear, hace $opc="micuenta"
  55.     //si no se pudo logear, muestra mensaje que no se pudo logear
  56. }
  57. else
  58. if(!isset($_COOKIE["EMail1"]) || $_COOKIE["EMail1"]=="") { ?>
  59. <form action="index.php" name="login" id="login" method="post">
  60.           <div id="labels">
  61.             <div id="lbl_user"><label>E-Mail</label></div>
  62.             <div id="lbl_pass"><label>Password</label></div>
  63.           </div>
  64.          
  65.           <div id="inputs">
  66.             <div id="inp_user"><input name="email" id="email" type="text" maxlength="30" value="E-Mail" /></div>
  67.             <div id="inp_pass"><input name="contraseña" id="contraseña" type="password" maxlength="30" /></div>
  68.             <div id="inp_enviar"><input type="submit" name="btnlogin" id="btnlogin" value="Enviar"/></div>
  69.            
  70.           </div>
  71.          
  72.           <div style="clear:both;"></div>
  73.           <div><a href="index.php?opc=recordarpass">Recordar Contrase&ntilde;a?</a></div>          
  74.             <div>No se ha registrado a&uacute;n?<br /> <a href="index.php?opc=registro">Registrarse</a></div>
  75.           <div id="inp_r"><label id="r" class="res"></label></div>
  76.         </form>
  77.     <?php
  78.     }else
  79.     {
  80.         echo "Bienvenido ";
  81.             echo '
  82.             <form name="login" id="login" action="index.php" method="post">
  83.                 <input name="cerrarsesion" id="cerrarsesion" type="submit" value="Cerrar Sesi&oacute;n" />
  84.             </form>
  85.             ';
  86.     }
  87. if(isset($_COOKIE["EMail1"]) && $_COOKIE["EMail1"]!=""){
  88. echo "Bienvenido ". $_COOKIE["EMail1"];
  89.             echo '
  90.             <form name="login" id="login" action="index.php" method="post">
  91.                 <input name="cerrarsesion" id="cerrarsesion" type="submit" value="Cerrar Sesi&oacute;n" />
  92.             </form>
  93.             ';
  94.             }
  95.   ?>

Los dos problemas actuales son que cuando le doy clic al boton de login, me recarga la pagina pero no me crea la cookie sino hasta que vuelvo a recargar la pagina. Luego, si me deslogueo me muestra el form de login pero tambien la parte de logeado y tambien se quita refrescando, de hecho lo mas malo o no se que tanto es que si refrescan la pagina te dice que se van a enviar datos y no se que y no se cuando, si hubiera una forma de evitar eso pues creo es molesto para los usuarios (aunque es raro el que le da en refrescar, a menos que sea un usuario de nivel casi medio o superior).

Gracias y disculpen la molestia.
  #2 (permalink)  
Antiguo 10/06/2011, 11:22
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Problema con Cookie que no se crea al iniciar sesion

No se ni por donde empezar a enumerar los fallos:
  1. Para trabajar con sesiones tienes que poner la función session_start() al inicio del script
  2. No puedes enviar una cookie después de haber enviado datos, debe utilizarse setcookie antes de cualquier salida.
  3. Envías dos veces las mismas cookies, no deberías.

Por eso creo que deberías replantearte un poco el script, incluso dividirlo en varios y además leer un poco más sobre sesiones: http://www.forosdelweb.com/wiki/PHP#Sesiones
  #3 (permalink)  
Antiguo 10/06/2011, 11:23
Avatar de hector2c  
Fecha de Ingreso: noviembre-2007
Ubicación: Perú - Tacna
Mensajes: 979
Antigüedad: 16 años, 4 meses
Puntos: 25
Pregunta Respuesta: Problema con Cookie que no se crea al iniciar sesion

no haZ intentado usar sessiones???

Código PHP:
session_start();
$_SESSION['la'] = "hola;
session_destroy(); 
__________________
blog: hector2c.wordpress.com
email: [email protected]
  #4 (permalink)  
Antiguo 10/06/2011, 11:35
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Problema con Cookie que no se crea al iniciar sesion

Vaya fallo. Me he confundido con las sesiones

La primera cosa de la lista olvídate (sólo se usa con sesiones) y del link.

Las otras dos si son ciertas. También podrías usar sesiones en vez de cookies, pero eso depende de lo que necesites hacer.
  #5 (permalink)  
Antiguo 10/06/2011, 12:46
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 15 años
Puntos: 3
Respuesta: Problema con Cookie que no se crea al iniciar sesion

Pues puede ser una variable de sesion aunque no se si tambien se les puede indicar un tiempo de vida, en si solo uso cookies para guardar el nombre del usuario, su id (para poder agregar articulos a su carrito de compras) y el carrito que le corresponde (cr_id es una campo de la tabla carrito que a su vez tiene su tabla detalle carrito donde se guarda el id del articulo y el precio, de forma que no se pierde esa informacion aunque deje de entrar en la pagina, tambien cuenta con su sesion de carrito de compras donde guardo los mismos datos y que es cuando no esta logeado y empieza a meter en el carrito, en si todo eso ya lo tengo pero me falla este asunto.

Si uds ven conveniente que use variables de sesion en vez de cookies lo hago, uds saben mas que yo y seguro su opcion es mejor que lo que hago ahorita.
  #6 (permalink)  
Antiguo 14/06/2011, 21:37
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 15 años
Puntos: 3
Respuesta: Problema con Cookie que no se crea al iniciar sesion

Pues cambie las cookies por variables de sesion, aunque ese no era mi problema, sino que en un if determinaba si crear o no las variables ya sean de sesion o cookies y como le tenia que si existian las volviera a crear, por eso no funcionaba (a menos que ya existieran pero la primera vez que un usuario se logea en la pagina si funcionaba pero no es lo correcto), correjido eso pude seguir trabajando aunque deje un poco pendiente la pagina por que tambien estoy haciendo una aplicacion de escritorio (que usa la misma base de datos).

Gracias y si tengo mas dudas o problemas, abro otro tema.

Etiquetas: cookie, crea
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 05:11.