Autor | Zpráva | ||
---|---|---|---|
Welton123 Profil |
#1 · Zasláno: 27. 8. 2013, 17:34:51
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 |
#4 · Zasláno: 27. 8. 2013, 18:03:47
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 |
#6 · Zasláno: 27. 8. 2013, 18:48:05
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 |
#7 · Zasláno: 27. 8. 2013, 19:35:59
Děkuji mnohokrát za všechny rady.
|
||
pcmanik Profil |
#8 · Zasláno: 27. 8. 2013, 20:38:10
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. |
||
Časová prodleva: 11 let
|
0