当用户点击登录按钮(index.php)时,我正在调用 chechlogin.php ,我在这里检查loginId的密码为 -
if($count==1)
{
// Register $myusername, $mypassword and redirect to file "login_success.php"
session_register("myusername");
session_register("mypassword");
$_SESSION['UserId'] = $myusername;
$_session['SessionId'] = session_id();
header("location:LoggedUser.php");
}
LiggedUser.php 中的
<?php session_start(); //starting session
if(!isset($ _ SESSION ['SessionId'])|| $ _SESSION ['SessionId'] =='') { 标题( “位置:的index.php”); } ?&GT;
问题:虽然我输入了正确的用户ID和密码,但它总是回到index.php页面。我认为session_id()工作不正常或者??
答案 0 :(得分:5)
将$ _session更改为$ _SESSION。
btw session_register已弃用,不应使用。有关详细信息,请参阅session-register手册。
btw#2。您不需要在$ _SESSION中存储sessionId,UserId就足够了。所以你的代码看起来像:
的login.php
if ($count == 1) {
$_SESSION['UserId'] = $myusername;
header ("location: LoggedUser.php");
exit;
}
loggeduser.php
if (empty ($_SESSION['UserId'])) {
header ("location:login.php");
exit;
}
// user is logged
修改强> Emil建议退出。
答案 1 :(得分:1)
在每次exit;
来电后,请考虑致电header('Location: ...')
。否则PHP将继续解析剩余的代码,这可能会导致不可预测的错误。
header("Location: LoggedUser.php");
exit;