PHP - Sistema de Login: Sesiones PHP

 
Vista:
Imágen de perfil de Lucas
Val: 87
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Sistema de Login: Sesiones PHP

Publicado por Lucas (46 intervenciones) el 05/05/2020 03:05:15
Estoy intentando hacer una página que incluye un login al principio, y si el usuario y la contraseña están bien introducidos lleve a una pagina exclusiva para usuarios registrados. El problema es que cualquiera podría ingresar a la "página exclusiva" simplemente escribiendo la URL del sitio. Se me ocurrió arreglar esto utilizando sesiones pero por alguna razón solo sirve en el Localhost, pero no en el servidor web. Adjunto los códigos y si alguien tiene alguna idea de por qué puede ser por favor que me diga:

PARTE PHP DE LA PÁGINA DE LOGIN
1
2
3
4
5
6
7
8
9
10
if(isset($_POST["listo"])){
$nombreuser=$_POST["usuario"];
    if(!strcasecmp($_POST["usuario"],"Andrea") and !strcasecmp($_POST["contra"],"1234")){
        session_start();
        $_SESSION["sesion"]=$_POST["usuario"];
            header("location:menu.php");
        }else{
            header("location:index.html");
        }
}

PARTE PHP DE LA PÁGINA "EXCLUSIVA"
1
2
3
4
5
6
<?php
    session_start();
    if(!isset($_SESSION["sesion"])){
        header("Location:index.html");
    }
?>




Anotacion-2020-05-05-030244




Había pensado utilizar cookies también. Cualquier duda por favor preguntenme, no se si pude explicarme bien que es lo que quería hacer.
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 javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Sistema de Login: Sesiones PHP

Publicado por javier (547 intervenciones) el 05/05/2020 08:25:18
Hola,
las lineas 9 y 11 de menu.php cuales son?

por el codigo completo para verlo mejor, asi.....falta informacion.

en cuanto a
1
!strcasecmp
, has leido el manual?? https://www.php.net/manual/es/function.strcasecmp.php, una manera un poco rara de comparar datos para un login (por que no distingue entre mayusculas o minusculas)

session_start(); se suele colocar siempre, cuando se usan sesiones, en la primera lina del archivo PHP.
y los headers no se pueden poner si ya has hecho un echo antes o has puesto codigo HTML que tenga salida al navegador.

Pon todo el codigo de los dos archivos, a ver si te puedo ayudar,

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Lucas
Val: 87
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Sistema de Login: Sesiones PHP

Publicado por Lucas (46 intervenciones) el 05/05/2020 14:19:43
El strcasecmp es a propósito, de momento me es más cómodo que no distinga entre minúsculas y mayúsculas
Te dejo los codigos enteros:
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
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Menú principal</title>
    <link href="planillas.css" rel="stylesheet">
    <?php
    session_start();
    if(!isset($_SESSION["sesion"])){
        header("Location:index.html");
    }
?>
</head>
<body>
<div class="menu">
<h1>Planillas</h1>
<ul>
    <a href="formulario_corte.php">
        <li>Planillas de corte</li>
    </a>
    <a href="formulario_filet.php">
        <li>Planillas de filet</li>
    </a>
    <a href="">
        <li>Teceras planillas</li>
    </a>
</ul>
</div>
</body>
</html>

1
2
3
4
5
6
7
8
9
10
11
12
<?php
if(isset($_POST["listo"])){
$nombreuser=$_POST["usuario"];
    if(!strcasecmp($_POST["usuario"],"Andrea") and !strcasecmp($_POST["contra"],"1234")){
        session_start();
        $_SESSION["sesion"]=$_POST["usuario"];
            header("location:menu.php");
        }else{
            header("location:index.html");
        }
}
?>
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 javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Sistema de Login: Sesiones PHP

Publicado por javier (547 intervenciones) el 05/05/2020 18:38:36
no puedes enviar HTML antes que session_start() o antes de enviar un header y tu lo estas haciendo

coloca:

1
2
3
4
5
6
<?php
    session_start();
    if(!isset($_SESSION["sesion"])){
        header("Location:index.html");
    }
?>
antes de

1
<!DOCTYPE html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Lucas
Val: 87
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Sistema de Login: Sesiones PHP

Publicado por Lucas (46 intervenciones) el 05/05/2020 18:53:30
Excelente Javier, pudiste resolver mi problema, te agradezco! Lo de que no puedo colocar session_start() o un header después de HTML lo adopto como normal general o es solo este caso?
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 javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Sistema de Login: Sesiones PHP

Publicado por javier (547 intervenciones) el 05/05/2020 19:00:02
en general, hazlo siempre por que es que no se puede y si lo vuelves a hacer te volvera a marcar error

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar