Forum » Programiranje » [php] mysql_escape_string
[php] mysql_escape_string
jure1825 ::
Torej imam en problem z podatkom ,ki ga dobim preko POST-a in bi ga rad dal v bazo.
$opis = mysql_escape_string($_POST['opis']);
$query = "UPDATE dogodki SET opis='$opis' WHERE id=$id LIMIT 1;";
$db_mysql = new db_mysql;
$db_mysql->connect();
$odg = $db_mysql->query($query);
Problem je, če napišem v opis npr 'Angelina Jolie's boobs' mi bo mysql_escape_sring spremnil ' v \'. OK, to sem hotel, ampak ko gre to v bazo pride v bazo \' namesto samo '
Zakaj oz. kako to popravim?
$opis = mysql_escape_string($_POST['opis']);
$query = "UPDATE dogodki SET opis='$opis' WHERE id=$id LIMIT 1;";
$db_mysql = new db_mysql;
$db_mysql->connect();
$odg = $db_mysql->query($query);
Problem je, če napišem v opis npr 'Angelina Jolie's boobs' mi bo mysql_escape_sring spremnil ' v \'. OK, to sem hotel, ampak ko gre to v bazo pride v bazo \' namesto samo '
Zakaj oz. kako to popravim?
[MYTiX] ::
Uporabi stripslashes ob branju iz baze. Sicer pa raje uporabljaj mysql_real_escape_string.
podpis
Alpheus ::
Mislim, da je problem v tem, da maš vkloplen magic_quotes_gpc, ki povzroči, da se vsi apostrofi, narekovaji, backslashi in NULL vrednosti escapajo iz POST, GET in COOKIE. Potem pa še tvoja scripta vse še enkrat escapa celo, torej če imaš Angelina Jolie's boobs ti najprej avtomatično escapa na Angelina Jolie\'s boobs pol pa še tvoja scripta na Angelina Jolie\\\'s boobs, kar gre v bazo kot Angelina Jolie\'s boobs (prej je bil escapan tako backslash (prva dva) kot '(tretji + ').
Vrednost magic_quotes_gpc lahk preveriš z get_magic_quotes_gpc().
Drugače pa je tudi v manualu lepa skripta...
function quote_smart($value)
{
// Stripslashes
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
// Quote if not a number or a numeric string
if (!is_numeric($value)) {
$value = "'" . mysql_real_escape_string($value) . "'";
}
return $value;
}
... ki ti escapa enkrat ne glede na magic_quotes_gpc.
Vrednost magic_quotes_gpc lahk preveriš z get_magic_quotes_gpc().
Drugače pa je tudi v manualu lepa skripta...
function quote_smart($value)
{
// Stripslashes
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
// Quote if not a number or a numeric string
if (!is_numeric($value)) {
$value = "'" . mysql_real_escape_string($value) . "'";
}
return $value;
}
... ki ti escapa enkrat ne glede na magic_quotes_gpc.
VI VERI VENIVERSUM VIVUS VICI.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [php] Knjiga gostovOddelek: Izdelava spletišč | 3158 (2361) | darix |
» | sql injection [PHP + mysql]Oddelek: Informacijska varnost | 1857 (1582) | Lion29 |
» | Težave z vpisovanje v mysql bazo z phpOddelek: Izdelava spletišč | 1037 (913) | Atos |
» | [php, mysql] sortiranje izpisa iz bazeOddelek: Izdelava spletišč | 2661 (2180) | Binji |
» | PHP: addslashes/stripslashes v formiOddelek: Izdelava spletišč | 1134 (1071) | OwcA |