2016-08-12 3 views
-1

Pourquoi mysql_real_escape_string ne fonctionne pas dans ce code?Pourquoi mysql_real_escape_string ne fonctionne pas dans ce code?

Normalement, lorsque l'entrée de la page de chargement ressemblera à ceci.

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

Mais Lorsque vous chargez la page www.example.com/test.php?value_1=">

Pourquoi regarder d'entrée comme celui-ci.

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

Comment puis-je faire?

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

vous devriez vraiment pas utiliser l'API MySQL plus –

+0

Vous devez passer la variable de connexion 'mysql_real_escape_string' – Saurabh

+0

[Le Grand Escapism (Ou: Ce que vous devez savoir pour travailler avec du texte dans le texte)] (http: // kunststube.net/escapism/) – deceze

Répondre

-2

API MySQL est dépréciée, vous devriez vraiment pas l'utiliser essayer d'utiliser mysqli

c'est la syntaxe mysqli_real_escape_string(connection,escapestring); prend l'objet de connexion et la chaîne que vous veulent échapper

un bon exemple est cette

<?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

Absolument faux, 'mysql_real_escape_string' peut être la pire chose de tous les temps, mais cela ne prend que 1 argument, pas 2. La fonction utilisée ici est' mysqli' –

1

mysql_real_escape_string échappe des données afin que vous puissiez le mettre en toute sécurité dans une requête SQL que vous envoyez ensuite à MySQL.

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

Ce n'est pas SQL: (NB mysql_real_escape_string is part of an obsolete API you should have stopped using about half a decade ago.). C'est le HTML, que vous envoyez à un navigateur Web.

HTML est une langue différente de SQL. Les règles d'échappement sont différentes, pas même subtilement différentes, elles sont complètement différentes.

Vous devez utiliser htmlspecialchars() pour échapper des données, donc il est adapté pour l'insertion en HTML.