Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/06/2011, 11:03
LOD_Fredy
 
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.