我读过很多关于这方面的其他话题,但仍然无法弄清楚我的问题。它正在工作,然后我的电脑崩溃了,现在看来它不再记忆会话变量了。所以这是我的代码Php session:undefined index
登录页面,在那里我创建会话(如果用户进行身份验证)
<?php session_start();
if(!empty($_POST['subject'])) //SPAM
exit;
include "functions.php";
$con=Connection();
$usr = mysqli_fetch_array(mysqli_query($con, "SELECT usrname, usrpw FROM users"));
if(password_verify($_POST['usrname'], $usr[0]) && password_verify($_POST['usrpw'], $usr[1])){
session_regenerate_id(true);
echo "crea session";
$_SESSION['logged'] = hash('sha256', 'L9oT8s5iF3yX1uW');
$_SESSION['remote_ip'] = $_SERVER['REMOTE_ADDR'];
$_SESSION['year'] = date('Y');
echo "<h12>welcome!<br/><br/>";
echo"<a href='home.php'>Home</a></h12>";
}else{
session_destroy();
echo "<h12wrong data.<br/></br>";
echo"<a href='login1.php'>try again</a></h12>";
}
mysqli_close($con); ?>
<html>
<head>
<title> Login </title>
<link type="text/css" rel="stylesheet" href="css/styles.css" title="Style" media="all" />
</head>
</html>
这些代码在我的“家”页面的第一行中登录后(和创建会话变量)。其他行是html,所以我省略了它。
<?php session_start();
if(!isset($_SESSION['logged']) && $_SESSION['logged'] != 1)){
echo "not logged ".$_SESSION['logged'];
exit;
}
?>
登录页作品(是不言而喻的,如果统计内的“创建会话”字符串将被打印出来。),但只要我去主页它会抛出这个错误:注意:未定义索引:记录在第2行(我正在检查会话变量是否设置)。 我试着注释掉所有会话变量,除了“记录”,但仍然无法解决。
感谢
编辑: 对不起,约我只是犯了一个错误写在这里括号(我改变了字符串我有数字1,我忘了删除括号)。还是行不通。
我尝试这样做,仍然引发错误(其实后“没有登录”回声不会打印出任何东西)2
if(!isset($_SESSION['logged'])){
echo "not logged ".$_SESSION['logged'];
exit;
}
编辑: 我home.php删除了所有的代码并提出它是这样的:
<?php session_start();
echo $_SESSION['logged'];
?>
它仍然会告诉我, '记录' 索引是未定义
在你的第二个代码中,您有一个')'在if语句(在结束了)(此外,我会用||) – Rizier123 2014-12-06 14:00:00
我的错误写在这里。这不是 – 2014-12-06 14:20:03
所以这意味着你的会话索引不会被设置!所以你的第一个代码框中的if语句不会被输入! (我认为你没有你的用户名hased!所以不要使用'password_verify'作为用户名) – Rizier123 2014-12-06 14:24:24