2013-09-23 60 views
2

我想要自定義登錄我的消費者在WordPress,但得到這個錯誤:WordPress的自定義登錄數據庫錯誤

WordPress database error: [] 
SELECT * FROM wp_members WHERE email='[email protected]' 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"; 
     } 
    } 

?> 

我做錯了嗎?提前致謝。

+1

嘗試'var_dump' $ SQL。這不是你想象的那樣 - 你將它作爲新查詢傳遞給「mysql_query」,但它不是SQL查詢。 – andrewsi

回答

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); 


*/ 

Class Reference wpdb

+0

@downvoters關心評論 –

0

一起來使用salt當你正在做的這是真的 - http://www.md5rainbow.com/5f4dcc3b5aa765d61d8327deb882cf99

其次你檢查,你是哈希匹配的是DB中的密碼(如不與鹽創建的用戶? )

三,不會造成您的問題,但請使用mysqli

編輯

四@andrewsi有實際問題,$sql變種在代碼中不包含您的查詢。

+0

是在數據庫中匹配的密碼[email protected] \t 5f4dcc3b5aa765d61d8327deb882cf99 – user2808421

+0

我幾乎可以肯定@andrewsi有你的問題ID'd。 – Matthew

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