Autor Zpráva
Welton123
Profil
Zdravím, píšu si vlastní web a chci se zeptat, jak zamezit v komentářích html/js/php tagy? Předem děkuji :/
han5vk
Profil
V php si vstup uložíš po prejdení funkciou htmlspecialchars($vstup). Zmení to ostré zátvorky, úvodzovky a ampersand na entity. Skončí to tak, že síce sa ti vo výpise komentáru zobrazí kód čo tam človek napísal, ale nevykoná sa. Napríklad napíšem komentár "<img src='haťaťapa://nieco/logo.png/'>" a zobrazí sa ten kód, nie obrázok.
Welton123
Profil
Díky moc, funguje! :)))

Ještě bych se chtěl zeptat. Ukládám do DB text a potřebuji, aby se do DB uložilo max. 20 míst i s mezerama. Nikde nemohu najít návod :/
Micruss
Profil
v db dej varchar 20
han5vk
Profil
Neviem teda čo sa snažíš dosiahnuť, ale podľa mňa je lepšie ako oseknúť zadaný text v mySQL to najprv skontrolovať v php a povedať používateľovi že zadal pridlhý string. Samozrejme varchar s dĺžkou 20 v danom stĺpci v databáze môže ostať.

$vstup=" vstup ktorý je dlhší ako 20 znakov ";
if(strlen($vstup)>20) {
  echo "zadali ste pridlhý vstup!";
}
else {
  //Uloženie do DB
}

Samozrejme, netreba zabúdať vstup od používateľa (napríklad z formulára) escapovať.


Ešte k htmlspecialchars() - Ak vstup escapuješ pred zápisom do DB, tak by bolo lepšie volať htmlspecialchars() až pri výpise, nie uložení. Po prvé, v databáze je jedno či máš uložené html či php. A podruhé entity zaberajú viac miesta ako tie špeciálne znaky.
Duchaplny
Profil
han5vk:
Samozrejme, netreba zabúdať vstup od používateľa (napríklad z formulára) escapovať.

prípadne použiť mysqli prepared statements alebo PDO prepared statements
Welton123
Profil
Děkuji mnohokrát za všechny rady.
pcmanik
Profil
Welton123:
Strlen nepoužívaj - počíta dvojbajtové znaky - č, š, ď... Ako dva znaky. mb_strlen() už plní svoj účel.
Taktiež ako tu zaznelo htmlspecialchars() sa používa na výstupe a nie na vstupe.
Na ošetrie dát do databázy použi prepared statements, alebo escapuj znaky.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0