PHP - Problema con login y sesiones

 
Vista:
sin imagen de perfil
Val: 6
Ha aumentado su posición en 23 puestos en PHP (en relación al último mes)
Gráfica de PHP

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
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Problema con login y sesiones

Publicado por xve (6935 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