Autor Zpráva
it47
Profil
Ahojte,

v komentaroch sa mi objavil na webe prispevok, ktory ma lomitko pred dvojitmi uvodzovkami, vid priklad:

\"slovo v uvodzovkach\"

Pozeram, ze v databaze su az tri lomitka pred uvodzovkami.

Viete mi prosim vysvetlit, ako mohla nastat tato situacia z pohladu pouzivatela?

Skusam pridat komentar s uvodzovkami akokolvek, mne tam lomitka nikdy neprida.

Viete prosim kde mote byt problem?

Vopred dakujem velmi pekne.

it47
anonym_
Profil *
it47:
Ukaž, jak data do DB ukládáš. Vznikat to může všelijak, chyba bude v ukládání dat.
it47
Profil
anonym:
if (!get_magic_quotes_gpc()) {
        $text_spravy = addslashes($text_spravy);
}

Aha, vstup osetrujem takto. Tu funkciu get_magic_quotes_gpc() by som asi nemal pouzivat, vsak?
anonym_
Profil *
it47:
Aha, vstup osetrujem takto. Tu funkciu get_magic_quotes_gpc() by som asi nemal pouzivat, vsak?
Ano, tento asi 20 let starý kód způsobuje to, co způsobuje.

Databázová data se ošetřují jinak (záleží na použité DB vrstvě).
it47
Profil
anonym:
Databaza je MariaDB (MyISAM)

staci, ked budem vstup osetrovat takto:

addslashes($text_spravy)

Ci su potrebne aj dalsie osetrenia?
Radek9
Profil
it47:
staci, ked budem vstup osetrovat takto: addslashes($text_spravy)
Ne, nepoužívej tuhle funkci. Je prakticky k ničemu. Jak psal anonym, data, která putují do DB, se ošetřují jinak. Pokud např. používáš MySQLi, tak mysqli_real_escape_string. Nastuduj si dokumentaci.
anonym_
Profil *
it47:
staci, ked budem vstup osetrovat takto:
Přesně ta funkce addslashes tam ty lomítka přidává. To o řádek výše je jen podmínka, ta nic nepřidává.

Jen doplním Radka, zmíněná funkce (mysqli_real_escape_string) se týká ošetření stringů. Ale o ošetření dat putujících do DB toho bylo napsáno už mnoho na mnoha místech.
it47
Profil
anonym, Radek9:
Dakujem vam velmi pekne za odpovede, viete mi prosim napisat, kde by som si mohol nastudovat o osetreni dat putujucich do DB?

Vopred dakujem velmi pekne.

it47
Kajman
Profil
www.php.net/manual/en/mysqli.quickstart.prepared-statements.php

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0