Ver Mensaje Individual
  #7 (permalink)  
Antiguo 09/05/2013, 10:59
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años
Puntos: 320
Respuesta: Problema con sesión

mmm veamos, si el usuario se loguea registras los datos de la session y lo rediriges a otra pagina donde supongo tienes incluido session.php a priori deberia funcionar.

sigues con el problema de que no te loguea?

habria que revisar exaustivamente tu codigo para determinar en que linea falla, sin embargo te hago una sugerencia: cambia la forma de manejar el logueo.

de la forma que lo haces es muy "artesanal", con esto me refiero a que el usuario solo se puede loguear desde una unica pagina no desde cualquiera.

te pongo el codigo de ejemplo que tendria que tener tu session.php (basandome en los que pasaste)

Código PHP:
Ver original
  1. <?php
  2.     session_start();
  3.     $toplinks = '';
  4.     if (isset($_SESSION['id'])) {
  5.    
  6.         //Si ya estas logueado.
  7.         $toplinks = '<span id="textohead">Bienvenido, '.$_SESSION['nick'].'.</span><a href="logout.php"><button id="boto1">Desconectarse</button></a>';
  8.        
  9.     } elseif (isset($_POST['nick'])) {
  10.         //Si te estas logueando ahora
  11.        
  12.         include ("PHP/connect_to_mysql.php");
  13.        
  14.         //Filtro y encripto la clave.
  15.         $password = preg_replace("[^A-Za-z0-9]", "", $_POST['password']);
  16.         $password = md5($password);
  17.        
  18.         $sql = mysql_query("SELECT * FROM members WHERE nick='$nick' AND password='$password' AND activacion='1'");
  19.        
  20.         //Si encontre al usuario.
  21.         if(mysql_num_rows($sql) > 0) {
  22.             //Agarro los datos del usuario en un array.
  23.             $row = mysql_fetch_array($sql);
  24.            
  25.             //Los guardo en la sesion.
  26.             $_SESSION['id'] = $row['id'];
  27.             $_SESSION['nick'] = $row['nick'];
  28.            
  29.             //Preparo el toplink.
  30.             $toplinks = '<span id="textohead">Bienvenido, '.$_SESSION['nick'].'.</span><a href="logout.php"><button id="boto1">Desconectarse</button></a>';
  31.         } else {
  32.            
  33.             //Si no encontre al usuario redirijo a la pagina de login.
  34.             header("location: http://www.vacancesisortides.com/index.php?loginincorrecto=si");
  35.             exit();
  36.         }
  37.     } else {
  38.         //Si no esta logueado ni se esta logueando.
  39.         $toplinks = '<button id="boto1"><a href="registro.php">Registra\'t</a></button><button id="boto1"><a href="login.php">Entra</a></button>';
  40.     }
  41. ?>

en al action de tu formulario de logueo debes poner la pagina que se debe abrir si los datos estan bien, por ejemplo su perfil o lo que sea, no importa a que pagina apuntes, el codigo de session.php se encargara de validar y de lo contrario volvera al index.

como veras cuando redirecciona envia una variable por GET tu podrias tomar esta variable y si esta definida en "si" mostrar un cartelito.

se podria ampliar aun mas el codigo y agregar que si recibe por $_GET una variable que diga logout=si deslogue al usuario, tambien se podria agregar que guarde en la session la ip del visitante y luego verifique que sea la misma ip en cada caso, por si algun malechor digital le robo una cookie que no pueda hacerse pasar por el.

en fin, hay varias cosas interesantes como para agregarle, pero en principio ahi tendria que andar.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios