Mohl by mi někdo prosím říct, v čem je chyba? Tenhleten kód:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<title>Dokonalejší a bezpečnější diskuse</title>
</head>
<body>
<?
$jmeno = $_POST['jmeno'];
$email = $_POST['email'];
$web = $_POST['web'];
$zprava = $_POST['zprava'];
$jmeno=HTMLSpecialChars($jmeno); //převede některé znaky na entity
$email=HTMLSpecialChars($email);
$web=HTMLSpecialChars($web);
$zprava=HTMLSpecialChars($zprava);
$jmeno=stripslashes($jmeno); //odstraní lomítka
$email=stripslashes($email);
$web=stripslashes($web);
$zprava=stripslashes($zprava);
$zprava = str_replace("\n"," <br> ", $zprava); //nové řádky nahradí <br>
$zprava = substr($zprava, 0, 10000);//zpráva bude mít maximálně 10000 znaků pomocí substr
$email_celek=" | <a href='mailto:$email'>$email</a>";
$web_celek=" | <a href='$web'>$web</a>";
if ($web=="http://"){$web_celek="";} //pokud se nevyplní nic se nevypíše
if ($email==""){$email_celek="";} // -||-
if ($zprava!="" and $jmeno!=""){ //provede se pokud není prázdná zpráva a jméno
$celek="<p>Zprávu poslal <strong>$jmeno</strong>$email_celek $web_celek</p><p>$zprava</p><hr>";
$soubor = fopen ('data-2.inc','a'); //otevře soubor pro doplňování
fwrite ($soubor, $celek); //zapíše zprávu
fclose ($soubor); //zavře soubor
}
?>
<h1>Dokonalejší a bezpečnější diskuse</h1>
<? include "data-2.inc"; ?>
<h2>Přidání zprávy</h2>
<form action="diskuse-2.php" method="post"></p>
<table>
<tr><th>*Jméno: </th><td><input type="text" name="jmeno" maxlength="25"></td></tr>
<tr><th>E-mail: </th><td><input type="text" name="email" maxlength="25"> [nepovinné]</td></tr>
<tr><th>Web: </th><td><input type="text" name="web" value="http://" maxlength="30"> [nepovinné]</td></tr>
<tr><th>*Zpráva: </th><td><textarea cols="60" rows="5" name="zprava"></textarea></td></tr>
<tr><th></th><td><input type="submit" value="odeslat"></td></tr>
</table>
</form>
</body>
</html>
Místo aby se vypsalo všechno jak má,vypíše se toto:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<title>Dokonalejší a bezpečnější diskuse</title>
</head>
<body>
<?
$jmeno = $_POST['jmeno'];
$email = $_POST['email'];
$web = $_POST['web'];
$zprava = $_POST['zprava'];
$jmeno=HTMLSpecialChars($jmeno); //převede některé znaky na entity
$email=HTMLSpecialChars($email);
$web=HTMLSpecialChars($web);
$zprava=HTMLSpecialChars($zprava);
$jmeno=stripslashes($jmeno); //odstraní lomítka
$email=stripslashes($email);
$web=stripslashes($web);
$zprava=stripslashes($zprava);
$zprava = str_replace("\n", "<br>" , $zprava); //nové řádky nahradí <br>
$zprava = substr($zprava, 0, 10000);//zpráva bude mít maximálně 10000 znaků pomocí substr
$email_celek=" | <a href='mailto:$email'>$email</a>";
$web_celek=" | <a href='$web'>$web</a>";
if ($web=="http://"){$web_celek="";} //pokud se nevyplní nic se nevypíše
if ($email==""){$email_celek="";} // -||-
if ($zprava!="" and $jmeno!=""){ //provede se pokud není prázdná zpráva a jméno
$celek="<p>Zprávu poslal <strong>$jmeno</strong>$email_celek $web_celek</p><p>$zprava</p><hr>";
$soubor = fopen ('data-2.inc','a'); //otevře soubor pro doplňování
fwrite ($soubor, $celek); //zapíše zprávu
fclose ($soubor); //zavře soubor
}
?>
<h1>Dokonalejší a bezpečnější diskuse</h1>
<? include "data-2.inc"; ?>
<h2>Přidání zprávy</h2>
<form action="diskuse-2.php" method="post"></p>
<table>
<tr><th>*Jméno: </th><td><input type="text" name="jmeno" maxlength="25"></td></tr>
<tr><th>E-mail: </th><td><input type="text" name="email" maxlength="25"> [nepovinné]</td></tr>
<tr><th>Web: </th><td><input type="text" name="web" value="http://" maxlength="30"> [nepovinné]</td></tr>
<tr><th>*Zpráva: </th><td><textarea cols="60" rows="5" name="zprava"></textarea></td></tr>
<tr><th></th><td><input type="submit" value="odeslat"></td></tr>
</table>
</form>
</body>
</html>
a já absolutně nevím proč, díky předem.
Fórum › PHP
Chyba v str_replace
príčin môže byť viacej.... ak berem k úvahe, že to spúšťaš na osvedčenom "funkčnom" webhostingu (nie na localhoste s mizerne nastaveným Apachom a PHP), tak by som tipoval, že na stroji je nastavené PHP s short_open_tag = Off. To znamená, že musíš použiť otvárací tág <?php, nie skrátený zápis <?.
nebylo by lepsi pouzivat misto toho str_replace funkci nl2br? :)
jo a jeste mozna trochu zprehledneni kodu:
$web = str_replace("http://","",$web); // odstraneni http:// - vysvetlim za kodem
if (!empty($web)) $web_celek = " | <a href='http://".$web."'>".$web."</a>"; // pokud neni $web prazdny, tak se ulozi co potrebujes
else $web_celek = ""; // jinak je promenna prazdna
if (!empty($email)) $email_celek = " | <a href='mailto:".$email."'>".$email."</a>";
else $email_celek = "";
tak ted k tomu odstraneni http://, pokud je to odkaz na jinou stranku a to http:// nekdo nevyplni, tak se odkaz otevre ve tvaru
http://www.tvojestranka.cz/www.dalsistranka.cz
coz hodi chybu, kdyz to http:// odstranis a vlozis ho tam natvrdo, tak se vyvarujes kontroly, jeslti to http:// vsichni zadali
Zjistit počet nových příspěvků
Přidej příspěvek
Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 7 hostů
Podobná vlákna
Str_replace? — založil x-flyer
Str_Replace() — založil Milan
Str_Replace — založil Michal115
Obmedzeny str_replace — založil dalaman
Str_replace problem — založil Anonym
Moderátoři diskuze