2016-08-12 3 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 больше –

+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' может быть наихудшей вещью, но требуется только один аргумент, а не 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.). Это HTML, который вы отправляете в веб-браузер.

HTML - это другой язык для SQL. Правила экранирования разные, даже не совсем разные, они совершенно разные.

Чтобы избежать утечки данных, необходимо использовать htmlspecialchars(), поэтому он подходит для вставки в HTML.

Смежные вопросы