2

WordPress でコンシューマ用のカスタム ログインを作成したいのですが、次のエラーが発生します。

WordPress database error: []
SELECT * FROM wp_members WHERE email='example@example.org' and password='5f4dcc3b5aa765d61d8327deb882cf99'
Wrong Username or Password


<?php
    $email1 = $_POST['email'];
    $password = $_POST['password'];
    $encrypted_mypassword=md5($password);
    $email = $_POST['email'];
    $password = $_POST['password'];


    if(isset($_POST['submit'])) {
        global $wpdb;
        $table_name = $wpdb->prefix . "members";
        $wpdb->show_errors();
        $sql= $wpdb->get_results(" SELECT * FROM $table_name WHERE email='$email1' and password='$encrypted_mypassword' ");
        $wpdb->print_error();

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

        // 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("email");
            session_register("encrypted_mypassword"); 
            header("location:login_success.php");
        }
        else {
            echo "Wrong Username or Password";
        }
    }

?>

私が間違っていることは何ですか?前もって感謝します。

4

3 に答える 3

0
$sql= $wpdb->get_results  ->remove this line

これはテーブルから情報を取得するため、$sql はクエリには適していません。

  $result=mysql_query($sql)  

ここの $sql は

$sql=" SELECT * FROM $table_name WHERE email='$email1' and password='$encrypted_mypassword' "
于 2013-09-23T19:09:59.490 に答える
0

salt実際にこれを行うときは、最初に a を使用します - http://www.md5rainbow.com/5f4dcc3b5aa765d61d8327deb882cf99

次に、ハッシュしているパスワードが DB にあるものと一致することを確認しましたか (たとえば、ユーザーはソルトで作成されていませんか?)

第三に、問題の原因ではありませんが、使用してくださいmysqli

編集

4 番目の @andrewsi には実際の問題があり$sqlます。コード内の var にクエリが含まれていません。

于 2013-09-23T19:06:55.573 に答える
0

Wordpress$wpdb->get_resultsは、この関数の結果を使用できないクエリに対してデータを返します。mysql_query()

データが含まれているcount()かどうかを確認するために使用できます$sql

$count=count($sql);

これらを削除します

/*
$result=mysql_query($sql);
        // Mysql_num_row is counting table row
        $count=mysql_num_rows($result);


*/

クラスリファレンス wpdb

于 2013-09-23T19:13:00.520 に答える