我忙于登录系统,当我想测试它时,我注册了。那很有效。我的登录详细信息插入到数据库中,就像一个魅力。然后register()
函数将我的详细信息传递给login()
函数,该函数将我记录下来,并将我重定向到索引页。
那部分一切正常,但是当我想检查我是否通过检查$_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();
}
正如你所看到的;登录成功后,它会启动会话,设置$_SESSION
变量,然后将其重定向到index.php
。要预先形成一个简单的“我登录后”#39;检查,我用菜单:
<?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
}
?>
但它始终显示正常菜单,该菜单应在用户未登录时显示。
通过提出这个问题我的目标:
谢谢,
韦斯利。
答案 0 :(得分:1)
在任何其他代码之前,session_start()
必须位于BOTINNING BOTH文件中。
答案 1 :(得分:0)
您必须使用session_start();
变量在每个文件中写$_SESSION
!
我建议您将session_start();
放在使用$_SESSION
变量的每个文件的第3行(您不必将它放在第3行,但在使用它之前!)。
如果您的菜单位于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
}
?>