当用户给出用户名和密码时,我有一个登录表单,它会导致login.php
文件
session_start();
if ( isset( $_POST['username'], $_POST['password'] ) ) {
$user = $_POST['username'] ;
$pass = $_POST['password'] ;
$query = " MY QUERY ";
$result = mysql_query($query) or die('SQL ERROR:'.mysql_error());
$row = mysql_fetch_assoc($result);
if ($row) {
echo "query successfull wrote to DB";
unset($_SESSION);
$userName = $row['firstname'].' '.$row['lastname'];
$_SESSION['userNameSession'] = $userName;
$_SESSION['loginStatus'] = '1';
header('location:admin/admin.php');
}else{
echo "unscccessful login";
header('location:index.php');
}
}
当我尝试通过print_r($_SESSION)
从这个文件打印会话…它用值
Array ( [userNameSession] => full name [loginStatus] => 1 )
在我的admin/admin.php
(成功登录时打开)中写
session_start();
print_r($_SESSION);exit;
如果尝试通过print_r($_SESSION)
打印会话,则显示空数组为Array()
请帮。
为什么要制作unset($_SESSION)
?这可能导致会话变量被删除,但会话仍然存在。
如果你想清理$_SESSION['LoginStatus']
和$_SESSION['userNameSession']
,最好一个一个地清理(虽然这不是必要的,因为你以后会重写它的值):
unset($_SESSION['LoginStatus']);
unset($_SESSION['userNameSession']);
代码必须像这样:
session_start();
if ( !empty($_POST['username']) && !empty($_POST['password']) ) {
$user = $_POST['username'] ;
$pass = $_POST['password'] ;
$query = " YOUR QUERY ";
$result = mysql_query($query) or die('SQL ERROR:'.mysql_error());
if (mysql_num_rows($result) > 0) {
//DELETE prints BEFORE header()!! -> echo "query successfull wrote to DB";
$row = mysql_fetch_assoc($result);
unset($_SESSION['userNameSession']);
unset($_SESSION['loginStatus']);
$userName = $row['firstname'].' '.$row['lastname'];
$_SESSION['userNameSession'] = $userName;
$_SESSION['loginStatus'] = '1';
header('location:admin/admin.php');
}else{
//DELETE prints BEFORE header()!! -> echo "unscccessful login";
header('location:index.php');
}
}
有一件重要的事情你必须注意:
不要在header前回显。我认为你的代码应该是这样的:
session_start();
if ( isset( $_POST['username'], $_POST['password'] ) ) {
$user = $_POST['username'] ;
$pass = $_POST['password'] ;
$query = " MY QUERY ";
$result = mysql_query($query) or die('SQL ERROR:'.mysql_error());
$row = mysql_fetch_assoc($result);
if ($row) {
unset($_SESSION);
$userName = $row['firstname'].' '.$row['lastname'];
$_SESSION['userNameSession'] = $userName;
$_SESSION['loginStatus'] = '1';
header('location:admin/admin.php');
}else{
header('location:index.php');
}
}