Autor | Zpráva | ||
---|---|---|---|
Milhauscorpse Profil * |
#1 · Zasláno: 6. 8. 2010, 11:39:59
Dobrý den.Chtěl sem se zeptat kterým nejlepším způsobem bych měl vyřešit tento problém:
Z formuláře ukládám data do databáze.A ctěl bych aby uživatel mohl v textarea používat pouze ztučnění písma (<b>) a odkazy (<a href=...).(Teda napsat si tam může co chce,ale aby se mi pak uložily pouze tyto tagy)Použil jsem funkci strip_tags Takže se chci zeptat,jak to ošetřit.Nechci napsat script,pouze poradit jak na ty dva tagy. Děkuji.m |
||
Taps Profil |
#2 · Zasláno: 6. 8. 2010, 11:42:40 · Upravil/a: Taps
Milhauscorpse:
zkus $text="<b>test</b><i>test</i>"; strip_tags($text,"<b></b>"); |
||
Alphard Profil |
#3 · Zasláno: 6. 8. 2010, 11:44:03
Strip_tags() má druhý parametr, ve kterém lze některé tagy povolit. Ale zůstanou v nich všechny parametry, takže se často používají BB kódy (jako tady) a po odeslání to převádí reguláry na html.
|
||
Keeehi Profil |
#4 · Zasláno: 6. 8. 2010, 11:44:05 · Upravil/a: Keeehi
Milhauscorpse:
Přidej do strip_tags 2 nepovinný parametr. Co tam máš přidat? Koukni se do manuálu. Kde ho najít? Klikni na "strip_tags" ve tvém příspěvku. Jinak nechávat uživateli k dispozici tag A je bezpečnostní díra. |
||
Milhauscorpse Profil * |
#5 · Zasláno: 6. 8. 2010, 11:55:25
Taps,Alphard,Keeehi:
KOukal sem do manuálů,s tím druhým parametrem sem si nevěděl rady.S těmito nahrazovacím funkcemi pracuji poprvé,takže sem nevěděl,co by bylo nejlepší.Já to zkoušel takto: $text = ereg_Replace("</b>","[/b]",$text); $text = ereg_Replace("<b>","[b]",$text); ale protože se mi to zdálo trochu složité,tak sem se zeptal na lepší způsob.Díky za radu. Keeehi: Proč je s tím ponecháním možnosti vložit odkaz bezp problém? Mně se třeba zdá,že třeba někde v komentářích je fajn mít možnostvepsat do příspěvku i odkaz . |
||
Keeehi Profil |
#6 · Zasláno: 6. 8. 2010, 12:02:24 · Upravil/a: Keeehi
Milhauscorpse:
A co když ti někdo do příspěvku vloží třeba: <a href="#" onclick="alert('Baf! Toto jsou cookies uložené v tvém prohlížeči:\n'+document.cookie+'\n\nAle k nim bych se dostat přece neměl.'); return false;">klikni</a> ?
|
||
Milhauscorpse Profil * |
#7 · Zasláno: 6. 8. 2010, 12:06:48
Keeehi:
zkusil jsem to a a pouze mi to vypsalo tuto chybu: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Baf! Toto jsou cookies uložené v tvém prohlížeči:\n'+document.cookie+'\n\n' at line 1 |
||
Keeehi Profil |
#8 · Zasláno: 6. 8. 2010, 14:16:30
Milhauscorpse:
To si dej do nějakého testovacího html souboru ne do ereg_Replace(). Je to jen ilustrace toho, co by mohl uživatel do toho komentáře vložit pokud použiješ strip_tags($text,"<a>"); Funkce ereg_Replace je deprecated. Používej raději preg_replace. Můžeš vyzkoušet tuto funkci: function BBcode($text){ $a = array( "/\[i\](.*?)\[\/i\]/is", "/\[b\](.*?)\[\/b\]/is", "/\[u\](.*?)\[\/u\]/is", "/\[img\](.*?)\[\/img\]/is", "/\[url=(?:http:\/\/)?(.*?)\](.*?)\[\/url\]/is", "/\[size=(.*?)\](.*?)\[\/size\]/is", "/\[color=(.*?)\](.*?)\[\/color\]/is", ); $b = array( "<i>$1</i>", "<b>$1</b>", "<u>$1</u>", "<img src=\"$1\" />", "<a href=\"http://$1\" target=\"_blank\">$2</a>", "<font size=$1>$2</font>", "<font color=$1>$2</font>", ); return preg_replace($g, $h, $text); } |
||
Časová prodleva: 14 let
|
0