gpt4 book ai didi

php - 使用 MySQL 和 session 登录

转载 作者:行者123 更新时间:2023-11-29 04:49:15 25 4
gpt4 key购买 nike

我正在学习如何构建登录系统。它并不意味着是最安全的,但它应该可以工作,而不会因为使用 session 而太容易被黑客入侵。

成功登录后,您应该被重定向到索引页面,并且导航中的一些条目应该发生变化(例如登录应该是注销)。

我的导航:

<nav>
<?php
if(!isset($_SESSION["username"])) {echo "<a class='left"; if($section == "login") {echo " active";} echo"' href='index.php?p=login'>Login</a>";}
else {echo "<a class='left"; if($section == "logout") {echo " active";} echo"' href='index.php?p=logout'>Logout</a>";}
?>
</nav>

我的登录表单:

<form action="index.php?p=login_check" method="post">
Username: <input type="text" size="24" maxlength="50" name="username"><br />
Passwort: <input type="password" size="24" maxlength="50" name="password"><br />
<input type="submit" value="Abschicken">
</form>

我的登录验证:

<?php   
$verbindung = mysql_connect("localhost", "root" , "")
or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
mysql_select_db("website") or die ("Datenbank konnte nicht ausgewählt werden");

$username = $_POST["username"];
$password = $_POST["password"];

$abfrage = "SELECT username, password FROM logins WHERE username LIKE '$username' LIMIT 1";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);

if(@$row->password == $password)
{
session_start();
$_SESSION["username"] = $username;
echo "<p>Login erfolgreich.</p>";
}
else
{
echo "<p>Benutzername oder Passwort waren falsch. <a href=\"index.php?p=login\">Login</a></p>";
}
?>

我的注销:

<?php
session_destroy();

$hostname = $_SERVER['HTTP_HOST'];
$path = dirname($_SERVER['PHP_SELF']);
?>

现在,当我回到起始页时,我仍然看到“登录”而不是“注销”。我是否必须在我的索引页面上包含 session_start() 或是否有其他方法来检查我是否已登录?

最佳答案

如果您没有在开头包含 session_start(),那么我的回答是肯定的。您应该在访问 $_SESSION 全局变量的每个页面的开头使用 session_start()

更好的选择是,创建另一个文件并将 session_start 放入其中,然后在您希望 session 工作的任何位置包含此文件。

关于php - 使用 MySQL 和 session 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13801851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com