0

我正在尝试登录并设置会话 id。下面的代码没有成功验证登录,也没有设置会话 id。请帮忙。

  public $userid;

  function login()
    {
        $pwdHasher = new PasswordHash(8, FALSE);

        if(isset($_POST['logging'])  AND  !empty($_POST['logging'])){


            $email=mysqli_real_escape_string($this->db->connection ,$_POST['email']);
            $pass=mysqli_real_escape_string($this->db->connection ,$_POST['pass']);
            $sql=mysqli_query($this->db->connection,"SELECT * FROM user where email='$email' AND password='$pass'");
            $numrows=mysqli_num_rows($sql);
            $resid=mysqli_fetch_array($sql);
            $checked = $pwdHasher->CheckPassword($pass,$numrows);
            if($checked){
                $this->userid=$_SESSION['id']=$resid['id'];

                $this->login=TRUE;


                echo "u r logedin.Plz click here to go  to main area<a href='main.php'>main</a>";
            }
            else{
                echo "username r password is wrong";
                $this->login=FALSE;
            }
        }
    }
4

2 回答 2

1

您需要session_start()在使用 $_SESSION 数组之前启动会话

于 2012-11-21T17:22:14.117 回答
0

您可能会错过session_start()PHP 脚本开头的 。如果您有一个包含在每个文件中的通用文件,那么只需添加session_start()到开头即可。

如果您没有公共文件并且添加一个文件太难,您可以修改该php.ini文件以必须session.auto_start为您启动会话。

如果您无法访问该php.ini文件并且您正在使用 apache 作为 Web 服务器,那么您可以通过添加以下内容来修改/添加该.htaccess文件到您的根目录DOCUMENT_ROOTphp_flag session.auto_start 1

查看这些链接,它们可能会帮助您更好地理解会话并找出它不起作用的原因

于 2012-11-21T17:47:06.253 回答