【问题标题】:Passing variables to next page through $_SESSION通过 $_SESSION 将变量传递到下一页
【发布时间】:2015-12-02 02:42:56
【问题描述】:

我需要将一个变量从 login.php 传递到 index.php 以便在用户未输入用户名或密码时收到错误消息。我有一个模态表单,将 $_POST['usename']$_POST['password'] 传递给 login.php

login.php

require_once(realpath(__DIR__ . "/resources/session.php"));

if(!$logged) {
    if(isset($_POST['username']) && isset($_POST['password'])) {
        $username = mysqli_real_escape_string($conn, $_POST['username']);
        $password = mysqli_real_escape_string($conn, $_POST['password']);

        if(strlen($_POST['username']) == 0 || strlen($_POST['password']) == 0) {
            $_SESSION['noty'] = "error||topCenter||(here the message)";
            header("Location: index.php");
        } else {
            // Code...
        }
    }
} else {
    // Code ...
}

$_SESSION['noty'] 是我应该传递给 index.php 的变量。

index.php

$page_id = 1;
require_once(realpath(__DIR__ . "/resources/session.php"));

require_once(TEMPLATE_PATH . "/header.php");
require_once(TEMPLATE_PATH . "/sidebar.php");
require_once(TEMPLATE_PATH . "/breadcrumb.php");

renderLayout(VIEWS_PATH . "/index.view.php");

require_once(TEMPLATE_PATH . "/footer.php");

index.php 中包含的 header.php 的底部:

if(isset($_SESSION['noty']) AND strlen($_SESSION['noty']) > 0) {
    $noty = explode("||", $_SESSION['noty']);
    noty($noty[2], $noty[1], $noty[0]);
    $_SESSION['noty'] = "";
} else {
    $_SESSION['noty'] = "";
}

还有noty function是:

function noty($text, $layout, $type) {
    echo "<script type=\"text/javascript\">
        noty({text: '$text', layout: '$layout', type: '$type'});
        </script>";
}

这不起作用。当我从 login.php 进入 index.php 时,$_SESSION['noty']not 设置的。

编辑 1:

session.php 顶部包含 session_start()index.phplogin.php 都需要它。

编辑 2:

exit;header() 之后重定向对我不起作用。

已解决:

每当用户未登录 session.php 时,我都会将 $_SESSION 设置为 array(),因此它也会删除 $_SESSION['noty']。这个错误太愚蠢了。

【问题讨论】:

  • 您是否在两个页面的顶部都调用了session_start()
  • session_start,你用吗?
  • 使用session_start() 访问$_SESSION 变量。
  • 我愿意。两个文件都需要的 session.php,顶部包含 session_start()。

标签: php variables session


【解决方案1】:

使用header()函数后,你应该使用exit;函数。更多详情:PHP session destroyed / lost after header

【讨论】:

  • 感谢您的回答,但它对我不起作用。 $_SESSION['noty']index.php 上仍未设置。
猜你喜欢
  • 2012-11-26
  • 1970-01-01
  • 2013-09-14
  • 2010-10-26
  • 1970-01-01
  • 1970-01-01
  • 2012-05-16
  • 1970-01-01
相关资源
最近更新 更多