0

我是 php 新手,在创建登录脚本时遇到问题。在代码的第一部分,它可以找到属于登录者的正确id,并在$_SESSION['id']中正确设置。然后脚本重定向回索引,但在这里我收到一条错误消息,指出会话中未设置 id。

注意:未定义的索引:第 11 行 C:\xampp\htdocs\gym\v1\content\body\panel.php 中的 id

$sql="SELECT id FROM user WHERE email='$myusername' and password='$mypassword'";
$result=mysql_query($sql);

$count=mysql_num_rows($result);

if($count==1){
    session_regenerate_id(); //Regenerate session ID to prevent session fixation attacks
    $member = mysql_fetch_assoc($result);
    $_SESSION['id'] = $member['id'];
    session_write_close();
    header("location: ../index.php?page=2");
    exit();
}
else {
    header("Location: ../index.php?page=1");
    exit();
}
?>

session_start();
echo 'session id:' . $_SESSION['id'];
if(!isset($_SESSION['id']) || (trim($_SESSION['id']) == '')) {
    echo 'error not session id set';
    exit();
}
$sql="SELECT * FROM user WHERE id='" . $_SESSION['id'] . "'";
$result=mysql_query($sql);

$member = mysql_fetch_assoc($result);
$mail = $member['emails'];

echo '<h1>Welcome!'. $mail  . ' </h1>';

提前致谢

4

1 回答 1

3

在您的登录脚本中,您永远不会session_start()在设置之前调用$_SESSION['id'].

此外,它可能无助于回答您的问题,但您应该停止使用mysql_*函数。它们正在被弃用。而是使用PDO(从 PHP 5.1 开始支持)或mysqli(从 PHP 4.1 开始支持)。如果您不确定要使用哪一个,请阅读这篇文章

于 2012-08-16T13:13:58.060 回答