会话变量未进入另一个内部文件 PHP
Session variable not getting in another inner file PHP
我有一个登录表单,当用户输入用户名和密码时,它会指向 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()
请帮忙。
您必须注意的一件重要事情:
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');
}
}
希望对您有所帮助。
你为什么要做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');
}
}
我有一个登录表单,当用户输入用户名和密码时,它会指向 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()
请帮忙。
您必须注意的一件重要事情:
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');
}
}
希望对您有所帮助。
你为什么要做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');
}
}