Autor | Zpráva | ||
---|---|---|---|
Rudy Profil |
#1 · Zasláno: 2. 8. 2012, 22:51:54
Dobrý den,
Vytvořil jsem si návštěvní knihu v php. Jediný problém je, že se do textového pole vloží smajlící v podobě textu např.<IMG SRC=\"smileys/9.gif\" alt=\"\">. Je to tím, že mám na 135 řádku zakodovány znaky html ($vzkaz = HTMLSpecialCHars($vzkaz);). Když, tento řádek smažu, tak se smajlíci zobrazí v grafické podobě, ale bylo mi řečeno, že se toto nemá dělat zdůvodu bezpečnosti, jelikož by mi někdo mohl lehce ovládnout web. Kód <html><body> <?php $action = $_POST['action']; $jmeno = $_POST['jmeno']; $mail = $_POST['mail']; $vzkaz = $_POST['vzkaz']; $kontrola = $_POST['kontrola']; function antispam($email, $jmeno){ $return = "<script type=\"text/javascript\"><!--\ndocument.write('<a href=\"' + 'mailto:' + '"; for($i=0;$i<strlen($email);$i++){ $code .= $email{$i}=='@' ? "' + '".ord("@")."' + '" : "".ord($email{$i}).";"; } $return .= $code."' + '\">' + '".$jmeno."' + '<\/a>');\n--></script>"; RETURN $return; } ?> <form method="post" action="kniha.php" name="f"> <table><tr><td>jméno:</td> <input type="hidden" value="uloz" name="action" /> <td><input type="text" name="jmeno" value="<?php echo $jmeno ?>" size="50" /</td> </tr><tr><td>e-mail:</td> <td><input type="text" name="mail" value="<?php echo $mail ?>" size="50" /></td> </tr><tr></tr> <tr><td valign="top">Vzkaz</td> <td><textarea name="vzkaz" cols="40" value="<?php echo $vzkaz ?>" rows="5"><?php echo $vzkaz ?> </textarea></td></tr> <tr><td></td><td>Ochrana proti spamu: 4 plus 5 = <input type="text" name="kontrola" value="<?php echo $kontrola ?>" size="8" /> </td> <tr><td></td><td> <input type="submit" value="odeslat"></td> </tr> </table> </form> <table> </td></tr> <tr><td> <font size="2"><font color="008000"> <script type="text/javascript"> function Smile(what) { document.forms.f.vzkaz.focus(); document.forms.f.vzkaz.value=document.forms.f.vzkaz.value+what; } </script> <b>Smajlíci: <img onclick="Smile('**01 ')" src="smileys/1.gif"> <img onclick="Smile('**01 ')" src="smileys/2.gif"> <img onclick="Smile('**01 ')" src="smileys/3.gif"> <img onclick="Smile('**01 ')" src="smileys/4.gif"> <img onclick="Smile('**01 ')" src="smileys/5.gif"> <img onclick="Smile('**01 ')" src="smileys/6.gif"> <img onclick="Smile('**01 ')" src="smileys/7.gif"> <img onclick="Smile('**01 ')" src="smileys/8.gif"> <img onclick="Smile('**01 ')" src="smileys/9.gif"> <img onclick="Smile('**01 ')" src="smileys/10.gif"> <img onclick="Smile('**01 ')" src="smileys/11.gif"> <img onclick="Smile('**01 ')" src="smileys/12.gif"> <img onclick="Smile('**01 ')" src="smileys/13.gif"> <img onclick="Smile('**01 ')" src="smileys/14.gif"> <img onclick="Smile('**01 ')" src="smileys/15.gif"> <img onclick="Smile('**01 ')" src="smileys/16.gif"> </center> </font></b> <?php //zde se ptame, zda byla odeslana pomoci formulare promenna $text if(isset($vzkaz)): /* a zde jiz nahrazujeme urcitz smajlik nasim obrazkem umistenym ve stejne slozce jako nas skript*/ $vzkaz = str_replace("**01", "<IMG SRC=\"smileys/1.gif\" alt=\"\">", $vzkaz); $vzkaz = str_replace("**02", "<IMG SRC=\"smileys/2.gif\" alt=\"\">", $vzkaz); $vzkaz = str_replace("**03", "<IMG SRC=\"smileys/3.gif\" alt=\"\">", $vzkaz); $vzkaz = str_replace("**04", "<IMG SRC=\"smileys/4.gif\" alt=\"\">", $vzkaz); $vzkaz = str_replace("**05", "<IMG SRC=\"smileys/5.gif\" alt=\"\">", $vzkaz); $vzkaz = str_replace("**06", "<IMG SRC=\"smileys/6.gif\" alt=\"\">", $vzkaz); $vzkaz = str_replace("**07", "<IMG SRC=\"smileys/7.gif\" alt=\"\">", $vzkaz); $vzkaz = str_replace("**08", "<IMG SRC=\"smileys/8.gif\" alt=\"\">", $vzkaz); $vzkaz = str_replace("**09", "<IMG SRC=\"smileys/9.gif\" alt=\"\">", $vzkaz); $vzkaz = str_replace("**10", "<IMG SRC=\"smileys/10.gif\" alt=\"\">", $vzkaz); $vzkaz = str_replace("**11", "<IMG SRC=\"smileys/11.gif\" alt=\"\">", $vzkaz); $vzkaz = str_replace("**12", "<IMG SRC=\"smileys/12.gif\" alt=\"\">", $vzkaz); $vzkaz = str_replace("**13", "<IMG SRC=\"smileys/13.gif\" alt=\"\">", $vzkaz); $vzkaz = str_replace("**14", "<IMG SRC=\"smileys/14.gif\" alt=\"\">", $vzkaz); $vzkaz = str_replace("**15", "<IMG SRC=\"smileys/15.gif\" alt=\"\">", $vzkaz); $vzkaz = str_replace("**16", "<IMG SRC=\"smileys/16.gif\" alt=\"\">", $vzkaz); endif; ?> <?php if ($action=='uloz'): $soubor = "kniha.body.php"; @$ext = fopen($soubor, "r"); @$obsah = fread($ext, filesize($soubor)); @FClose($ext); if($kontrola != "9"): echo "<h6>_patná odpov__</h6>"; elseif(($vzkaz=="") or ($jmeno=="")): echo "<h6>Nejsou vypln_ny po_adované údaje</h6>"; else: $ext = fopen("kniha.body.php", "w"); $mail = HTMLSpecialCHars($mail); if($mail == "") $mail = ""; else $mail = antispam($mail,$mail); $jmeno = HTMLSpecialCHars($jmeno); $vzkaz = HTMLSpecialCHars($vzkaz); $tab = "<tr><td width=\"300\" >".$jmeno."</td> <td align=\"right\">".Date(" d/m/Y H:i:s")."</td> </tr><tr><td colspan=\"2\">".$vzkaz."</td> </tr><tr><td width=\"150\">".$mail."</td> </tr><tr><td colspan=\"2\"><hr size=\"1\"></td> </tr>"; fputs($ext, "$tab"); fputs ($ext, "$obsah"); FClose($ext); @$ext = fopen("kniha.body.php", "r"); @fpassThru($ext); endif; else: @$ext = fopen("kniha.body.php", "r"); @fpassThru($ext); endif; ?> </table> </body> </html> |
||
ShiraNai7 Profil |
#2 · Zasláno: 3. 8. 2012, 12:38:15
Tak smajlíky nahrazuj až po tom, co voláš htmlspecialchars().
|
||
Rudy Profil |
#3 · Zasláno: 3. 8. 2012, 15:34:51
ShiraNai7:
To jsem zkoušel, ale pořád nic. |
||
Časová prodleva: 11 let
|
0