PHP不保存用户会话

时间:2014-04-13 01:04:09

标签: php session

我是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');
?>

2 个答案:

答案 0 :(得分:2)

您应该在要使用数组$_SESSION的每个页面上启动会话。
要测试是否存在会话中的信息,请执行以下操作:

session_start();
print_r($_SESSION);

答案 1 :(得分:1)

您只能将用户ID存储在$_SESSION

$_SESSION['username'] = $username;

此外,您需要每时间致电session_start() 。因此,大多数PHP程序员使用每次调用的header.php文件,并在页面的开头进行一些簿记。