2012-09-18 38 views
1

我一直在嘗試過去四天才能得到這個工作。這只是一個簡單的登錄頁面,沒有存儲敏感信息,但我遇到了PHP問題。PHP MySQL列無效

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    $uname = $_POST["login"]; 
    $pword = $_POST["pass"]; 
    $uname = htmlspecialchars($uname); 
    $pword = htmlspecialchars($pword); 
    $user_name = "bradf294_access"; 
    $password = "********"; 
    $database = "bradf294_clients"; 
    $server = "localhost"; 
    $db_handle = mysql_connect($server, $user_name, $password); 
    $db_found = mysql_select_db($database, $db_handle); 
    print(mysql_errno()); 
    print($db_found); 
    if(isset($db_found)){ 
     print($db_found."Success"); 
     $SQL = "SELECT * FROM basicinfo WHERE ref = $uname AND pass = $pword"; 
     $result = mysql_query($SQL); 
     print("Query made"); 
     print(mysql_errno()); 
     if ($result) { 
      print("result:".$result); 
     } 
     else { 
      print("Incorrect Login Details"); 
     } 
     if ($result > 0) { 
      print("found user"); 
      $errorMessage= "logged on "; 
      session_start(); 
      $_SESSION['login'] = "1"; 
      header ("Location: progressuser.php"); 
     } 
     else { 
      print("Invalid Logon"); 
     } 
    } else { 
     print("Database not found. The Webmaster has been notified. Please try again later"); 
     $subject = "Automated login error" ; 
     $message = "An error occured whilst trying to connect to the MySQL database, to login to the progress checker" ; 
     mail("[email protected]", $subject, $message); 
    } 

從我一直在使用中要調試的頁面上的輸出,這似乎是它似乎並不奏效,這都給人一種錯誤1054線 - 「未知列「%s的「在‘​​%s’的」

$SQL = "SELECT * FROM basicinfo WHERE ref = $uname AND pass = $pword"; 
$result = mysql_query($SQL) 

即使我複製並粘貼$SQL串入phpMyAdmin的它完美地工作?

有沒有什麼公然明顯的我做錯了?去http://www.bradfieldandbentley.co.uk/test/progress.php並輸入詳細信息參考:TST001並通過:dnatbtr121來看看你自己的輸出。

+0

你能顯示錶basicinfo嗎? – JvdBerg

+0

你的PHP大括號不平衡。確保您的代碼示例在語法上正確非常重要。 –

回答

2

您需要引用了變量:

$SQL = "SELECT * FROM basicinfo WHERE ref = '$uname' AND pass = '$pword'"; 

無論其

mysql_*功能被棄用 - 你應該看看移動PDOmysqli_*代替。這些都使你更容易編寫安全的代碼,併爲你解決報價問題。

+0

啊這麼簡單!謝謝你,你會推薦任何資源嗎? –

+0

有很多關於php.net的信息 - PDO頁面在http://php.net/manual/en/intro.pdo.php和mysqli快速入門指南在http://php.net/manual/ EN/mysqli.quickstart.php – andrewsi

0

WHERE條件中的值是否應該不像引號一樣被包圍,就像在正常的MySQL語句中一樣?是。另外,你將會得到一堆關於SQL注入的評論。

+0

謝謝,是的,我意識到它根本就不安全!我不打算在數據庫上存儲任何有價值的信息! –