php会话不是在第一次登录时创建的

php会话不是在第一次登录时创建的,php,session,logging,Php,Session,Logging,我在设置会话时遇到问题。 每次我提交登录到站点时,都应该创建会话,但事实并非如此,我被重定向到notvalid.php。 会话仅在我第二次尝试登录时创建 session_start()是我网站每页的第一行 以下是连接功能: public static function Login($name, $pass) { if (!empty($name) && !empty($pass)) { global $dbh; $r

我在设置会话时遇到问题。 每次我提交登录到站点时,都应该创建会话,但事实并非如此,我被重定向到
notvalid.php
。 会话仅在我第二次尝试登录时创建

session_start()
是我网站每页的第一行

以下是连接功能:

public static function Login($name, $pass)
    {
    if (!empty($name) && !empty($pass))
        {
        global $dbh;
        $result = $dbh->query("SELECT * FROM users WHERE username = '" . $name . "' AND password = '" . $pass . "'");
        $row = $result->fetch(PDO::FETCH_ASSOC);
        if ($row > 0)
            {
            $userid = $row['userid'];
            $_SESSION['userid'] = $userid;
            $_SESSION['login'] = 'true';
            echo '<META HTTP-EQUIV="Refresh" Content="0; URL=userindex.php">';
            }
          else
            {
            echo "incorrect username or password.";
            $_SESSION['login'] = 'false';
            }
        }
    }
公共静态函数登录($name,$pass)
{
如果(!empty($name)&&!empty($pass))
{
全球$胸径;
$result=$dbh->query(“从username='”、“$name.”和password='”、“$pass.”的用户中选择*”;
$row=$result->fetch(PDO::fetch_ASSOC);
如果($row>0)
{
$userid=$row['userid'];
$\会话['userid']=$userid;
$\会话['login']='true';
回声';
}
其他的
{
echo“用户名或密码不正确。”;
$\会话['login']='false';
}
}
}
此函数用于检查会话是否存在:

public static function checklogin()
    {
    if ($_SESSION['login'] == 'true')
        {
        return $_SESSION['userid'];
        }
      else
        {
        echo '<META HTTP-EQUIV="Refresh" Content="0; URL=notvalid.php">';
        }
    }
公共静态函数checklogin()
{
如果($\会话['login']=='true')
{
返回$_会话['userid'];
}
其他的
{
回声';
}
}
我已经试着进入这个网站,无论有没有www,我都试着按照他们的建议去做

但没有任何帮助


任何帮助都是非常有用的。

显示您的代码在哪里有session_start(),以及它与此代码的关系,否则将准备被否决并作为复制品关闭。经常看到它。SQL注入!将密码存储为纯文本!用户名作为登录令牌!哦,我的。。。!我提出了一个问题,session_start是我所有网站页面的第一行,这证明了session是在我第二次尝试时创建的。如果没有sesson_start();根本不会创建会话。这只是一次试用,当然我会阻止sql注入。。。