Foros del Web » Programando para Internet » PHP »

error login usando header('location

Estas en el tema de error login usando header('location en el foro de PHP en Foros del Web. Hola, espero me puedan ayudar tengo el siguiente inconveniente. si uso "header('location:home.php');" en la linea 21, para redireccionar después de logearse no logea, pero si ...
  #1 (permalink)  
Antiguo 15/03/2021, 21:10
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 4 meses
Puntos: 6
error login usando header('location

Hola, espero me puedan ayudar tengo el siguiente inconveniente.

si uso "header('location:home.php');" en la linea 21, para redireccionar después de logearse no logea, pero si no uso "header..." solo obtengo el mensaje "You have been logged in" que indica que se logeo correctamente. me pueden ayudar que esta mal? en el home.php esta el codigo de session y el bienvenido...

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



home.php
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. ?>
  #2 (permalink)  
Antiguo 16/03/2021, 08:41
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años
Puntos: 120
Respuesta: error login usando header('location

en tu script login.php, no estas guardando el INICIO de session exitoso en la variable $_SESSION
no tienes persistencia de datos. recuerda que es obligatorio el uso de
session_start o de lo contrario usa COOKIES directamente para evitarlo

la forma correcta de usar la funcion Header era

Código PHP:
Ver original
  1. header("Location: index.php");
y esta es incorrecta
Código PHP:
Ver original
  1. header("location:index.php");
note la diferencia
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9
  #3 (permalink)  
Antiguo 16/03/2021, 19:57
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 4 meses
Puntos: 6
Respuesta: error login usando header('location

Cita:
Iniciado por tuadmin Ver Mensaje
en tu script login.php, no estas guardando el INICIO de session exitoso en la variable $_SESSION
no tienes persistencia de datos. recuerda que es obligatorio el uso de
session_start o de lo contrario usa COOKIES directamente para evitarlo

la forma correcta de usar la funcion Header era

Código PHP:
Ver original
  1. header("Location: index.php");
y esta es incorrecta
Código PHP:
Ver original
  1. header("location:index.php");
note la diferencia

Hola tuadmin, gracias por responder. te comento que le cambie y así quedo el código, y no funciona sigue igual


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

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?
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #5 (permalink)  
Antiguo 16/03/2021, 22:32
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 4 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>
  #6 (permalink)  
Antiguo 17/03/2021, 00:27
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 4 meses
Puntos: 6
Respuesta: error login usando header('location

saben porque ahora no trae los otros datos? al logearse redirige a home.php hasta ahi ya va todo bien, pero al estar logeado, no me da los otros nombres, probé de varias formas y nada

home.php
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. ?>
  8.  
  9. Hi, <?php echo "".$_SESSION['firstname']." ".$_SESSION['lastname']."";?>
  10.  
  11. <?php
  12. $_SESSION['firstname'] = $rows['firstname'];
  13. $firstname = $_SESSION['firstname'];
  14. echo "Hello $firstname "; ?>

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:59.