2016-08-12 138 views
-1

爲什麼mysql_real_escape_string不能在這段代碼中工作?爲什麼mysql_real_escape_string在這段代碼中不起作用?

正常情況下,當加載頁面輸入將看起來像這樣。

http://image.free.in.th/v/2013/ie/160812064246.jpg 

但是當你加載www.example.com/test.php?value_1=">

頁爲什麼輸入這個樣子的。

http://image.free.in.th/v/2013/ia/160812064312.jpg 

我該怎麼辦?

test.php的

<?PHP 
include("connect.php"); 
$ex_search_value = mysql_real_escape_string($_GET['value_1']); 
?> 

<input placeholder="PLEASE ENTER" value="<?PHP echo $ex_search_value; ?>" style=" margin: 0px; width: 810px;height: 33px;line-height: 17px;line-height: 33px\0;^line-height: 33px;padding: 0px;margin-right: -1px;padding-left: 5px;-webkit-box-shadow: 0 2px 3px rgba(0,0,0,0.1);-moz-box-shadow: 0 2px 3px rgba(0,0,0,0.1); box-shadow: 0 2px 3px rgba(0,0,0,0.1); "> 
+1

你真的不應該再使用mysql API了 – 2016-08-12 06:40:38

+0

你必須在'mysql_real_escape_string'中傳遞連接變量 – Saurabh

+0

[偉大的逃避現實(或:你需要知道如何處理文本中的文本)](http:// kunststube.net/escapism/) – deceze

回答

-2

MySQL的API已被棄用,你真的不應該用它嘗試使用mysqli的

這句法 mysqli_real_escape_string(connection,escapestring); 它需要連接對象和字符串你想逃離

一個很好的例子是這樣的

<?php 
    $con=mysqli_connect("localhost","my_user","my_password","my_db"); 
    // Check connection 
    if (mysqli_connect_errno()) { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

    // escape variables for security 
    $firstname = mysqli_real_escape_string($con, $_POST['firstname']); 
    $lastname = mysqli_real_escape_string($con, $_POST['lastname']); 
    $age = mysqli_real_escape_string($con, $_POST['age']); 

    $sql="INSERT INTO Persons (FirstName, LastName, Age) 
    VALUES ('$firstname', '$lastname', '$age')"; 

    $query = mysqli_query($con, $sql); 

    if (!mysqli_query($con,$sql)) { 
    die('Error: ' . mysqli_error($con)); 
    } 
    echo "1 record added"; 
    mysqli_close($con); 
?> 
+1

絕對錯誤,'mysql_real_escape_string'可能是最糟糕的事情,但它只需要1個參數,而不是2。這裏使用的函數是基於'mysqli' –

1

mysql_real_escape_string轉義數據,以便您可以安全地將它放入SQL查詢中,然後發送給MySQL。

value="<?PHP echo $ex_search_value; ?>" 

這不是SQL:(NB mysql_real_escape_string is part of an obsolete API you should have stopped using about half a decade ago)。這是您發送到Web瀏覽器的HTML。

HTML是與SQL不同的語言。逃避的規則是不同的,甚至沒有微妙的差別,它們完全不同。

您需要使用htmlspecialchars()才能轉義數據,因此適合插入到HTML中。

相關問題