【问题标题】:PHP header location wont work after uploading to the server上传到服务器后,PHP 标头位置不起作用
【发布时间】:2014-12-12 06:56:48
【问题描述】:

当我在本地主机上运行此代码时,它可以正常工作,但在我将其上传到服务器后,标头将无法正常工作。我使用了java脚本窗口定位方法,但是重定向页面中的会话是空的。当我运行它时,它只显示消息。

function userHandle() {
    global $conn;
    global $email;
    $sql = "INSERT INTO votes (Email) VALUES ('$email')";

    if ($conn->query($sql) === TRUE) {
        echo "New record created successfully";
        $_SESSION["email"] = $email;
        ob_start();
        header("Location: https://sitename.com/login.php");
        exit();
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
        $_SESSION["email"] = $email;
        ob_start();
        header("Location: https://sitename.com/login.php");
        exit();
    }
}

$conn->close();

【问题讨论】:

  • 移动 ob_start();到页面顶部
  • 希望您很清楚,如果您的 $email 变量没有被转义,则意味着您很容易受到 SQL 注入的攻击。

标签: php session redirect header


【解决方案1】:

header 函数不允许在它之前进行任何输出。所以要么你删除回声,要么你可以用 ob_clean();ob_start()

【讨论】:

    【解决方案2】:

    你必须删除

    echo "New record created successfully";
    

    echo "Error: " . $sql . "<br>" . $conn->error;
    

    【讨论】:

      【解决方案3】:

      问题是

      echo "New record created successfully";
      

      回显到输出流后,您不能使用 header() 只需删除它们并查看 header 的手册页:php.net/header

      【讨论】:

        【解决方案4】:

        也许你可以做 JavaScript 来做直接页面

        <script>window.location = 'URL'</script>
        

        标题(“”);如果你把你的文件放在首位,那就很好用

        我不知道为什么在 localhost 中运行得很好,在主机上传后无法正常工作

        【讨论】:

        • 当我使用 java 脚本时,重定向页面中的会话为空
        • 会话在创建后永远不会为空,直到您销毁该会话,您可以添加 session_start();在你想要的每一页。在声明会话之前,始终将您的会话放在首位
        猜你喜欢
        • 1970-01-01
        • 2015-10-02
        • 2012-12-21
        • 2012-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多