0

私はテスト プロジェクトに取り組んでおり、PHP と Mysql などについてもっと学ぼうとしています。そのため、テスト Web サイト用の認証エンジンを構築することにしましたが、クエリに問題があります。

基本、走れば…

SELECT * FROM users WHERE name="tester" and passwd=md5('pass');

mysqlコンソールから、私は得る...

+--------+---------------+----------------------------------+
| name   | email         | passwd                           |
+--------+---------------+----------------------------------+
| tester | test@test.com | 1a1dc91c907325c69271ddf0c944bc72 |
+--------+---------------+----------------------------------+
1 row in set (0.00 sec)

ただし、PHP コード (以下を参照) から同じクエリ (少なくとも同じだと思います) を発行すると、結果が NULL になっているように見え、認証に失敗します。

<?php
    include 'db_connect.php';

    $username = $_POST['username'];
    $passwd = $_POST['passwd'];

    // To protect MySQL injection (more detail about MySQL injection)
    //$username = stripslashes($username);
    //$passwd = stripslashes($passwd);
    //$username = mysql_real_escape_string($username);
    //$passwd = mysql_real_escape_string($passwd);

    //Encrypted password
    $secpasswd = md5($passwd);

    $sql="SELECT * FROM users WHERE name='$username' and passwd = $secpasswd";

    $result=mysql_query($dbconnect,$sql);
    var_dump($result);

    // Mysql_num_row is counting table row
    $count=mysql_num_rows($result);
    //var_dump($count);

    // If result matched $myusername and $mypassword, table row must be 1 row
    if($count==1){

        // Register $myusername, $mypassword and redirect to file "login_success.php"
        session_register("username");
        session_register("passwd"); 
        header("location:login_success.php");
        }
    else {
        echo "Wrong Username or Password";
        }
    ob_end_flush();
?>
4

4 に答える 4