Php 登录系统不';我认不出我是';登录';
我正忙于登录系统,当我想测试它时,我注册了。成功了。我的登录详细信息被插入数据库,就像一个符咒。然后,Php 登录系统不';我认不出我是';登录';,php,session,Php,Session,我正忙于登录系统,当我想测试它时,我注册了。成功了。我的登录详细信息被插入数据库,就像一个符咒。然后,register()函数将我的详细信息传递给login()函数,该函数将我登录,并将我重定向到索引页 这部分都可以工作,但是当我想通过检查$\u SESSION变量是否设置来检查我是否真正登录时,它没有显示是否设置了 这是执行登录的功能: public function login() { $postusername = $_POST['username'];
register()
函数将我的详细信息传递给login()
函数,该函数将我登录,并将我重定向到索引页
这部分都可以工作,但是当我想通过检查$\u SESSION
变量是否设置来检查我是否真正登录时,它没有显示是否设置了
这是执行登录的功能:
public function login()
{
$postusername = $_POST['username'];
$postpassword = $_POST['passwordp'];
$this->errors = array();
$query = $this->db->conn->prepare('SELECT naam, pass, email FROM ht_users WHERE naam = ?');
$query->bind_param('s', $postusername);
$query->execute();
$query->bind_result($username, $password, $email);
$query->store_result();
if ($query->num_rows > 0)
{
while ($query->fetch())
{
if (password_verify($postpassword, $password))
{
//$sessionid = $this->newSession($username);
session_start();
$_SESSION['user'] = array(
'username' => $username,
'email' => $email
);
header('Location: index.php');
exit();
}
else
{
$this->errors[] = 'Invalid Password';
}
}
}
else
{
$this->errors[] = 'Username/email not found NIGGUH';
}
return $this->errors;
exit();
$query->close();
}
如你所见;登录成功后,它会启动一个会话,设置$\u session
变量,然后将我重定向到index.php
。要执行简单的“我是否已登录”检查,我使用了以下菜单:
<?php
if (!isset($_SESSION['user']))
{
?><ul class="submenu-holder">
<li><a href="login.php">Inloggen</a></li>
<li><a href="register.php">Registreren</a></li>
<li><a href="#">Gebruikerslijst</a></li>
<li><a href="#">Alle badges</a></li>
<li><a href="#">Forum</a></li>
<li><a href="#">Wachtwoord vergeten</a></li>
</ul>
<?php
}
else
{
?><ul class="submenu-holder">
<li>INGELOGD</li>
</ul>
<?php
}
?>
- 英格洛德
但它总是显示正常菜单,应该在用户未登录时显示
我的目标是问这个问题:
- 我是否犯了任何可能导致此问题的错误
- 代码是否正确,如果不正确,如何改进
Wesley。会话开始()需要在两个文件的开头,在任何其他代码之前。您必须编写
会话开始()在wehre中的每个文件中,使用$\u SESSION
变量
我建议您将session_start()使用$\u SESSION
变量,在每个文件的第一行添加code>(您不必将它放在第一行,但在使用它之前!)
如果您的菜单位于index.php
中,则它将如下所示:
<?php
session_start();
if (!isset($_SESSION['user'])) {
?>
<ul class="submenu-holder">
<li><a href="login.php">Inloggen</a></li>
<li><a href="register.php">Registreren</a></li>
<li><a href="#">Gebruikerslijst</a></li>
<li><a href="#">Alle badges</a></li>
<li><a href="#">Forum</a></li>
<li><a href="#">Wachtwoord vergeten</a></li>
</ul>
<?php
} else {
?>
<ul class="submenu-holder">
<li>INGELOGD</li>
</ul>
<?php
}
?>
- 英格洛德
您必须在下一个文件中再次启动会话!因此,index.php文件中的第一行应该是:session_start();您是否也在index.php
页面上启动了会话?您需要session_start()代码>在两页的开头。从技术上讲,它只需要在任何输出之前。