PHP 登录/注销系统无法正常工作


PHP login / logout system does not work correctly

我的登录系统/注销系统有问题。

所以问题是我无法登录。当我输入正确的用户名和密码时,我会被重定向到索引.php而实际上只有在我注销后才会发生这种情况。我认为错误与if (!isset($_SESSION['mittbrukarnamn']))行(mittbrukarnamn = myusername)login_success.php,这将使上述问题,但是当我删除!以使isset不再错误时,我可以登录,但随后注销.php不起作用"。

而且,当我在IE 9中输入错误的用户名或密码时,或者在第19行中输入错误的用户名或密码

,或者没有输入任何用户名或密码时,我还在第19行中收到以if ($_POST['mittbrukarnamn'] && $_POST['mittpassord'])开头的错误。但是在谷歌浏览器中,我没有收到该错误。有人可以告诉我这是否是一个安全的系统吗?稍后我将添加一个代码行,使密码转换为MD5和管理员用户页面。

这是支票.php

    <title>Login side</title>
<?php
session_start();
// 'vert' er det same som 'host' på engelsk (ikkje så viktig).
    $vert = "localhost";
    $brukarnamn = "root";
    $passord = "";
    $db_namn = "login";
    $tbl_namn = "members";
// Tilkobling til MySQL databasen.
    mysql_connect("$vert", "$brukarnamn", "$passord") or die ("Kan dessverre ikkje koble til databasen.");
    mysql_select_db("$db_namn") or die ("Kan ikkje finna den ynkjande tabellen 'namn'.");
?>
<?php
    if ($_POST['mittbrukarnamn'] && $_POST['mittpassord']) {
      $mittbrukarnamn = $_POST['mittbrukarnamn'];
      $mittpassord = $_POST['mittpassord'];
      $sql = "SELECT * FROM $tbl_namn WHERE `brukarnamn` = '$mittbrukarnamn' AND `passord` = '$mittpassord'";
// '$res' forkorting for 'resultat'.
      $res = mysql_query($sql);
// '$tell' er skreve på norsk, og er det same som 'count' på engelsk (f.eks. og telja til 10). Slek ein ikkje     trur da er 'tell' på engelsk; (ikkje så viktig).
      $tell = mysql_num_rows($res);
      if ($tell == 1) {
        $_SESSION['mittbrukarnamn'];
        $_SESSION['mittpassord'];
        header ("location: login_success.php");
  } else {
        echo "Brukarnamnet eller passordet er feil.";
        header ("refresh: 2; index.php");
  }
  } else {
        echo "Vennligst tast inn eit brukarnamn og eit passord.";
        header ("refresh: 2; index.php");
  }
?>

和login_success.php

<title>Medlem side</title>
<?php
  session_start();
    if (!isset($_SESSION['mittbrukarnamn'])) {
        header("location: index.php");
}
?>
<html>
<body>
Du er innlogga.<br />
<a href="logout.php"> Logg ut</a>
</body>
</html>

我希望我已经弄清楚了问题所在。感谢您的任何答案:)

其中一些文字是关于挪威语的。(mittbrukarnamn = myusername)(mittpassord = mypassword)

它对诺顿答案的补充:将 session_start() 放在文件最开头后,

$_SESSION['mittbrukarnamn'];替换为 $_SESSION['mittbrukarnamn']=''; 以设置会话变量。您现在正在做的不会设置会话变量,它只会获取$_SESSION['mittbrukarnamn']

login_success.php文件的开头包含php代码。 session变量应该是该文件中的第一件事。

考虑到您是注册和登录以及PHP的新手,我建议您观看本文。它必须消除你所有的疑虑!

http://www.youtube.com/course?list=ECE134D877783367C7

<?php
  session_start();
?>
<title>Medlem side</title>

<title>Medlem side</title>
<?php
  session_start();

您必须在任何输出之前启动会话。

登录站点相同。

您没有收到任何错误?

第二。您的脚本无法抵抗 Mysql 注入攻击。使用谷歌与PHP Mysql Injection短语。

检查数据库以查看用户名和密码是否存在。

        $query = "SELECT id, username ";
        $query .= "FROM users ";
        $query .= "WHERE username = '{$username}' ";
        $query .= "AND password= '{$password}' ";
        $query .= "LIMIT 1";
        $result_set = mysql_query($query);
        confirm_query($result_set);
        if (mysql_num_rows($result_set) == 1) {
            // username/password authenticated
            // and only 1 match
            $found_user = mysql_fetch_array($result_set);
            $_SESSION['user_id'] = $found_user['id'];
            $_SESSION['username'] = $found_user['username'];
            redirect_to("whereever.php");
        } else {
            // username/password combo was not found in the database
            $message = "Username/password combination incorrect.<br />
                Please make sure your caps lock key is off and try again.";
        }
    } else {
        if (count($errors) == 1) {
            $message = "There was 1 error in the form.";
        } else {
            $message = "There were " . count($errors) . " errors in the form.";
        }