Header 函数在 switch case 中不起作用
Header function is not working in switch case in
我正在研究 PHP 中的喜恶评分系统。
// if user clicks like or dislike button
if (isset($_POST['action'])) {
if (isset($_SESSION['uid'])) {
$action = $_POST['action'];
switch ($action) {
case 'like':
$sql = "INSERT INTO rating (uid, pid, action)
VALUES ($uid, $pid, 'like')
ON DUPLICATE KEY UPDATE action='like'";
break;
case 'dislike':
$sql = "INSERT INTO rating (uid, pid, action)
VALUES ($uid, $pid, 'dislike')
ON DUPLICATE KEY UPDATE action='dislike'";
break;
case 'unlike':
$sql = "DELETE FROM rating WHERE uid=$uid AND pid=$pid";
break;
case 'undislike':
$sql = "DELETE FROM rating WHERE uid=$uid AND pid=$pid";
break;
default:
break;
}
// execute query to effect changes in the database ...
mysqli_query($con, $sql);
echo getRating($pid);
exit(0);
} else {
header("location:login.php");
}
}
如果用户已登录,则它工作正常,但当用户未登录时,包括 PHP header 功能的其他部分将无法正常工作,不会显示任何错误,也不会甚至向数据库中插入数据。
如果有其他选择请告知
不能保证这就是答案 --- 如果没有用就会删除
我认为它可能格式不正确 header。大小写和 space。 header("location:login.php") 应该是
header("Location: login.php");
check the manual here for header Location examples
see MDN for a clear example of header syntax
编辑:
既然你说它仍然不起作用那么很可能你的 SESSION 总是被设置。您应该调试 SESSION 处理代码。
我正在研究 PHP 中的喜恶评分系统。
// if user clicks like or dislike button
if (isset($_POST['action'])) {
if (isset($_SESSION['uid'])) {
$action = $_POST['action'];
switch ($action) {
case 'like':
$sql = "INSERT INTO rating (uid, pid, action)
VALUES ($uid, $pid, 'like')
ON DUPLICATE KEY UPDATE action='like'";
break;
case 'dislike':
$sql = "INSERT INTO rating (uid, pid, action)
VALUES ($uid, $pid, 'dislike')
ON DUPLICATE KEY UPDATE action='dislike'";
break;
case 'unlike':
$sql = "DELETE FROM rating WHERE uid=$uid AND pid=$pid";
break;
case 'undislike':
$sql = "DELETE FROM rating WHERE uid=$uid AND pid=$pid";
break;
default:
break;
}
// execute query to effect changes in the database ...
mysqli_query($con, $sql);
echo getRating($pid);
exit(0);
} else {
header("location:login.php");
}
}
如果用户已登录,则它工作正常,但当用户未登录时,包括 PHP header 功能的其他部分将无法正常工作,不会显示任何错误,也不会甚至向数据库中插入数据。
如果有其他选择请告知
不能保证这就是答案 --- 如果没有用就会删除
我认为它可能格式不正确 header。大小写和 space。 header("location:login.php") 应该是
header("Location: login.php");
check the manual here for header Location examples
see MDN for a clear example of header syntax
编辑: 既然你说它仍然不起作用那么很可能你的 SESSION 总是被设置。您应该调试 SESSION 处理代码。