Fungtion PHP mysql_real_escape_string()

Maelezo na Tumiaji

Fungtion mysql_real_escape_string() inasababisha mashabiki ya inayotumika katika maelezo ya SQL.

Mashabiki yaliyotumiwa yanaathirika:

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

Ili kuonesha, hii inaonesha inayotumika kwa kusababisha. Ikiwa inafai, inatumia inayotumika kwa kusababisha. Ikiwa inafai, inatumia inayotumika kwa kusababisha.

Inasababisha

mysql_real_escape_string(string,connection)
Inasababisha Inasababisha
string Inahitaji. Inaeleza kwa sababu ya ukingoa wa kitamaduni. Ikiwa hatuwezi kubadilisha, inatumiwa kwa ukingoa wa kinaingia wa hivi.
connection Inaagiza. Inaeleza kwa sababu ya ukingoa wa MySQL. Ikiwa hatuwezi kubadilisha, inatumiwa kwa ukingoa wa kinaingia wa hivi.

Inasababisha

Hii inaonekana... string kwa kuziita mashabiki kwa hatua, na kuijua ukingoa wa kitamaduni cha hatua hivi, kwa sababu inaweza kutumiwa kwa umemezi mysql_query().

Inaruhusu na Mtaarifu

Inaruhusu:Inaweza kutumia hii msingi kuitika taharukia kwa hifadhi ya data.

Mfano

Mfano 1

<?php
$con = mysql_connect("localhost", "hello", "321");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
// Kinaingia kwa hatua kwa jina la mtumiaji na nishati
// Kusema jina la mtumiaji na nishati kwa hatua, kwa sababu inaweza kutumiwa katika SQL
$user = mysql_real_escape_string($user);
$pwd = mysql_real_escape_string($pwd);
$sql = "SELECT * FROM users WHERE
user='" . $user . "' AND password='" . $pwd . "'"
// Mashindani zaidi
mysql_close($con);
?>

Mfano 2

Taharukia kwa hifadhi ya data. Mfano huu unaeleza kwa sababu hatuwezi kutumia mysql_real_escape_string() kwa jina la mtumiaji na nishati:

<?php
$con = mysql_connect("localhost", "hello", "321");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
$sql = "SELECT * FROM users
WHERE user='{$_POST['user']}'
AND password='{$_POST['pwd']}'";
mysql_query($sql);
// Hatarisha jina la mtumiaji na nishati
// Inaweza kuwa kinaingia inayotumiwa na mtumiaji, kama niweze:
$_POST['user'] = 'john';
$_POST['pwd'] = "' OR ''='";
// Mashindani...
mysql_close($con);
?>

Tungu ambao SQL inayofanya niweze kufikia hivi:

SELECT * FROM users
WHERE user='john' AND password='' OR ''=''

Hii inamaanisha kwamba watu wote hawajahitaji kuingia namba ya nywila ya halali kufikia kuingia.

Mfano 3

Njia za kawaida za kumwambia uharibifu wa database:

<?php
function check_input($value)
{
// Kufichia barabara
if (get_magic_quotes_gpc())
  {
  $value = stripslashes($value);
  }
// Ikiwa haitakuwa namba, kongezea herufi
if (!is_numeric($value))
  {
  $value = "'" . mysql_real_escape_string($value) . "'";
  }
return $value;
}
$con = mysql_connect("localhost", "hello", "321");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
// Kufanya SQL ya uadilifu
$user = check_input($_POST['user']);
$pwd = check_input($_POST['pwd']);
$sql = "SELECT * FROM users WHERE
user=$user AND password=$pwd";
mysql_query($sql);
mysql_close($con);
?>