[英]How to use more than one header in a php login page
下面是我在 php 中的登录页面代码。
<?php
session_start();
if($_SERVER["REQUEST_METHOD"] == "POST") {
// username and password sent from form
$myusername = $_POST['username'];
$mypassword = $_POST['password'];
$f_password = md5($mypassword);
$sql = "SELECT id,user_name FROM users WHERE user_name = '$myusername' and password = '$f_password'";
$result = mysqli_query($db,$sql);
$row = mysqli_fetch_assoc($result);
$count = mysqli_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count == 1) {
$_SESSION['us_name'] = $row['user_name'];
header("Location: /main-page.php");
}else {
$error = "<script>alert('Incorrect Credentials.Please login again');</script>";
echo $error;
}
}
?>
当我在 else 块中使用另一个标头时,它会引发一些错误。 但我希望用户在输入错误凭据时重定向到相同的登录页面。 我怎样才能在 php 中做到这一点? 请不要告诉我使用js方法window.location。
首先回答您的问题:我假设错误来自发送数据 - 您在 else 块中所做的echo
- 然后尝试添加标题。 您必须在发送第一个数据之前发送所有标头,其中包括使用echo
打印内容。
如果您将header()
行放在 else 块的开头,并确保之前没有其他输出(例如使用var_dump()
),您的问题应该会消失。
此外,您的脚本中还存在许多安全问题:
md5()
对高度不安全的密码进行编码。 现代 php 有一个函数password_hash()
(自 PHP 5.5 起可用),您应该使用它另一个与为什么需要标题相关的问题:如果要重定向到登录页面,为什么页面上有<script>
-snippet? 更改位置时无论如何都不会影响,对吗?
最后一个问题,你的问题被标记为 laravel。 所以我很好奇你为什么不使用它的身份验证机制?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.