Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/07/2011, 01:04
luisgzafra
 
Fecha de Ingreso: noviembre-2010
Mensajes: 1.242
Antigüedad: 14 años, 3 meses
Puntos: 73
problema al loguear

Con el siguiente código, consigo loguear al usuario correctamente, una vez logueado el sistema dice Bienvenido [nick]. Pero al recargas la página, ya pierde la sesión (creo). Recargo y vuelve a sacarme el formulario para loguear y las variables de sesión están vacias. ¿Que puede pasar?

El código es:

Código PHP:
Ver original
  1. <?php
  2.      
  3. $db_host = 'localhost';
  4. $db_user = '**********';
  5. $db_pass = '*********';
  6. $db_name = '********';
  7.  
  8. // ACCESO VIA COOKIE
  9. if (isset($_COOKIE['id_extreme']))
  10. {
  11.    
  12.     $cookie = htmlentities(trim($_COOKIE['id_extreme']));
  13.     $cookie = explode("%", $cookie);
  14.    
  15.     $cookie_user = $cookie[0];
  16.     $cookie_id = $cookie[1];
  17.     $cookie_ip = $cookie[2];
  18.    
  19.     if ($HTTP_X_FORWARDED_FOR == "")
  20.     {
  21.         $ip = getenv(REMOTE_ADDR);
  22.     }
  23.     else
  24.     {
  25.         $ip = getenv(HTTP_X_FORWARDED_FOR);
  26.     }
  27.    
  28.     if ($cookie_ip == $ip)
  29.     {
  30.         $db_link = mysql_connect($db_host, $db_user, $db_pass);
  31.         mysql_select_db($db_name, $db_link) or die("Error: No se puede seleccionar la base de datos");
  32.        
  33.         $sql = sprintf("SELECT * FROM usuarios WHERE id_extreme='%s' AND username='%s'",
  34.                             mysql_real_escape_string($cookie_id), mysql_real_escape_string($cookie_user));
  35.         $db_query = mysql_query($sql, $db_link) or die("Error: " . mysql_error());
  36.        
  37.         $row = mysql_fetch_array($db_query);
  38.         if (isset($row['username']))
  39.         {
  40.         $_SESSION["session_username"] = $row['username'];
  41.         $_SESSION["session_logeado"] = "SI";
  42.         }
  43.        
  44.         mysql_close($db_link);
  45.     }
  46.    
  47. }
  48. if ($_GET["action"] == 'entrar') {
  49.  
  50.  
  51. function error($e){
  52. echo $e';
  53. }
  54.  
  55. // Conectar a la base de datos
  56. $db_link = mysql_connect($db_host, $db_user, $db_pass);
  57. mysql_select_db($db_name, $db_link) or die("Error: " . mysql_error());
  58.  
  59. if ($_POST['username'])
  60. {
  61.    
  62.     //Comprobacion del envio del nombre de usuario y password
  63.     $username = htmlentities(trim($_POST['username']));
  64.     $password = md5($_POST['password']);
  65.    
  66.     if ($password == NULL)
  67.     {
  68.         error("No a introducido una contrasenia");
  69.        
  70.     }
  71.     else
  72.     {
  73.         $sql = sprintf("SELECT username,password FROM usuarios WHERE username='%s'", mysql_real_escape_string($username));
  74.         $db_query = mysql_query($sql, $db_link) or die("Error: " . mysql_error());
  75.         $data = mysql_fetch_array($db_query);
  76.        
  77.         if ($data['password'] != $password)
  78.         {
  79.             error("Email o password incorrectos");
  80.            
  81.         }
  82.         else
  83.         {
  84.             $sql = sprintf("SELECT username,password FROM usuarios WHERE username='%s'", mysql_real_escape_string($username));
  85.             $db_query = mysql_query($sql, $db_link) or die("Error: " . mysql_error());
  86.             $row = mysql_fetch_array($db_query);
  87.            
  88.             $username2 = $row['username'];
  89.             $_SESSION["session_username"] = $row['username'];
  90.             $_SESSION["session_logeado"] = "SI";
  91.  
  92.  
  93.             if ($_POST['recordar'])
  94.             {
  95.                 if ($HTTP_X_FORWARDED_FOR == "")
  96.                 {
  97.                     $ip = getenv(REMOTE_ADDR);
  98.                 } else {
  99.                     $ip = getenv(HTTP_X_FORWARDED_FOR);
  100.                 }
  101.                
  102.                 $id_extreme = md5(uniqid(rand(), true));
  103.                 $id_extreme2 = $username2."%".$id_extreme."%".$ip;
  104.                 setcookie('id_extreme', $id_extreme2, time()+7776000, '/');
  105.                
  106.                 $sql = sprintf("UPDATE usuarios SET id_extreme='%s' WHERE username='%s'",
  107.                                     mysql_real_escape_string($id_extreme), mysql_real_escape_string($username2));
  108.                 $query = mysql_query($sql, $db_link) or die("Error: " . mysql_error());
  109.             }
  110.  
  111.         echo "";
  112.         }
  113.     }
  114.    
  115. }
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123. }
  124. ?></p>
  125. <?php
  126. if ($_SESSION["session_logeado"] == "SI") {
  127. ?>
  128.   Bienvenido <?php echo $_SESSION['session_username']; ?>
  129.       <?php } else { ?>
  130.           <table width="69%" border="0" style="margin-bottom: 16px">
  131.         <form method="post" action="login.php">
  132.           <tr>
  133.             <td width="6%" height="40"><p><img src="<?=$statics?>u2.png" width="32" height="32" /></p></td>
  134.             <td width="35%"><input name="username"   type="text" id="username"  placeholder="Username/nick" size="100" /></td>
  135.             <td width="7%"><img src="<?=$statics?>u1.png" width="32" height="32" /></td>
  136.             <td width="39%"><input name="password"   type="password" id="password"  placeholder="Password" size="100" /></td>
  137.             <td width="13%"><p>
  138.               <input type="button" value="Entrar" />
  139.             </p></td>
  140.           </tr>
  141.           <tr>
  142.             <td height="21">&nbsp;</td>
  143.             <td height="21" colspan="2"><h4>
  144.                 <input type="checkbox" name="recordar" />
  145.               Recordarme</h4></td>
  146.             <td height="21" colspan="2"><a href="gg">Perdí mi contraseña</a> | <a href="<?=$url?>signup">Registrate</a></td>
  147.           </tr>
  148.         </form>
  149.       </table>
  150.       <?php } ?>


Espero que puedan ayudarme, no encuentro el error

Saludos!
__________________
:)