2012-05-15 93 views
-2

上面的代碼面臨挑戰;請幫助:使用php和mySql進行用戶身份驗證

<?php 
    session_start(); 
    $con = mysql_connect("localhost","root",""); 
    if (!$con){ 
     die('Could not connect: ' . mysql_error()); 
    } 

    $db_exist = mysql_select_db("seta", $con); 

    $myUName = $_POST["username"]; 
    $myPwd = $_POST["pwd"]; 
    $loFmUname = strtolower($myUName); 

    if($db_exist){ 
     $sql = "SELECT * FROM Persons WHERE $loFmUname = 'strtolower($db_field['UserName'])' AND $myPwd = '$db_field['UserPwd']'"; 
     $result = mysql_query($sql); 

     if($result){ 
      $_session['loged'] = '$loFmUname'; 
      header('location:index.html'); 
      die(); 
     } 

     else{ 
      echo"Invalid username and/or password please"; 
      echo "<a href='login.php'>try again</a>"; 
     } 

    } 

    else{ 
     echo "Sorry Database Not Found"; 
    } 


mysql_close($con); 
?> 

錯誤被陸續上馬15

注意strtolower()被用來忽略大小寫敏感的用戶名。

+0

什麼是第15行嗎? –

+0

請停止使用古老的'mysql_ *'函數編寫新代碼。他們不再被維護,社區已經開始[棄用流程](http://goo.gl/KJveJ)。相反,您應該瞭解[準備好的語句](http://goo.gl/vn8zQ)並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能決定,[本文](http://goo.gl/3gqF9)將有助於選擇。如果你關心學習,[這裏是一個很好的PDO相關教程](http://goo.gl/vFWnC)。 –

回答

0

更改線路

$sql = "SELECT * FROM Persons WHERE $loFmUname = 'strtolower($db_field['UserName'])' AND $myPwd = '$db_field['UserPwd']'"; 

通過這一個

$sql = "SELECT * FROM Persons WHERE $loFmUname = '".strtolower($db_field['UserName'])."' AND $myPwd = '".$db_field['UserPwd']."'"; 

這可能會幫助你。

感謝

+1

爲了安全起見,我強烈建議在將數據傳遞到數據庫之前調用'mysql_real_escape_string'。 – scragar

+2

或者只使用LOWER() - http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_lower – TigerTiger

+0

thanx jst按照你所說的那樣工作,它的工作原理與第19行相同,看提取\t \t \t \t \t \t如果($結果){ \t \t \t \t $ _SESSION [ 'loged'] = 「$ loFmUname」; \t \t \t \t header('location:index.html'); \t \t \t \t die(); \t \t \t} – maponda1

0

你需要做操作的變量中的變量時,使用點分隔符。

另外,應該是$_SESSION['loged'] = '$loFmUname';那個,還是$_SESSION['logged'] = '$loFmUname';

<?php 
session_start(); 
$con = mysql_connect("localhost","root",""); 
if (!$con){ 
    die('Could not connect: ' . mysql_error()); 
} 

$db_exist = mysql_select_db("seta", $con); 

$myUName = $_POST["username"]; 
$myPwd = $_POST["pwd"]; 
$loFmUname = strtolower($myUName); 

if($db_exist){ 
    $result = mysql_query("SELECT * FROM Persons WHERE $loFmUname='" . strtolower($db_field['UserName']) . "' AND $myPwd='$db_field['UserPwd']' "); 

    if($result){ 
     $_SESSION['loged'] = '$loFmUname'; 
     header('Location: index.html'); 
     die(); 
    } else { 
     echo "Invalid username and/or password please"; 
     echo "<a href='login.php'>try again</a>"; 
    } 
} else { 
    echo "Sorry Database Not Found"; 
} 

mysql_close($con); 
?> 
相關問題