Heim  >  Artikel  >  php教程  >  Verwendung der PHP-Funktion mysql_real_escape_string und Beispiel Tutorial_php-Grundlagen

Verwendung der PHP-Funktion mysql_real_escape_string und Beispiel Tutorial_php-Grundlagen

WBOY
WBOYOriginal
2016-05-16 08:59:592792Durchsuche

Escape-Sonderzeichen in unescaped_string unter Berücksichtigung der Verbindungseinstellungen des aktuellen Zeichens, damit es in mysql_query() sicher an seinem Platz ist. Sollen Binärdaten eingefügt werden, muss diese Funktion verwendet werden

Die folgenden Zeichen sind betroffen:

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

Bei Erfolg gibt die Funktion die maskierte Zeichenfolge zurück. Wenn dies fehlschlägt, wird „false“ zurückgegeben.

Grammatik

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

Beschreibung

Diese Funktion maskiert Sonderzeichen in einer Zeichenfolge und berücksichtigt den aktuellen Zeichensatz der Verbindung, sodass die Verwendung mit mysql_query() sicher ist.

Tipps und Hinweise

Tipp: Mit dieser Funktion können Sie Datenbankangriffe verhindern.

Beispiel

Beispiel 1

Code kopieren Der Code lautet wie folgt:

$con = mysql_connect( "localhost", "hello", "321");
if (!$con)
{
die('Verbindung konnte nicht hergestellt werden: ' . mysql_error());
}

// Code zum Abrufen von Benutzername und Passwort

// Escape-Benutzername und Passwort zur Verwendung in SQL
$user = mysql_real_escape_string($user);
$pwd = mysql_real_escape_string($pwd);

$sql = "SELECT * FROM users WHERE
user='"

//Weitere Codes

mysql_close($con);

?>

Beispiel 2

Datenbankangriff. Dieses Beispiel zeigt, was passiert, wenn wir die Funktion mysql_real_escape_string() nicht auf den Benutzernamen und das Passwort anwenden:

Code kopieren Der Code lautet wie folgt:
$con = mysql_connect( "localhost", "hello", "321");
if (!$con)
{
die('Verbindung konnte nicht hergestellt werden: ' . mysql_error());
}

$sql = "SELECT * FROM users

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

// Benutzername und Passwort werden nicht überprüft

// Kann alles sein, was vom Benutzer eingegeben wurde, wie zum Beispiel:
$_POST['user'] = 'john';
$_POST['pwd '] = "' ODER ''='";

// Etwas Code...

mysql_close($con);

?>

Dann sieht die SQL-Abfrage so aus:

SELECT * FROM users

WHERE user='john' AND password='' OR ''='' Dies bedeutet, dass sich jeder Benutzer anmelden kann, ohne ein gültiges Passwort einzugeben.

Beispiel 3

Richtiger Weg, Datenbankangriffe zu verhindern:

Code kopieren Der Code lautet wie folgt:
Funktion check_input ($value )
{
// Schrägstriche entfernen
if (get_magic_quotes_gpc())
{
$value = stripeslashes($value);
}
// If keine Zahl. Dann Anführungszeichen hinzufügen
if (!is_numeric($value))
{
$value = "'" ;
}
return $value;
}

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

if (!$con)
{
die('Verbindung konnte nicht hergestellt werden: ' . mysql_error()) ;
}

// Sicheres SQL ausführen

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

mysql_query($sql);

mysql_close($con);

?>

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn