【发布时间】: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.php 和 login.php 都需要它。
编辑 2:
exit; 在header() 之后重定向对我不起作用。
已解决:
每当用户未登录 session.php 时,我都会将 $_SESSION 设置为 array(),因此它也会删除 $_SESSION['noty']。这个错误太愚蠢了。
【问题讨论】:
-
您是否在两个页面的顶部都调用了
session_start()? -
session_start,你用吗? -
使用
session_start()访问$_SESSION变量。 -
我愿意。两个文件都需要的 session.php,顶部包含 session_start()。