Autor | Zpráva | ||
---|---|---|---|
laky941 Profil |
#1 · Zasláno: 9. 6. 2012, 16:17:20
Dobrý den dělám své první vebové stránky http://zaklinac.funsite.cz/index.php a mám problém s diskuzí s databázemi jestě neumím tak jsem se ji rozhodl udělat přes *.txt soubor ale vyskytl se mi problem s podmínkami jak mam nastavit if a kam bych ho měl umístit tak aby se mi odesílal text z formuláře po kliknutí na tlačítko odeslat a pouze pokud je formulář vyplněný ?
<form action="diskuze.php" method="post"> <table align=center width=400 height=100> <th> <b>Jméno:</b> </th> <th> <input type="text" name="jmeno" size="25" maxlength="25"> </th> <tr> <th> <b>Text:</b> </th> <th> <textarea name="text" cols="50" rows="5"></textarea> </th> </tr> <th colspan="2"> <input type="submit" value="Odeslat" name="odeslano"/> </th> </table> </form> <hr /> <div id="diskuze"> <?php $filename = 'Diskuze.txt'; $velikost=filesize($filename); $cteni = fopen($filename, "r"); $i = fread($cteni,$velikost); fclose($cteni); $zapis = fopen($filename, "w"); { fwrite ($zapis, "<p class=jmeno><b>"); fwrite ($zapis, $_POST["jmeno"]); fwrite ($zapis, "</b> : "); fwrite ($zapis, date("G:i:s - j.n.Y")); fwrite ($zapis, "</p><br />"); fwrite ($zapis, "<p>"); fwrite ($zapis, $_POST["text"]); fwrite ($zapis, "</p><br />"); fwrite ($zapis, $i); fclose ($zapis); } ?> <br /> <?php include ("Diskuze.txt"); ?> </div> |
||
Darker Profil |
#2 · Zasláno: 9. 6. 2012, 16:32:54
if(isset($_POST["odeslano"])) { /**zápis do souboru**/ } 1. Odeslané příspěvky projeď funkcí htmlspecialchars, aby ti uživatelé nemohli posílat do stránky HTML. 2. Nikdy neměň velikost textu při najetí myší. 3. Efekt změny obrázku při najetí myší se dá udělat pomocí CSS pseudotřídy :hover a vlastnosti background. 4. Možná jen překlep, ale středník za HTML vlastnosti nepatří: <img src="Mec.png" width="750" height="80"; >
|
||
laky941 Profil |
if(isset($_POST["odeslano"])) { /**zápis do souboru**/ } A jeste prosím jestli by jste mohl trozku blíze vysvetlit co jste mysliel funkcí htmlspecialchars a jak jí do kódu zakomponovat |
||
Someone Profil |
#4 · Zasláno: 9. 6. 2012, 16:41:37
Darker:
To co uvedl Darker zajistí, že se script zpracuje pouze tehdy, když je formulář odeslaný.. Pokud bys chtěl zajistit aby se odeslal jen tehdy kdy jsou uvedené všechny údaje tak: if (!empty($_POST['text']) && !empty($_POST['text'])) { // odeslat } |
||
laky941 Profil |
#5 · Zasláno: 9. 6. 2012, 17:02:24
Použil jsem tedy
if (!empty($_POST['text']) && !empty($_POST['jmeno'])) { fwrite ($zapis, "<p class=jmeno><b>"); fwrite ($zapis, $_POST["jmeno"]); fwrite ($zapis, "</b> : "); fwrite ($zapis, date("G:i:s - j.n.Y")); fwrite ($zapis, "</p><br />"); fwrite ($zapis, "<p>"); fwrite ($zapis, $_POST["text"]); fwrite ($zapis, "</p><br />"); fwrite ($zapis, $i); fclose ($zapis); } A stále zůstává problém s tím že pokud něco napíšete do diskuze tak to tam zůstává jen do doby než stránku opustíte jakmile se pak znovu vrátíte diskuze zas prázdná |
||
Darker Profil |
#6 · Zasláno: 9. 6. 2012, 17:12:46 · Upravil/a: Darker
if (!empty($_POST['text']) && !empty($_POST['jmeno'])) { $soubor="diskuse.txt"; $text = "<p class=jmeno>".htmlspecialchars($_POST["jmeno"])." : ".date("G:i:s - j.n.Y")."</p>\n"; $text.= "<p>".htmlspecialchars($_POST["text"])."</p>\n\n"; file_put_contents($soubor, file_get_contents($soubor).$text); } Vymazání diskuse pravděpodobně způsobilo to, že se soubor diskuse.txt na řádku 38 otevře a pak nezavře - diskuse není vymazaná ale nedostupná v systému. Pokud chceš používat funkci fwrite, dělej to alespoň tak, abys připisoval na konec souboru. Jinak to docela postrádá smysl. |
||
laky941 Profil |
#7 · Zasláno: 9. 6. 2012, 17:40:50
Když použiji
<body> <?php include "vzhled.php" ; ?> <div id="ram"> </div> <div id="telo" > </div> <div id="text"> <h1 class=diskuze> DISKUZE </h1> <br /> <br /> <form action="diskuze.php" method="post"> <table align=center width=400 height=100> <th> <b>Jméno:</b> </th> <th> <input type="text" name="jmeno" size="25" maxlength="25"> </th> <tr> <th> <b>Text:</b> </th> <th> <textarea name="text" cols="50" rows="5"></textarea> </th> </tr> <th colspan="2"> <input type="submit" value="Odeslat" name="odeslano"/> </th> </table> </form> <hr /> <div id="diskuze"> <?php $filename = 'Diskuze.txt'; $velikost=filesize($filename); $cteni = fopen($filename, "r"); $i = fread($cteni,$velikost); fclose($cteni); $zapis = fopen($filename, "w"); if (!empty($_POST['text']) && !empty($_POST['jmeno'])) { $soubor="Diskuze.txt"; $text = "<p class=jmeno>".htmlspecialchars($_POST["jmeno"])." : ".date("G:i:s - j.n.Y")."</p>\n"; $text.= "<p>".htmlspecialchars($_POST["text"])."</p>\n\n"; file_put_contents($soubor, file_get_contents($soubor).$text); } ?> <br /> <?php include ("Diskuze.txt"); ?> </div> </div> </body> |
||
Darker Profil |
#8 · Zasláno: 9. 6. 2012, 18:03:36
Asi ses nenamáhal přemýšlet nad tím, co jednotlivé funkce dělají...
Tento blok tam nemá co dělat: $filename = 'Diskuze.txt'; $velikost=filesize($filename); $cteni = fopen($filename, "r"); $i = fread($cteni,$velikost); fclose($cteni); $zapis = fopen($filename, "w"); file_put_contents($soubor, $text.file_get_contents($soubor)); |
||
laky941 Profil |
#9 · Zasláno: 9. 6. 2012, 18:19:00
Ani nevíte jak jsem vám vděčný děkuji moc že jste si na mě našli čas :)
|
||
Časová prodleva: 12 let
|
0