Autor Zpráva
p3t3r
Profil *
Zdravim, ktoru funkciu pouzivat??
addslashes alebo mysql_real_escape_string ?
ci je to skoro to iste? alebo ake su vyhody a nevyhody pri nich, podla vas ktoru z nich je vyhodnejsie pouzivat?
Alphard
Profil
podle toho, co chceš udělat, cituji manuál:

addslashes
Opatřit řetězec lomítky

mysql_real_escape_string
Upraví řetězec pro bezpečné použití v mysql_query.
p3t3r
Profil *
ved o to ide, ze obidve opatria retazec spetnymi lomitkami, teda ja osobne nevidim rozdiel medzi:

$retazec = addslashes($_POST["retazec"]);

alebo

$retazec = mysql_real_escape_string($_POST["retazec"]);

a potom to vlozim do databazy: mysql_query("insert into tabulka set abc='$retazec'");

Tak preto sa pytam, ktore je vyhodnejsie pouzivat ... konkretne pri vkladani do databazy!!! (viem ze logicky by to malo byt mysql_real_escape_string, ale nie je jedno ktore z toho pouzijem? )
TFSi
Profil *
magic quotes on? ;)
nightfish
Profil
mysql_real_escape_string() calls MySQL's library function mysql_real_escape_string, which prepends backslashes to the following characters: \x00, \n, \r, \, ', " and \x1a.

This function must always (with few exceptions) be used to make data safe before sending a query to MySQL.


mysql_real_escape_string() volá knihovní funkci mysql mysql_real_escape_string, která přidá zpětné lomítko před následující znaky: \x00, \n, \r, \, ', " a \x1a.

Tato funkce musí být vždy (kromě několika výjimek) použita k zabezpečení dat před odesláním dotazu mySQL serveru.

Returns a string with backslashes before characters that need to be quoted in database queries etc. These characters are single quote ('), double quote ("), backslash () and NUL (the NULL byte).

addslahes: Vrací řetězec, který obsahuje zpětná lomítka před znaky, které musí být oescapovány v databázových dotazech apod. Těmito znaky jsou jednoduché (') a dvojité (") uvozovky, zpětné lomítko a znak NUL (byte s ASCII hodnotou 0).

rozdíl mezi těmito funkcemi nechť si laskavý čtenář odvodí sám
p3t3r
Profil *
takze este otazka:
mysql_real_escape_string() mi staci pouzivat iba (len) pri tych dotazoch na databazu , v ktorych prichadzaju premenne od uzivatela? teda pri selectoch do ktorych uzivatel nezasahuje, to nemusim pouzivat, ak som spravne pochopil.

teda ak pouzijem spominanu funkciu mysql_real_escape_string(), tak addslashes uz nemusim pouzivat?
Vopred vdaka za odpoved(e), a koncim s otazkami :-)
nightfish
Profil
vzhledem k tomu, že mysql_real_escape_string() upraví znaky, jež jsou nadmnožinou znaků, které upraví addslahes, tak stačí použít tu první funkci

mysql_real_escape_string() mi staci pouzivat iba (len) pri tych dotazoch na databazu , v ktorych prichadzaju premenne od uzivatela?
v podstatě ano, protože předpokládám, že sám na sebe v aplikaci útočit nebudeš...
Toto téma je uzamčeno. Odpověď nelze zaslat.