WordPress自定义登录数据库错误


WordPress custom login database error

我想在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";
        }
    }
?>

我做错了什么?提前谢谢。

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

首先,当你真正这样做时,请使用salt - http://www.md5rainbow.com/5f4dcc3b5aa765d61d8327deb882cf99

其次,您是否检查过您正在散列的密码是否与数据库中的密码匹配(例如,用户不是用盐创建的?

第三,不是引起你的问题,而是使用mysqli

编辑

第四@andrewsi有实际问题,代码中的$sql变量不包含查询。

$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' "