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 处理代码。