【问题标题】:PHP - Dealing with POST and header includePHP - 处理 POST 和 header 包括
【发布时间】:2011-09-22 09:10:11
【问题描述】:

假设我有一个用户可以登录的表单,当用户填写表单时,它会发回同一页面,检查用户名和密码是否有错误,如果一切顺利,则让用户登录。目前我正在通过在这种情况下加载表单来做到这一点:

if($_SERVER['REQUEST_METHOD'] != 'POST') {

如果不是这样,则检查错误并登录等。

问题是这一切都发生在signin.php。在signin.php 的顶部,我包括header.phpconnect.php,它们的功能与它们的名字所暗示的完全一样。当我发回页面时,登录状态的更改未显示在头文件中(此文件中有一个用户栏,本质上与本网站上的用户栏相似)。登录有效,但我必须导航到不同的页面,标题才能显示“登录”而不是“登录/注册”或其他任何内容。

我是否以错误的方式解决了这个问题,或者我需要添加一些东西来更新我的标题?干杯。

P.S:我对php很陌生,所以最好不要太复杂。

【问题讨论】:

  • 重定向到其他页面标题("Location: ".$url);或者您可以重定向同一页面。它会得到解决。如果在重定向之前浏览器有输出,请使用元刷新或 javascript 重定向。
  • @mahadeb 根本不应该在浏览器中输出任何东西。
  • 登录完成后,使用这个 - header('Location: ' . basename($_SERVER['REQUEST_URI']));出口;用于页面重定向。在此代码块之前记住一件事,不应该有任何输出到浏览器,甚至没有任何空间输出。

标签: php post include


【解决方案1】:

您可能需要在 POST 代码发生后重定向(使用 header()):

if($_SERVER['REQUEST_METHOD'] != 'POST') {
    ..
}
else {
    ..
    header('Location: ' . basename($_SERVER['REQUEST_URI']));
    exit;
}

【讨论】:

    【解决方案2】:

    您的设置存在 2 个问题,违反了非常基本但严格的 Web 开发规则

    1. 在任何 POST 请求之后都应该进行重定向。可以按照其他答案所示完成。
    2. 在所有逻辑完成之前不能显示 HTML。所以,你的 header.php 应该在表单检查之后调用,而不是在它之前。

    【讨论】:

    • 是的,我明白第 2 点现在有多重要了,只要我开始以正确的顺序调用它,它就会按照我想要的方式进行。确实很明显。干杯!
    猜你喜欢
    • 2010-12-07
    • 1970-01-01
    • 2014-08-01
    • 2014-12-03
    • 2012-03-04
    • 2020-07-11
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    相关资源
    最近更新 更多