2010-03-02 22 views
0

我只是一個初學者,我的代碼出了什麼問題,我試圖對此進行試驗,以便我要創建的網頁不會受到mysql注入的攻擊。什麼是這樣做的正確方法:試圖創建一個mysql注入證明腳本

<?php 



$host="localhost"; 
$username="root"; 
$password=""; 
$db_name="testing"; 
$tbl="hospital"; 

$connection=mysql_connect($host, $username, $password) or die("cannot connect!"); 
mysql_select_db($db_name, $connection) or die("cannot select db!"); 


    $LASTNAME = $_POST[lname]; 
    $FIRSTNAME = $_POST[fname]; 



    $FIRSTNAME=(isset($_POST['fname']||trim($_POST['fname'])=="")?die('Error:Enter Firstname!') 
                     mysql_escape_string(trim($_POST['fname'])); 




     $sqlque="INSERT INTO hospital (LASTNAME, FIRSTNAME) 
     VALUES ('$LASTNAME', '$FIRSTNAME')"; 






if (!mysql_query($sqlque,$con)) 
    { 
    die('Error: ' . mysql_error()); 
    } 
echo "<script>alert('Record successfully added!')</script>"; 



mysql_close($con) 


?> 

這裏的錯誤,請幫忙,謝謝:

Parse error: parse error, expecting `','' or `')'' in C:\wamp\www\sql injection check\aisaction.php on line 20 
+0

您在第一個isset上缺少一個paren。 (isset($ _ POST [ 'FNAME'] **)** ||修剪($ _ POST [ 'FNAME'])== 「」) – 2010-03-02 01:40:45

回答

1

有缺失裸片後:(「錯誤:輸入名字」)

1

只是針對遇到此問題的任何人的更新。現在首選的方法是使用PDO http://php.net/manual/en/book.pdo.php並準備好陳述。

具體來說,MySQL擴展已經不再或者很快就不會在PHP中得到支持。 PDO也比MySQL或MySQLi更便攜。

$db = new PDO(/*connection info*/); 
$sql = "SELECT * FROM tbl WHERE condition1 = :param1 AND condition2 = :param2"; 

$stmt = $db->prepare($sql); 
$stmt->bindValue(":param1", 10); 
$stmt->bindValue(":param2", "banana"); 

$stmt->execute();