la redirección no siempre funciona conmigo, en mi situación no encontré la solución, así que puse una redirección usando el código javascript, alguien puede decirme qué está mal con mi código y por qué el eco no funciona también, quiero un mensaje de eco para el usuario cuando la contraseña o el inicio de sesión no es correcto, gracias
function getlogin($conn) { if (isset($_POST['loginsubmit'])) { $uid = mysqli_real_escape_string($conn, $_POST['uid']); $pwd = mysqli_real_escape_string($conn, $_POST['pwd']); $sql = "SELECT * from test where uid='$uid'"; $result = $conn->query($sql); $row = $result->fetch_assoc(); $hash_pwd = $row['pwd']; $hash = password_verify($pwd, $hash_pwd); if($hash == 0) { header("Location : test.php?error=empty"); } else { $stmt = $conn->prepare("select * FROM test WHERE uid=? and pwd =?"); $stmt->bind_param("ss", $username, $password); $username = $uid; $password = $hash_pwd; $stmt->execute(); $result = $stmt->get_result(); $rowNum = $result->num_rows; if ($rowNum > 0) { if ($row = $result->fetch_assoc()) { $_SESSION['id'] = $row['id']; echo "<script> window.location.replace('test.php') </script>" ; exit(); } }else { header("Location : test.php"); echo " echo don't work "; exit(); } } } }<script type="text/javascript">window.location.href = 'link here';</script>No recomiendo el uso de la función de encabezado () después del inicio de la página. Usa este código en Javascript que funciona bien y no te genera errores molestos.
En la mayoría de los casos, la razón por la cual la redirección del encabezado no funciona es que la página imprimió algo antes de que se llamara al encabezado. Puede ser tan simple como una sola línea vacía o las etiquetas html que inician una página. Debe verificar que su sql no devuelva un error, porque si hay un mensaje de error antes del encabezado, generará una advertencia y bloqueará una redirección. En algunos sistemas, está configurado para tolerar la advertencia y redirigir de todos modos, por lo que podría funcionar localmente a pesar del error, pero cuando lo coloca en un entorno más estricto, provoca un error. Debe comentar temporalmente la redirección y ver qué hay en la página cuando se detiene en lugar de redirigir. Si hay un mensaje de error, es fácil encontrar dónde está el problema. Si hay una línea vacía, puede ser más difícil encontrarla. Además, no estoy seguro de si está bien poner un espacio antes del encabezado: después. Yo nunca he hecho eso. ¿Su tabla de prueba también tiene id y uid que son dos cosas separadas? ¿Dónde uid es la identificación del usuario e id es la identificación de la sesión? Porque si no lo haces, podría ser un error tipográfico.
Además, no puede colocar un eco después de una redirección porque lo redireccionan a otra página antes de que se ejecute el eco. Por lo tanto, debe redirigir a una página que dice que su inicio de sesión es incorrecto en lugar de poner el eco en su función. Si no desea que la página siempre imprima eso, agregue algo como ?error=1 en la redirección, luego haga que la página solo imprima el mensaje si el error está configurado y es 1.