微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP会话为空

我在PHP中创建了一个简单的登录功能.
我的问题是当浏览器访问页面login_success.PHP时没有会话属性

在checklogin.PHP中的会话中存储数据后,我通过输入以下内容检查它是否包含任何数据:print_r($_ SESSION); ,这打印2个对象.但是,当我尝试在login_success.PHP中执行相同操作时,它会显示为空.

我使用xampp和safari.

的login.PHP

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<Meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Login</title>
</head>

<form name="form1" method="post" action="checklogin.PHP">
<input name="tb_username" type="text"/>
<input name="tb_password" type="password" />
<input type="submit" name="Submit" value="Login">
</form>

<body>
</body>
</html>

checklogin.PHP

<?PHP

$host="localhost"; // Host name 
$username="root"; // MysqL username 
$password=""; // MysqL password 
$db_name="test"; // Database name 
$tbl_name="user"; // Table name 

// Connect to server and select database.
MysqL_connect("$host", "$username", "$password")or die("cannot connect"); 
MysqL_select_db("$db_name")or die("cannot select DB");

// username and password sent from form 
$myusername=$_POST['tb_username']; 
$mypassword=$_POST['tb_password']; 

// To protect MysqL injection
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = MysqL_real_escape_string($myusername);
$mypassword = MysqL_real_escape_string($mypassword);
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=MysqL_query($sql);

// MysqL_num_row is counting table row
$count=MysqL_num_rows($result);

// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){

// Register $myusername, $mypassword and redirect to file "login_success.PHP"
$_SESSION['myusername']= "myusername";
$_SESSION['mypassword']= "mypassword";

//print_r($_SESSION);

header("location:login_success.PHP");
}
else {
echo "Wrong Username or Password";
}
?>

login_success.PHP

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?PHP
session_start();
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<Meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>

<?PHP print_r($_SESSION); ?>
<body>
</body>
</html>

解决方法:

根据PHP文档:session_start

session_start() creates a session or resumes the current one based on a session identifier passed via a GET or POST request, or passed via a cookie.

因此,将session_start()添加到checklogin.PHP页面的顶部.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐