PHP - Funciona login en local pero no en servidor

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

Funciona login en local pero no en servidor

Publicado por MMM (12 intervenciones) el 12/02/2019 14:25:16
Mi problema es que mi pagina del login me accede perfectamente en localhost, pero al subirlo al servidor se queda trabado en control.php (es el que comprueba con la base de datos y si esta correcto nos lleva a la siguiente url).

Subo las partes:

admin.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
<?php
?>
<head>
    <title>Autentificaci�n PHP</title>
	<link rel="stylesheet" type="text/css" href="<?=DIR_WEB?>css/stylee.css">
 
</head>
<body>
<h1 style="padding:30px";>Autentificaci&oacute;n PHP</h1>
<form action="<?=DIR_WEB?>admin/control.html" method="POST">
    <table align="center" width="225" cellspacing="2" cellpadding="2" border="0">
        <tr>
            <td colspan="2" align="center" bgcolor=#cccccc>Introduce tu clave de acceso
            </td>
        </tr>
        <tr>
            <td align="right">USER:</td>
            <td><label>
                    <input type="Text" name="usuario" size="8" maxlength="50" required>
                </label></td>
        </tr>
        <tr>
            <td align="right">PASSWD:</td>
            <td><label>
                    <input type="password" name="contrasena" size="8" maxlength="50" required>
                </label></td>
        </tr>
        <tr>
            <td colspan="2" align="center"><input type="Submit" value="ENTRAR"></td>
        </tr>
    </table>
</form>
</body>


Control.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
75
76
<?php
include_once (DIR_FIS_CLASES . 'acbd.inc.php'); //accede a la conexion
include '../../ctes.php';  // Son donde estan definidos los controles DIR
 
ini_set("session.use_only_cookies","1");
ini_set("session.use_trans_sid","0");
 
    $conexion = conexion();
 
 
    /* Comprueba la conexión */
    if (mysqli_connect_errno()) {
      printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}
 
    $usu = $_POST['usuario'];
    $password = $_POST['contrasena'];
 
//creamos 2 consultas, una para si el es el admin y otra para si es un usuario normal.
    $result = mysqli_query($conexion, "SELECT usuario FROM adminsss WHERE usuario = '$usu' and contrasenia = '$password' and (permisos ='control' or permisos ='admin')");
if ($result === false) {
    die('Error1 SQL: ' . mysqli_error($conexion));}
 
    $result2 = mysqli_query($conexion, "SELECT usuario FROM admins WHERE usuario = '$usu' and contrasenia = '$password' and permisos ='usuario'");
if ($result2 === false) {
    die('Error2 SQL: ' . mysqli_error($conexion));}
 
 
    $row = mysqli_fetch_array($result,MYSQLI_ASSOC);
    $row2 = mysqli_fetch_array($result2, MYSQLI_ASSOC);
 
 
    $count = mysqli_num_rows($result);
    $count2 = mysqli_num_rows($result2);
 
echo $count;
echo $count2;
//Vemos si el usuario y contraseña son correctos
//Usuario admin (para crear otras cuentas)
if ($count == 1) {
 
    //asigno un nombre a la sesi�n para poder guardar diferentes datos
    session_name("loginUsuario");
    // inicio la sesi�n
    session_start();
    //cambiamos la duraci�n a la cookie de la sesi�n
    //session_set_cookie_params(0, "/", $HTTP_SERVER_VARS["HTTP_HOST"], 0);  ESTA OBSOLETA
    session_set_cookie_params(0, "/", $_SERVER["HTTP_HOST"], 0);
 
    //defino la sesi�n que demuestra que el usuario est� autorizado
    $_SESSION["autentificado"] = "SI";
    //defino la fecha y hora de inicio de sesi�n en formato aaaa-mm-dd hh:mm:ss
    $_SESSION["ultimoAcceso"] = date("Y-n-j H:i:s");
    header("Location: " . DIR_WEB . "admin/aplicacionadmin.html");
 
//Usuario normal
}elseif ($count2 == 1) {
 
    //asigno un nombre a la sesi�n para poder guardar diferentes datos
    session_name("loginUsuario");
    // inicio la sesi�n
    session_start();
    //cambiamos la duraci�n a la cookie de la sesi�n
    //session_set_cookie_params(0, "/", $HTTP_SERVER_VARS["HTTP_HOST"], 0);  ESTA OBSOLETA
    session_set_cookie_params(0, "/", $_SERVER["HTTP_HOST"], 0);
 
    //defino la sesi�n que demuestra que el usuario est� autorizado
    $_SESSION["autentificado"] = "SI";
    //defino la fecha y hora de inicio de sesi�n en formato aaaa-mm-dd hh:mm:ss
    $_SESSION["ultimoAcceso"] = date("Y-n-j H:i:s");
    header("Location: " . DIR_WEB . "admin/aplicacion.html");
 
}else {
    header("Location: ".DIR_WEB."admin.html?errorusuario=si");
}



Mi problema es que al acceder con usuario y contraseña, se queda bloqeado en control.php, es decir, solo me muestra que 'echo $count' es 1 y nada más, y debería de acceder por if ($count == 1) y acabar llevandome a "admin/aplicacionadmin.html".
Lo que no entiendo es por que en localhost si pasa correctamente control.php y me acaba llevando a "admin/aplicacionadmin.html", y al probarlo en el servidor se queda estancado en control.php.
Y lo mismo me pasa si introduzco mal los datos de usuario o pass, en vez de llevarme de vuelta a admin.php, se queda también pillado en control.php

Soy un poco novato asique no me castigueis demasiado :D
Gracias.
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 joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Funciona login en local pero no en servidor

Publicado por joel (1269 intervenciones) el 12/02/2019 18:20:07
Si $count te da 1 entiendo que la conexion con la base de datos y la consulta funcionana correctamente.

A simple vista, veo que session_start(); esta mal definido, ya que tiene que ir al inicio de la pagina, antes que ninguna otra linea si vas a utilizar cookies...
https://secure.php.net/manual/es/function.session-start.php
Puedes probar de ponerlo al inicio de la pagina haber si ese es el error
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
Val: 24
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

Funciona login en local pero no en servidor

Publicado por MMM (12 intervenciones) el 13/02/2019 13:15:15
Lo he cambiado como me dijiste pero sigue igual. Esto tengo ahora:

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
<?php
include_once (DIR_FIS_CLASES . 'acbd.inc.php');
include '../../ctes.php';
 
 
//asigno un nombre a la sesi�n para poder guardar diferentes datos
    session_name("loginUsuario");
// inicio la sesi�n
    session_start();
 
ini_set("session.use_only_cookies","1");
ini_set("session.use_trans_sid","0");
 
	$aa = session_name();
	$bb = session_start();
 
    $conexion = conexion();
 
	if (!$conexion) {
		echo "No se ha conectado a la BBDD correctamente";
	}
 
    /* Comprueba la conexión */
    if (mysqli_connect_errno()) {
      printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}
 
    $usu = $_POST['usuario'];
    $password = $_POST['contrasena'];
 
//creamos 2 consultas, una para si el es el admin y otra para si es un usuario normal.
    $result = mysqli_query($conexion, "SELECT usuario FROM admins WHERE usuario = '$usu' and contrasenia = '$password' and (permisos ='control' or permisos ='admin')");
if ($result === false) {
    die('Error1 SQL: ' . mysqli_error($conexion));}
    $result2 = mysqli_query($conexion, "SELECT usuario FROM admins WHERE usuario = '$usu' and contrasenia = '$password' and permisos ='usuario'");
if ($result2 === false) {
    die('Error2 SQL: ' . mysqli_error($conexion));}
 
 
    $row = mysqli_fetch_array($result,MYSQLI_ASSOC);
    $row2 = mysqli_fetch_array($result2, MYSQLI_ASSOC);
 
 
    $count = mysqli_num_rows($result);
    $count2 = mysqli_num_rows($result2);
 
echo $count;
echo $count2;
echo $aa;
echo $bb;
//Vemos si el usuario y contraseña son correctos
//Usuario admin (para crear otras cuentas)
if ($count == 1) {
..........

Le añadi uno echo $aa y $bb para ver si devolvía bien, y me devuelve $aa=loginUsuario y $bb=1, por lo que esos valores si deben estar bien y funcionar.

Nose que puede fallar... ni porque no funciona ni siquiera el 'else { header("Location: ".DIR_WEB."admin.html?errorusuario=si");' cuando los datos son incorrectos.

Añado la siguiente parte de código que se debería ejecutar al logear correctamente, aunque no creo que esto influya.
Seguridad.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
<?php
//Inicio la sesi�n
session_name("loginUsuario");
session_start();
//si es necesario cambia la config. del php.ini desde tu script
// o sea, si no funciona desde aqui
ini_set("session.use_only_cookies","1");
ini_set("session.use_trans_sid","0");
 
//cambiamos la duraci�n a la cookie de la sesi�n
//session_set_cookie_params(0, "/", $HTTP_SERVER_VARS["HTTP_HOST"], 0);  ESTA OBSOLETA
session_set_cookie_params(0, "/", $_SERVER["HTTP_HOST"], 0);
 
//antes de hacer los c�lculos, compruebo que el usuario est� logueado
//utilizamos el mismo script que antes
//COMPRUEBA QUE EL USUARIO ESTA AUTENTIFICADO
if ($_SESSION["autentificado"] != "SI") {
    //si no existe, envio a la p�gina de autentificacion
	header("Location: ".DIR_WEB."admin.html");
	} else {
		    //sino, calculamos el tiempo transcurrido
    $fechaGuardada = $_SESSION["ultimoAcceso"];
    $ahora = date("Y-n-j H:i:s");
    $tiempo_transcurrido = (strtotime($ahora)-strtotime($fechaGuardada));
 
    //comparamos el tiempo transcurrido
     if($tiempo_transcurrido >= 600) {
     //si pasaron 10 minutos o m�s
      session_destroy(); // destruyo la sesi�n
      header("Location: ".DIR_WEB."admin.html"); //env�o al usuario a la pag. de autenticaci�n
      //sino, actualizo la fecha de la sesi�n
    }else {
    $_SESSION["ultimoAcceso"] = $ahora;
   }
}


Aqui solo identifica si se ha logeado correctamente, y si es así, tras 10 minutos se destruye la sesion y vuelve a admin.html

Gracias
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