Ver Mensaje Individual
  #5 (permalink)  
Antiguo 16/03/2021, 22:32
pilucho
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: error login usando header('location

Cita:
Iniciado por petit89 Ver Mensaje
Lo que tuadmin esta diciendote, en otras palabras es que no tienes definida tu $_SESSION

Código PHP:
Ver original
  1. else {
  2. $msg = "You have been logged in";
  3. header('Location: home.php');

Aqui deberia ir algo como:

Código PHP:
Ver original
  1. else {
  2. $msg = "You have been logged in";
  3. $_SESSION['email'] = $email; //variable que viene del POST
  4. header('Location: home.php'); //ahora si redireccionas
  5. exit(); // yo lo agregaria para que no siga leyendo

Por supuesto que el index.php tiene que llevar su session_start(); TODO documento, cuando trabajes con sesiones deber llevarlo.

El mensaje esta demas; si a esa velocidad ni se leerá.. pero mientras este en desarrollo, gusto tuyo... ahora que llevas $_SESSION['email'] definida, el codigo:
Código PHP:
Ver original
  1. <?php   session_start();
  2.     $con = new mysqli('localhost', 'root', '', 'mydbname');
  3.                 if(!isset($_SESSION['email']))      {
  4.                     header('location:index.php');   }
  5.      
  6.     echo "bienvenido";
  7.     ?>

ahora SI tendra variable que leer... deberia mostrarte bienvenido... tienes una comprobación de $_SESSION['email'] para logeo... ¿como pensabas comprobarla si no la mencionabas en nada mas?

hola petit89 gracias por responder, si tambien lo probe de ese modo, pero mi error era este: $_SESSION['email'] = $data['email']; y debería haber sido así: $_SESSION['email'] = $email; y si me faltaba en la primera linea session_start();

yo lo probe de este modo y estaba mal asi:
Código PHP:
Ver original
  1. $sql = $con->query("SELECT id, password, isEmailConfirmed FROM users WHERE email='$email'");
  2.             if ($sql->num_rows > 0) {
  3.                 $data = $sql->fetch_array();
  4.                 if (password_verify($password, $data['password'])) {
  5.                     if ($data['isEmailConfirmed'] == 0)
  6.                         $msg = "Please verify your email!";
  7.                     else {
  8.                         $msg = "You have been logged in";
  9.                         $_SESSION['email'] = $data['email'];
  10.                         header('Location: home.php');
  11.                     }
  12.                 } else
  13.                     $msg = "Please check your inputs!";
  14.             } else {
  15.                 $msg = "Please check your inputs!";
  16.             }

y realmente daríahaber sido así.

Código PHP:
Ver original
  1. <?php
  2.     session_start();
  3.     $msg = "";
  4.  
  5.     if (isset($_POST['submit'])) {
  6.         $con = new mysqli('localhost', 'root', '', 'mydbname');
  7.  
  8.         $email = $con->real_escape_string($_POST['email']);
  9.         $password = $con->real_escape_string($_POST['password']);
  10.  
  11.         if ($email == "" || $password == "")
  12.             $msg = "Please check your inputs!";
  13.         else {
  14.             $sql = $con->query("SELECT id, password, isEmailConfirmed FROM users WHERE email='$email'");
  15.             if ($sql->num_rows > 0) {
  16.                 $data = $sql->fetch_array();
  17.                 if (password_verify($password, $data['password'])) {
  18.                     if ($data['isEmailConfirmed'] == 0)
  19.                         $msg = "Please verify your email!";
  20.                     else {
  21.                         $msg = "You have been logged in";
  22.                         $_SESSION['email'] = $email;
  23.                         header('Location: home.php');
  24.                     }
  25.                 } else
  26.                     $msg = "Please check your inputs!";
  27.             } else {
  28.                 $msg = "Please check your inputs!";
  29.             }
  30.         }
  31.     }
  32. ?>
  33. <!doctype html>
  34. <html lang="en">
  35. <head>
  36.     <meta charset="UTF-8">
  37.     <link rel="stylesheet" href="bootstrap.min.css">
  38. </head>
  39. <body>
  40.     <div class="container" style="margin-top: 100px;">
  41.         <div class="row justify-content-center">
  42.             <div class="col-md-6 col-md-offset-3" align="center">
  43.  
  44.                 <img src="images/logo.png"><br><br>
  45.  
  46.                 <?php if ($msg != "") echo $msg . "<br><br>" ?>
  47.  
  48.                 <form method="post" action="login.php">
  49.                     <input class="form-control" name="email" type="email" placeholder="Email..."><br>
  50.                     <input class="form-control" name="password" type="password" placeholder="Password..."><br>
  51.                     <input class="btn btn-primary" type="submit" name="submit" value="Log In">
  52.                 </form>
  53.  
  54.             </div>
  55.         </div>
  56.     </div>
  57. </body>
  58. </html>