mysql: la redirección de ubicación del encabezado PHP no funciona. como rectificar

CorePress2023-11-30  1

Se realizó un formulario de inicio de sesión usando php mysql. Funciona bien en Windows Plesk. Se migró de Plesk Windows a cpanel y la redirección de la ubicación del encabezado dejó de funcionar. Sin embargo, verifica iniciar sesión con db

     <?php
        session_start();

                if(isset($_POST['submit'])){

                    $name1=$_POST['username'];  
                    $pass=$_POST['password'];



                    include("connection.php");



                if ($stmt = $conn->prepare("SELECT id,username,password from login WHERE BINARY username = BINARY ? and BINARY password = BINARY ?")) {
$stmt->bind_param("ss", $name1,$pass);
$stmt->execute();
$stmt->bind_result($id,$name1,$pass); 
 if ($stmt->fetch())     
 {
     $_SESSION['login']=1;
     $_SESSION["loginname"] = $name1;
     $_SESSION["idname"] = $id;

     header("Location:dashboard.php"); 

 }


 else
 {
    ?> <p class="text-center" style="margin-top:12px;color:red;"><b>Invalid Username / Password !</b></p>

    <?php
 }

}

                }


            ?>

Ayúdame a solucionar el problema.



------------------------

Se debe a los espacios al principio del archivo.

Asegúrate de que no haya nada fuera de <?php y ?> antes de que se realice la redirección, ya que los encabezados deben enviarse antes de que se haya enviado cualquier contenido de la página. Si habilita las advertencias de php, debería haber una advertencia al respecto. También asegúrese de que no haya nada impreso en la conexión incluida..php antes de realizar la redirección.

En su caso se han enviado algunos espacios para que no se realice la redirección del encabezado.

Aún se podría hacer si el servidor web o el script tuvieran un búfer de salida, pero como usted dice que no funciona, no parece ser el caso.

2
  • ¿Podrías explicarme claramente en mi escenario dónde se envió el espacio? - Mohamed 7 de junio de 2020 a las 9:39
  • 1 En el ejemplo que publicó en su pregunta, hay varios espacios antes de <?php, asegúrese de que no haya nada impreso (nada fuera de <?php ?>) allí y también en el archivo Connection.php incluido. archivo. También puedes habilitar los errores de php para ver la advertencia sobre esto -jeprubio 7 de junio de 2020 a las 9:49


------------------------

Añadido <?php ob_start() ;?> en la parte superior de la página que resolvió el problema

También se agregó ob_end_flush(); para borrar el búfer.

1
  • Ese es uno de los buffers de salida del que estaba hablando. Pero es un parche, no una solución. Porque primero debes encontrar qué salida tuvieron tus páginas antes de enviar los encabezados para conocer la causa real y solucionarlo bien. En caso de que realmente no veas contenido afueralas marcas de php tengan en cuenta que también podría deberse a un carácter BOM en los archivos php -jeprubio 7 de junio de 2020 a las 13:31


------------------------

Prueba esto

echo "<script>setTimeout(\"location.href = 'https://stackoverflow.com/questions/62243405/dashboard.php';\",000);</script>";
Compartir mejorar esta respuesta Seguir Respondido 7 de junio de 2020 a las 9:40 RaviRavi 511 insignia de bronce 1
  • Eliminar encabezado("Ubicación:dashboard.php"); y copia mi respuesta aquí - Ravi 7 de junio de 2020 a las 10:36
Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare