Autor | Zpráva | ||
---|---|---|---|
kikinet Profil |
Opět zdravím,
vytvářím jednoduchou knihu hostů, všechno ok až na to, že komentáře se nezapíší do souboru s komentáři. Tady je kód: elseif ($jmeno!="" && $mail!="" && $zprava!=""){ $new = StripSlashes ($jmeno . $mail . $zprava); // ulož vše do $new if (File_Exists ($file)) { $komentare = file_get_contents ($file); //soubor ulož do $komentare file_put_contents ($file, $new.$komentare);}} //zapiš nové a staré komentáře Je to ořezané o věci typu povinných polí atd. Zápis do promměné new i komentare funguje (ověřeno echem) |
||
Someone Profil |
#2 · Zasláno: 21. 7. 2012, 15:43:47
kikinet:
máš správně nastavený CHMOD? |
||
kikinet Profil |
#3 · Zasláno: 21. 7. 2012, 15:49:52
Someone:
No ano, na 777 |
||
Someone Profil |
#4 · Zasláno: 21. 7. 2012, 15:53:11 · Upravil/a: Someone
Co je v proměnné
$file ?Uveď sem i ty podmínky nad tim, třeba se to k samotnému ukládání ani nedostane. |
||
kikinet Profil |
#5 · Zasláno: 21. 7. 2012, 15:59:31
Someone:
Ty podmínky všechny podle mě jedou, už jsem to testovala, ale možná tam najedete chybu. $file = "Komentare.txt"; if($odeslat == "Odeslat") { if ($zprava=="" || $jmeno=="") { echo "Vyplňte prosím všechna pole.";} elseif (substr_count($mail, '@') != 1) { echo "Zadali jste neplatnou e-mailovou adresu.";} elseif ($jmeno!="" && $mail!="" && $zprava!=""){ $jmeno = "<b>Jméno: </b>".$jmeno."<br>"; $mail = "<b>E-mail: </b>".$mail."<br>"; $zprava = $zprava."<br><hr>"; $new = StripSlashes ($jmeno . $mail . $zprava); if (File_Exists ($file)) { $komentare = file_get_contents ($file); file_put_contents ($file, $new.$komentare);} echo "Komentář byl úspěšně odeslán.";} else { echo "Komentář se nepodařilo odeslat. Zkuste to prosím znovu.";}} |
||
Chro Profil |
#6 · Zasláno: 21. 7. 2012, 21:19:24
kikinet:
Skript níže je základní provedení s bezpečnostními prvky. Kód stačí vložit do libovolné stránky (souboru s příponou php) mezi HTML tagy <body> a </body>. Skript si ukládací soubor automaticky vytvoří při prvním úspešně odeslaném komentáři. Při neúspěšném vyplnění formuláře pak doplňuje uživatelem zadaná data do jednotlivých formulářových polí. <?php $soubor = 'komentare.html'; if (isset($_POST['odeslat'])) { $chyby = ''; $jmeno = $_POST['jmeno']; $mail = $_POST['mail']; $zprava = $_POST['zprava']; if (get_magic_quotes_gpc()) { $jmeno = stripslashes($jmeno); $zprava = stripslashes($zprava); } $jmeno = htmlspecialchars($jmeno, ENT_QUOTES); $zprava = htmlspecialchars($zprava, ENT_QUOTES); if ($jmeno == '' || $zprava == '') { $chyby.= 'Nevyplnil(a) jste polozku Jmeno a/nebo Zprava.<br>'; } if ($mail != '') { if (!filter_var($mail, FILTER_VALIDATE_EMAIL)) { $chyby.= 'Uvedl(a) jste neplatnou e-mailovou adresu.<br>'; } } if ($chyby == '') { if (file_exists($soubor)) { $starsi_komentare = file_get_contents($soubor); } else { $starsi_komentare = ''; } $nova_zprava = 'Datum: '.date('d.m.Y H:i:s', time())."<br>\n"; $nova_zprava.= 'Jmeno: <b>'.$jmeno."</b><br>\n"; if ($mail != '') { $nova_zprava.= 'E-mail: '.$mail."<br>\n"; } $nova_zprava.= '<br>'.$zprava."\n<hr>\n"; file_put_contents($soubor, $nova_zprava.$starsi_komentare); echo 'Prispevek byl ulozen.<br>'; } else { echo $chyby.'Prispevek proto nebyl ulozen.<br>'; $returnjmeno = $jmeno; $returnmail = $mail; $returnzprava = $zprava; } } ?> <form action="" method="POST"> Jmeno *:<br> <input type="text" name="jmeno" value="<?php if (isset($returnjmeno)) echo $returnjmeno; ?>" size="30" maxlength="30"> <br> E-mail:<br> <input type="text" name="mail" value="<?php if (isset($returnmail)) echo $returnmail; ?>" size="30" maxlength="30"> <br> Zprava *:<br> <textarea name="zprava" cols="40" rows="10"><?php if (isset($returnzprava)) echo $returnzprava; ?></textarea> <br> <input type="submit" name="odeslat" value=" Odeslat "> </form> <h3>Komentare</h3> <?php if (file_exists($soubor)) { readfile($soubor); } else { echo 'Prozatim nebyly vlozeny zadne komentare.'; } ?> |
||
kikinet Profil |
Chro:
Děkuji, že jste si dal tu práci, ale formulář má zabezpečený a při chybě to doplní vypsaná pole :) <form method="POST" action="Koment.php"> <table style="font-size: 14"> <tr><td><b>Jméno: </b></td><td><input type="text" name="jmeno" value="<?php if(isset($_POST['jmeno'])) echo htmlspecialchars($_POST['jmeno'], ENT_QUOTES); ?>" size="39"></td></tr> <tr><td><b>E-mail: </b></td><td><input type="text" name="mail" value="<?php if(isset($_POST['mail'])) echo htmlspecialchars($_POST['mail'], ENT_QUOTES); ?>" size="39"></td></tr> <tr><td><b>Zpráva: </b></td><td><textarea name="zprava" rows="8" cols="31"><?php if(isset($_POST['zprava'])) echo htmlspecialchars($_POST['zprava'], ENT_QUOTES);?></textarea></td></tr> <tr><td><input type="hidden" name="message"></td><td><input type="hidden" name="url"></td></tr> <tr><td></td><td align="right"><input type="submit" name="odeslat" value="Odeslat"></td></tr> </table> </form> Spíš bych potřebovala říct ten důvod, proč to v mojem scriptu nefunguje to ukládání :/ Chro: Mimochodem ten Váš script taky neukládá... Nevím kde dělám chybu |
||
Tori Profil |
#8 · Zasláno: 21. 7. 2012, 22:45:57
kikinet:
1. Zkuste použít absolutní cestu k souboru: $file = dirname(__FILE__)."/Komentare.txt"
2. velké písmeno v názvu souboru je schválně / správně? některé OS to rozlišují (linux), jiné ne (windows). 3. kromě file_exists testujte i is_writeable 4. Co přesně vrací file_put_contents - nulu, false, nebo číslo? |
||
LaMMa Profil |
#9 · Zasláno: 21. 7. 2012, 22:46:03
kikinet:
Mne to tvoje ukladanie funguje. Urcite sa pozeras do spravneho suboru, ked to kontrolujes? |
||
Chro Profil |
#10 · Zasláno: 21. 7. 2012, 22:47:46
Oprav si v kódu adresu u formu v atrhbutu action na koment.php s malým k na začátku.
|
||
kikinet Profil |
Tori:
- vyzkouším - správně je to "komentare.txt" - co vrací to netuším, jen vím že do souboru to nic nehází LaMMa: - jestli to funguje tak by mě zajímalo jak to děláte :D musím dělat nějakou blbou chybu... Určitě kontroluju ten správný soubor Tady je ten formulář, kdyby se chtěl někdo podívat přímo Edit: Už to funguje :) použila jsem Toriho verzi :) Děkuji všem za pomoc. Kdyby se náhodou někdo nudil můžete se kouknout ještě na jeden problém |
||
LaMMa Profil |
#12 · Zasláno: 21. 7. 2012, 23:43:42
kikinet:
ci to nebolo tym velkym pismekom na zaciatku: - správně je to "komentare.txt" $file = "Komentare.txt"; |
||
kikinet Profil |
#13 · Zasláno: 22. 7. 2012, 00:09:42
LaMMa:
No on ten soubor se vážně jmenoval Komentare.txt, ale pak jsem to menila na male písmena, ať se mi to neplete a nakonec jsem to asi neprepsala ve scriptu |
||
Časová prodleva: 12 let
|
0