Maison  >  Article  >  php教程  >  Utilisation de la fonction php mysql_real_escape_string et exemple de base de tutoriel_php

Utilisation de la fonction php mysql_real_escape_string et exemple de base de tutoriel_php

WBOY
WBOYoriginal
2016-05-16 08:59:592817parcourir

Échappez les caractères spéciaux dans unescaped_string, en prenant en compte les paramètres de connexion du caractère actuel afin qu'il soit bien en place dans mysql_query(). Si des données binaires doivent être insérées, cette fonction doit être utilisée

Les caractères suivants sont concernés :

  • x00
  • n
  • r
  • '
  • "
  • x1a

En cas de succès, la fonction renvoie la chaîne échappée. En cas d'échec, renvoie false.

Grammaire

mysql_real_escape_string(string,connection)
参数 描述
string 必需。规定要转义的字符串。
connection 可选。规定 MySQL 连接。如果未规定,则使用上一个连接。

Description

Cette fonction échappe aux caractères spéciaux dans une chaîne et prend en compte le jeu de caractères actuel de la connexion, elle peut donc être utilisée en toute sécurité avec mysql_query().

Conseils et remarques

Astuce : Vous pouvez utiliser cette fonction pour empêcher les attaques de bases de données.

Exemple

Exemple 1

Copier le code Le code est le suivant :

$con = mysql_connect( "localhost", "hello", "321");
if (!$con)
{
die('Impossible de se connecter : ' . mysql_error());
}

// Code pour obtenir le nom d'utilisateur et le mot de passe

// Échapper au nom d'utilisateur et au mot de passe à utiliser dans SQL
$user = mysql_real_escape_string($user);
$pwd = mysql_real_escape_string($pwd);

$sql = "SELECT * FROM users WHERE
user='" $user . "' AND password='" $pwd .

//Plus de codes

mysql_close($con);

?>

Exemple 2

Attaque de base de données. Cet exemple montre ce qui se passe si nous n'appliquons pas la fonction mysql_real_escape_string() au nom d'utilisateur et au mot de passe :

Copier le code Le code est le suivant :
$con = mysql_connect( "localhost", "hello", "321");
if (!$con)
{
die('Impossible de se connecter : ' . mysql_error());
}

$sql = "SELECT * FROM utilisateurs

WHERE user='{$_POST['user']}'
AND password='{$_POST['pwd']}'";
mysql_query($sql);

// Ne vérifie pas le nom d'utilisateur et le mot de passe

// Peut être n'importe quel élément saisi par l'utilisateur, tel que :
$_POST['user'] = 'john';
$_POST['pwd '] = "' OU ''='";

// Du code...

mysql_close($con);

?>

Ensuite, la requête SQL ressemblera à ceci :

SELECT * FROM users

WHERE user='john' AND password='' OR ''='' Cela signifie que tout utilisateur peut se connecter sans saisir de mot de passe valide.

Exemple 3

Méthode correcte pour empêcher les attaques de bases de données :

Copier le code Le code est le suivant :
fonction check_input ($value )
{
// Supprimer les barres obliques
if (get_magic_quotes_gpc())
{
$value = stripslashes($value);
}
// Si pas un nombre Ensuite, ajoutez des guillemets
if (!is_numeric($value))
{
$value = "'" mysql_real_escape_string($value) ''";
}
return. $valeur ;
}

$con = mysql_connect("localhost", "hello", "321");

if (!$con)
{
die('Impossible de se connecter : ' . mysql_error()) ;
}

// Effectuer du SQL sécurisé

$user = check_input($_POST['user']);
$pwd = check_input($_POST['pwd']);
$sql = " SELECT * FROM utilisateurs WHERE
user=$user AND password=$pwd";

mysql_query($sql);

mysql_close($con);

?>

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn