1

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

所以问题是我无法登录。当我输入正确的用户名和密码时,我会被重定向到 index.php,而这实际上只会在我注销后才会发生。我认为错误是在 login_success.php 中的if (!isset($_SESSION['mittbrukarnamn']))行,(mittbrukarnamn = myusername),这将导致上述问题,但是当我删除!所以isset不再是假的时,我可以登录但 logout.php 没有“工作”。

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

这是check.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 = 我的用户名) (mittpassord = 我的密码)

4

5 回答 5

0
<?php
  session_start();
?>

<title>Medlem side</title>

不是

<title>Medlem side</title>

<?php
  session_start();

您必须在任何输出之前开始会话。

在登录站点中相同。

你没有得到任何错误?

第二。您的脚本不能抵抗 Mysql 注入攻击。使用 google 和 PHP Mysql 注入短语。

于 2013-01-27T17:06:09.787 回答
0

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

于 2013-01-27T17:08:25.717 回答
0

考虑到您是 Register & Login 和 PHP 的新手,我建议您观看此内容。它必须消除你所有的疑惑!

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

于 2013-01-27T17:08:33.260 回答
0

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

替换$_SESSION['mittbrukarnamn'];$_SESSION['mittbrukarnamn']='';设置会话变量。你现在所做的并没有设置会话变量,它只是得到$_SESSION['mittbrukarnamn']

于 2013-01-27T17:16:04.030 回答
0

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

        $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.";
        }
于 2013-08-03T16:10:42.420 回答