【问题标题】:Header function is not working in switch case in [closed]标题功能在[关闭]中的开关盒中不起作用
【发布时间】:2021-10-29 03:20:36
【问题描述】:

我正在研究 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 标头函数的 else 部分将无法正常工作,也不会显示任何错误,甚至不会将数据插入数据库。

如果有其他选择,请告诉

【问题讨论】:

标签: php switch-statement


【解决方案1】:

不能保证这是完全正确的答案 --- 如果没有用,将删除

我认为它可能是格式错误的标题。大小写和空间。 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 处理代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多