PHP - Problema con login y sesiones

   
Vista:

Problema con login y sesiones

Publicado por Unexes (124 intervenciones) el 02/10/2013 21:27:30
hola a tod@s.

Vereis tengo un problema, con el fin de aprender segui un tutorial sobre PHP y Mysql y parece ser que ese tutorial es algo antiguo y el código que viene en el da algunos problemas con las nuevas versiones de PHP, de ese tutorial saque unas páginas para hacer login con sesiones y me dio varios avisos de error, así que sustitui las lineas que me daban error por lo que yo crei que debian de ser las correctas y los avisos de error desaparecierón, pero no me funciona, necesito vuestra ayuda para solucionarlo os pongo el código de las 3 páginas porque son muy cortas.
En la página index.php cuando coloco el login correcto no pasa a la página siguiente, y cuando pongo el incorrecto se me recarga la página index.php, pero no me dice que he puesto el login incorrectamente.
Espero me podais ayudar, supongo que deben haber errores en las 3 páginas, Gracias a tod@s.

Index.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
session_start();
 
if (isset($userid) && isset ($password))
{
  // Si el usuario ha intentado hacer log in
 
  $db_conn = mysql_connect("localhost", "nombreusuario", "contraseña");
  mysql_select_db("nombrebasedatos", $db_conn);
  $query = "select * from auth "
           ."where name='$userid' "
           ." and pass=password('$password')";
  $result = mysql_query($query, $db_conn);
  if (mysql_num_rows($result) >0 )
  {
    // si están en la base de datos registra la id de usuario
    $valid_user = $userid;
    //session_register("valid_user"); // ESTE ERA EL ORIGINAL Y COMO ME DABA ERROR LO SUSTITUI POR EL SIGUIENTE
	$_SESSION['valid_user'];
  }
}
 
?>
 
<html>
<body>
<h1>Página Inicio</h1>
<?php
 
  //if (session_is_registered("valid_user")) ESTE ERA EL ORIGINAL Y COMO ME DABA ERROR LO SUSTITUI POR EL SIGUIENTE
  if (isset($_SESSION['valid_user']))
  {
    echo "Ahora estás logged in como: $valid_user <br>";
    echo "<a href=\"logout.php\">Log out</a><br>";
  }
  else
  {
    if (isset($userid))
    {
      // si han intentado hacer login y ha fallado
      echo "No has podido hacer login";
    }
    else
    {
      // si no han intentado hacer login  y no han hecho logged out
      echo "No has hecho logged in.<br>";
    }
 
    // provee el formulario para hacer  log in
    echo "<form method=post action=\"index.php\">";
    echo "<table>";
    echo "<tr><td>Userid:</td>";
    echo "<td><input type=text name=userid></td></tr>";
    echo "<tr><td>Contraseña:</td>";
    echo "<td><input type=password name=password></td></tr>";
    echo "<tr><td colspan=2 align=center>";
    echo "<input type=submit value=\"Log in\"></td></tr>";
    echo "</table></form>";
  }
?>
<br>
<a href="members_only.php">Sección de Miembros</a>
</body>
</html>
Logout.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
  session_start();
 
  $old_user = (isset($valid_user));  // almacenado para comprobar si ellos estuvieron logged in
  //$result = session_unregister("valid_user");
 
  //$SESSION['valid_user']='';
  (isset($_SESSION['valid_user']));
  session_destroy();
?>
<html>
<body>
<h1>Log out</h1>
<?php
  if (!empty($old_user))
  {
    if ($result)
    {
      // si estuvieron logged in y no están logged out
      echo "Logged out.<br>";
    }
    else
    {
     // Estaban logged in y no pueden  logged out
      echo "No se ha podido hacer logged out.<br>";
    }
  }
  else
  {
    // si ellos no estaban logged in pero llegan a esta página de algún modo
    echo "No estás logged in, y por tanto no puedes hacer logged out.<br>";
  }
?>
<a href="index.php">Volver a la página principal</a>
</body>
</html>
members_only.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
  session_start();
 
  echo "<h1>Sólo Miembros</h1>";
 
  // comprobar variables de sesión
 
  //if (session_is_registered("valid_user"))
  if (isset($_SESSION['valid_user']))
  {
    echo "<p>Estás logged in como $valid_user.</p>";
    echo "<p>El contenido sólo para miembros va aquí</p>";
  }
  else
  {
    echo "<p>No estás logged in.</p>";
    echo "<p>Sólo los miembros logueados pueden ver esta página.</p>";
  }
 
  echo "<a href=\"index.php\">Volver a la página principal</a>";
?>
Gracias a tod@s
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Problema con login y sesiones

Publicado por xve (5515 intervenciones) el 03/10/2013 07:06:23
Hola Unexes, no puedes coger los valores que vienen del formulario directamente con $userid tienes que cogerlo con $_POST["userid"]

Si utilizas directamente $userid, para el php es una variable no definida.

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar