Autor Zpráva
Milhauscorpse
Profil *
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
,ale ta mi vymaže všechny tagy.
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
Milhauscorpse:
zkus
$text="<b>test</b><i>test</i>";
strip_tags($text,"<b></b>");
Alphard
Profil
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
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 *
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
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 *
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
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);
}

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