2012-07-14 12 views
1

我已經編寫了一個PHP腳本,用於通過電子郵件和密碼進行身份驗證,因爲電子郵件被標識爲唯一。如果通過身份驗證可以回顯名字

我想echo「true」以及echo :: fname(First Name)。我怎麼寫它?以下是我的PHP代碼。

include "db_config.php"; 

$email = $_POST['email']; 
$password = $_POST['password']; 

$sql = "select fname,e_mail,password from user where e_mail = '$email' and pwd = '$password' "; 

$result = mysql_query($sql); 

if (mysql_num_rows($result) > 0){ 
    echo "true"; 
} 
else{ 
    echo "Login Failed"; 
} 

如果你能告訴我一些更好的方法來寫這段代碼,請讓我知道。

+0

你應該使用'mysqli_'功能,而不是'mysql_'。 – j0k 2012-07-14 17:01:55

+4

如果你使用舊的'mysql_ *'函數,那麼你應該總是用'mysql_real_escape_string()'來逃避你的輸入!但我會建議你使用PDO或MySQLi擴展。 – ComFreek 2012-07-14 17:01:59

+1

密碼字段:'bob'OR 1 = 1;'' – 2012-07-14 17:03:52

回答

2

考慮有關mysql_ *和mysql_real_escape_string的意見,但你得到你的結果後,您回聲它這樣,adapted from the manual

$result = mysql_query($sql); 
if (!$result) { 
    echo "Could not successfully run query ($sql) from DB: " . mysql_error(); 
    exit; 
} 

if (mysql_num_rows($result) == 0) { 
    echo "No rows found, nothing to print so am exiting"; 
    exit; 
} 

$row = mysql_fetch_assoc($result); 
echo "true" . $row['fname']; 
+0

對不斷的編輯....試圖習慣在iPad上做這件事 – GDP 2012-07-14 17:13:04

+0

;)它的kool:)....以任何方式做你知道...現在在我的android,我得到的回聲,如果(str.toString()。equalsIgnoreCase( 「true」)){} n做某事。以及如何獲得fname字符串? – Loshi 2012-07-14 17:49:18

+0

不知道任何關於android的東西,只是使用PHP將它分配給一個字符串:$ mystring = $ row ['fname'],然後用它做任何你想要的。 – GDP 2012-07-14 18:38:54

1
if (mysql_num_rows($result) > 0) 
{ 
    echo mysql_result($result, 0); 
} 

- 或 -

的代碼Sankalp'sGDP's的答案。 (mysql_fetch_array)
mysql_result不好,如果你想顯示很多結果,這只是其中的一小部分。


順便說一句,我想你指向你的代碼中的一些疏漏:

  • ,你應該檢查,如果每個$_POST$_GET變量使用issetempty設置。

  • 你的代碼太不安全了!在查詢中使用它之前,您應該轉義每個變量。爲此,使用mysql_real_escape_string()。我也建議你使用strip_tags()以及逃跑。


檢查的實施例,如果變量被設置

使用isset()

if(isset($_POST['email'])) $email = $_POST['email']; 
if(isset($_POST['password'])) $password = $_POST['password']; 

empty()使用

if(!empty($_POST['email'])) $email = $_POST['email']; 
if(!empty($_POST['password'])) $password = $_POST['password']; 
0
$row = mysql_fetch_array($result, MYSQL_NUM) 
echo $row[0]; //fname 
echo $row[1]; //email 

,或者您可以使用MYSQL_ASSOC獲得命名的數組和訪問值

echo $row['fname'];