0

物事を学ぶためにPHPとMySqlをいじっているだけです...今まではすべてうまくいきましたが、今は解決策が見つかりません。ベースは非常にシンプルなログイン システムです。ここで、テーブル「userTBL」とフィールド「username」および「password」を使用して、「login」というデータベースからユーザー名とパスワードを読み取ろうとしました。

 <?php 
    session_start();

    mysql_connect ('localhost', 'root', 'root') or die('NO MYSQL CONNECTION!');
    mysql_select_db('login');  

    if ($_GET['login']) {
        $username = ($_POST['username']);
        $password = ($_POST['password']);

        $tmp = mysql_query("SELECT * FROM `user`");

        $data = mysql_fetch_array($tmp);

        if($tmp) {
            echo 'FULL<br />';
        } else {
            echo 'EMPTY<br />';
        }

        $_SESSION['username'] = $data['username'];
        $_SESSION['password'] = $data['password'];

         if ($username == $_SESSION['username'] && $password == $_SESSION['password']) {
             $_SESSION['loggedin'] = true;
             header("Location: protected.php");
             exit;
         } else echo "Wrong details!<br />";
    }
    if ($_SESSION['loggedin'] == true) {
        header("Location: protected.php"); 
    }
?>

データベースは何も返さないように見えますが、なぜですか?!?!

ご協力いただきありがとうございます!

4

2 に答える 2

1

あなたのテーブルは「userTBL」と呼ばれていると言いましたが、テーブル「user」に対してクエリを実行しています。クエリを次のように変更します: $tmp = mysql_query("SELECT * FROM userTBLWHERE username = {$username} AND password = {$password}"); 「WHERE」句により、フォームに入力されたユーザー名とパスワードに一致するデータのみがクエリによって返されることが保証されます。

于 2013-06-16T07:39:46.967 に答える
0
    <?php 
    session_start();

    mysql_connect ('localhost', 'root', 'root') or die('NO MYSQL CONNECTION!');
    mysql_select_db('login');  

    if ($_GET['login']) {
        $username = htmlspecialchars($_POST['username']);
        $password = htmlspecialchars($_POST['password']);

        $tmp = mysql_query('SELECT * FROM `userTBL` WHERE `user` = "'.$username.'"');

        while ($data = mysql_fetch_array($tmp))
        {
            $_SESSION['username'] = $username;
            $_SESSION['password'] = $data['password'];

         if ($password == $_SESSION['password']) {
             $_SESSION['loggedin'] = true;
             header("Location: protected.php");
             exit;
         } else echo "Wrong details!<br />";
         }
    }
    if ($_SESSION['loggedin'] == true) {
        header("Location: protected.php"); 
    }
?>

また、salt + hashを使用して、パスワードをデータベースに保存します。

于 2012-09-19T21:09:42.163 に答える