繁体   English   中英

使用MySQL和Sessions登录

[英]Login using MySQL and Sessions

我正在学习如何构建登录系统。 它并不意味着最安全,但它应该工作,而不会通过使用会话太容易被黑客攻击。

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

我的导航:

<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_start()应该在每个页面的顶部使用$_SESSION变量。 另外,不建议使用mysql扩展名。 它很快就会被弃用。 我会考虑使用PDO

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM