PHP - Perdido en Login PHP

 
Vista:
sin imagen de perfil

Perdido en Login PHP

Publicado por andolinibdn (6 intervenciones) el 07/03/2014 13:33:36
Llevo varios días con una práctica que no logro resolver y ya empiezo a estar desesperado :'( .

El ejercicio está distribuido de la siguiente forma:

-index.php (Formulario de ingreso de contraseñas)
-checklogin.php (Los datos del formulario van a parar aquí para procesarlos)
.config.php (las credenciales válidas se almacenan aquí en unas constantes con el hash de las contraseñas).
-error.php (Si la contraseña es incorrecta me envía aquí / sí accedemos directamente a checklogin sin antes pasar por el index.php también me debería de enviar aquí).


Añado el código del checklogin, ahora mismo cuando introduzco los datos desde el formulario éste me manda al checklogin pero aparece la página en blanco, no importa las credenciales si son correctas o incorrectas.


El objetivo del checklogin es el siguiente:

-PASSWORD no coincide ( Enviar directamente a error.php)
-PASSWORD coincide ( Enviar a Intranet.php)
-Si accedo directamente a checklogin (Que me envíe a error.php con un Link de acceso a la 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
65
66
67
68
69
70
71
72
73
74
<?php
 
if (!isset($_SESSION['submit'])) {
 
    header("Location: ./error.php");
 
    exit();
 
}
 
 
session_start();
 
include_once("config.php");
 
 
 
 
$_SESSION['submit']=$_REQUEST['submit'];
 
$_SESSION['id_usuari']=$_REQUEST['usuari'];
 
$_SESSION['clau_access']= ($_REQUEST['contrasena']);
 
 
 
$pass = md5 ($_POST['contrasena']);
 
 
 
if (isset($_POST['usuari'])) {
 
    $nom = $_POST("usuari");
 
    }
 
 
 
 
switch($nom){
 
    case USER1:
 
       if (strcmp($pass , $password1)) == 0 {
 
           header("Location: ./intranet.php");
 
           exit;
 
           }
 
           break;
 
 
 
    case USER2:
 
       if (strcmp($pass , $password2)) == 0 {
 
           header("Location: ./intranet.php");
 
           exit;
 
           }
 
           break;
 
 
           default: header("Location: ./error.php?ERROR_LOGIN");
}
 
?>
 
<?php


No se si habrá algun error de sintaxis o error de declaración de variables.


este es el contenido de config.php:

1
2
3
4
5
6
define('USER1','willy' , TRUE);
 
define('USER2','wonka', TRUE);
 
$password1 = define('PASSWORD1','81dc9bdb52d04dc20036dbd8313ed055', TRUE);
$password2 = define('PASSWORD2','161ebd7d45089b3446ee4e0d86dbcf92', TRUE);


Soy un completo novato en PHP.[/QUOTE]
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 Isai
Val: 93
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Perdido en Login PHP

Publicado por Isai (79 intervenciones) el 07/03/2014 16:34:57
Bueno no revise todo el el cod. pero de entrada la instruccion session_star() debe ir primero.
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
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

Perdido en Login PHP

Publicado por xve (6935 intervenciones) el 07/03/2014 17:45:12
Hola Creo, que lo tiene un poco liado... te pongo como yo lo haria... haber que te parece...

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
<?php
session_start();
include_once("config.php");
 
if (!isset($_SESSION['submit']))
{
    header("Location: ./error.php");
    exit();
}
 
$pass = md5 ($_POST['contrasena']);
 
switch($_POST["usuari"])
{
    case USER1:
       if (strcmp($pass , $password1)) == 0 {
            # No asignaria las variables de session hasta comprobar que es correcto
            $_SESSION['submit']=$_POST['submit'];
            $_SESSION['id_usuari']=$_POST['usuari'];
            $_SESSION['clau_access']=$_POST['contrasena'];
 
            header("Location: ./intranet.php");
            exit;
        }
        break;
 
    case USER2:
        if (strcmp($pass , $password2) == 0)
        {
            # No asignaria las variables de session hasta comprobar que es correcto
            $_SESSION['submit']=$_POST['submit'];
            $_SESSION['id_usuari']=$_POST['usuari'];
            $_SESSION['clau_access']=$_POST['contrasena'];
 
            header("Location: ./intranet.php");
            exit;
        }
        break;
 
    default:
        header("Location: ./error.php?ERROR_LOGIN");
}
 
?>

NOTA:
Esto lo tienes mal:
$nom = $_POST("usuari");
es:
$nom = $_POST["usuari"];

Esto también lo tienes mal:
if (strcmp($pass , $password1)) == 0 {
es:
if (strcmp($pass , $password1) == 0) {

Espero que te sirva... 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
sin imagen de perfil

Perdido en Login PHP

Publicado por andolinibdn (6 intervenciones) el 09/03/2014 12:08:35
Hola compañero, muchas gracias por tu ayuda.
Lamentablemente no me funciona el código, ahora cuando introduzco las credenciales desde el formulario, ya sean correctas o incorrectas, me direcciona siempre a error.php.

Los hash los he comprobado y están correctos, no se si el problema está en este proceso pero la verdad no se como sacarlo...

Te dejo el código actual:

<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
<?php
 
  session_start();
  include_once("config.php");
 
  if (!isset($_SESSION['submit'])) {
  	header("Location: ./error.php");
  	exit();
  	}
 
  	$pass = md5 ($_POST['contrasena']);
 
 
  	switch($_POST["usuari"]) {
 
  		case USER1:
  			if (strcmp( $pass , PASSWORD1 ) == 0) {
 
  			$_SESSION['submit']=$_POST['submit'];
  			$_SESSION['id_usuari']=$_POST['usuari'];
  			$_SESSION['clau_access']=$_POST['contrasena'];
  			header("Location: ./intranet.php");
  	   	exit();
  	   }
  	   break;
 
 
  	   case USER2:
  	   	if (strcmp($pass , PASSWORD2 ) == 0) {
  	   		$_SESSION['submit']=$_POST['submit'];
  	   		$_SESSION['id_usuari']=$_POST['usuari'];
  	   		$_SESSION['clau_access']=$_POST['contrasena'];
  	   		header("Location: ./error.php");
  	   		exit;
  	   	}
  	   		break;
 
  	   	default:
  	   		header("Location: ./error.php?ERROR_LOGIN");
  	   	}
 ?>

Archivo con las constantes:

1
2
3
4
define('USER1','willy' );
define('USER2','wonka');
define('PASSWORD1','81dc9bdb52d04dc20036dbd8313ed055');
define('PASSWORD2','161ebd7d45089b3446ee4e0d86dbcf92');
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
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

Perdido en Login PHP

Publicado por xve (6935 intervenciones) el 09/03/2014 19:21:08
Puede ser que no exista $_SESSION['submit']... yo he probado el código y me funciona perfectamente!!!

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
<?php
session_start();
 
define('USER1','willy' );
define('USER2','wonka');
define('PASSWORD1','4d186321c1a7f0f354b297e8914ab240'); # hola
define('PASSWORD2','2e80a184267270fc8a50f3f9aef3902e'); # hola1
 
$_POST["usuari"]="willy";
$_POST['contrasena']="hola";
$_SESSION['submit']="OK";
 
include_once("config.php");
 
if (!isset($_SESSION['submit'])) {
    header("Location: ./error.php");
    exit();
}
 
$pass = md5 ($_POST['contrasena']);
 
echo PASSWORD1;
echo "<br>".$pass;
 
switch($_POST["usuari"]) {
 
    case USER1:
        if (strcmp( $pass , PASSWORD1 ) == 0) {
            $_SESSION['submit']=$_POST['submit'];
            $_SESSION['id_usuari']=$_POST['usuari'];
            $_SESSION['clau_access']=$_POST['contrasena'];
            header("Location: ./intranet.php");
            exit();
        }
        break;
 
    case USER2:
        if (strcmp($pass , PASSWORD2 ) == 0) {
            $_SESSION['submit']=$_POST['submit'];
            $_SESSION['id_usuari']=$_POST['usuari'];
            $_SESSION['clau_access']=$_POST['contrasena'];
            header("Location: ./error.php");
            exit;
        }
        break;
 
    default:
        header("Location: ./error.php?ERROR_LOGIN");
}
?>
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