1

当用户单击登录按钮(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'] == '') { header("location:index.php"); } ?>

问题:尽管我输入了正确的用户名和密码,但它总是返回 index.php 页面。我认为 session_id() 工作不正常还是?

4

2 回答 2

5

将 $_session 更改为 $_SESSION。

顺便说一句 session_register 已弃用,不应使用。有关详细信息,请参阅会话注册手册。

顺便说一句#2。你不需要在$_SESSION中存储sessionId,UserId就足够了。所以你的代码可能看起来像:

登录.php

if ($count == 1) {
    $_SESSION['UserId'] = $myusername;
    header ("location: LoggedUser.php");
    exit;
}

登录用户.php

if (empty ($_SESSION['UserId'])) {
    header ("location:login.php");
    exit;
}

// user is logged 

编辑: 按照 Emil 的建议添加了退出。

于 2010-05-15T11:17:51.887 回答
1

考虑exit;在每次通话后header('Location: ...')打电话。否则 PHP 将继续解析其余代码,这可能会导致不可预知的错误。

header("Location: LoggedUser.php");
exit;
于 2010-05-15T11:27:09.730 回答