我是PHP的新手,并且在用户会话方面遇到了一些麻烦。
我有一个ask_login.php
页面,我只是要求用户通过表单输入他/她的登录详细信息。
一旦他/她登录,我想保存他/她的登录会话,直到他/她决定退出。
但由于某种原因,我无法保存用户会话,因为我尝试在导航到网站的其他部分时打印用户名,并且用户名未显示。
这是我的代码:
ask_login.php
<h1>Login</h1>
<form method="post" action="login.php">
<p><input type="text" name="username" value="" placeholder="UserID"></p>
<p><input type="password" name="password" value="" placeholder="Password"></p>
<input type="submit" name="commit" value="Login"></p>
</form>
的login.php
<?php
session_start();
$username = $_POST['username'];
$password = $_POST['password'];
if(!empty($username) && !empty($password)) {
$queryget = mysql_query("SELECT * FROM users WHERE id='$username' AND password='$password'");
$numrows = mysql_num_rows($queryget);
if($numrows != 0) {
//save session
$_SESSION['id'] = $username;
} else if (empty($username) || empty($password)){
echo "Wrong username/password";
echo "<script>alert('Username/Password are incorrect');</script>";
echo "<script language='javascript'>window.location = 'ask_login.php';</script>";
}
}
?>
logout.php
<?php
session_start();
session_destroy();
header('Location: index.php');
?>
答案 0 :(得分:2)
您应该在要使用数组$_SESSION
的每个页面上启动会话。
要测试是否存在会话中的信息,请执行以下操作:
session_start();
print_r($_SESSION);
答案 1 :(得分:1)
您只能将用户ID存储在$_SESSION
:
$_SESSION['username'] = $username;
此外,您需要每时间致电session_start()
。因此,大多数PHP程序员使用每次调用的header.php
文件,并在页面的开头进行一些簿记。