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