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

时间:2013-01-27 17:03:36

标签: php login error-handling system logout

我的登录系统/登出系统出了问题。

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

当我在IE 9中输入错误的用户名或密码,或者没有输入任何用户名或密码时,我在第19行也会收到以if ($_POST['mittbrukarnamn'] && $_POST['mittpassord'])开头的错误。但在谷歌浏览器中,我没有收到该错误。有人能告诉我这是否是一个安全的系统?我稍后会添加一个代码行,使密码转换为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 = myusername) (mittpassord = mypassword)

5 个答案:

答案 0 :(得分:0)

<?php
  session_start();
?>

<title>Medlem side</title>

不是

<title>Medlem side</title>

<?php
  session_start();

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

登录网站相同。

您没有收到任何错误?

二。您的脚本不能抵御Mysql注入攻击。使用谷歌与PHP Mysql注释短语。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

考虑到您是Register&amp;登录和PHP,我建议你看这个。它必须清除你所有的疑虑!

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

答案 3 :(得分:0)

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

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

答案 4 :(得分: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.";
        }