2011-06-27 8 views
1

このprocess.phpファイルにデータを投稿するユーザ名とパスワードのフォームがあります。しかし、私のコードにあるトラップのエラーは、mysqlクエリに何か問題があることを示唆しています。「ユーザ名とパスワードが一致しません.2秒以内にログインページに戻ります。PHPのヘルプ、なぜこれが動作していないのかわからない

md5は正常に動作しており、すべての行がそこにあり、どのようにしているのかをデータベースの表で確認しました。助言がありますか?ありがとうございました。

<?php 

//Code DavidMaitland.me 2011 
//Process data from the login form 

require('database.php'); 

$username = mysql_real_escape_string($_POST["username"]); 
$password = mysql_real_escape_string(md5($_POST["password"])); 

$client_query = mysql_query("SELECT * FROM clients WHERE client_username='$username' and client_password='$password'") or die (mysql_error()); 
$client_data = mysql_fetch_array($client_query, MYSQL_ASSOC); 

if(mysql_num_rows($client_data) == 1) { 

    session_start(); 
    $_SESSION['client_id'] = $client_data['id']; 

    header('Location: account.php'); 

} else { 

    echo "The username and password don't match. We will take you back to the login page in two seconds."; 
    header('Refresh: 2; url=index.php'); 
} 

?> 

答えて

6

変更この行:

if(mysql_num_rows($client_query) == 1) {

mysql_num_rows()

if(mysql_num_rows($client_data) == 1) {

mysql_query()コールの直接の結果が必要です。

1

mysql_num_rows($client_data)の代わりにmysql_num_rows($client_query)を使用します。

1

変更この部分

if(mysql_num_rows($client_query) == 1) { 

    session_start(); 
    $_SESSION['client_id'] = $client_data['id']; 

    header('Location: account.php'); 

} else { 

    echo "The username and password don't match. We will take you back to the login page in two seconds."; 
    header('Refresh: 2; url=index.php'); 
} 

あなたがフェッチされた配列にはmysql_num_rowsを経由して行数をカウントしているので、あなたの代わりにリソース($のclient_query)でそれをカウントする

関連する問題