"zrobilem" prosta ksiege gosci ale podczas proby zapisu posta do pliku, pokazuje sie blad:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" /> <title>Księga gości</title> </head> <body xml:lang="pl"> <form action="index.php" method="post"> Nick: <input type="text" name="nick" /><br /> Wpisz swoj komentarz:<br /> <textarea name="komentarz" cols="20" rows="10"></textarea><br /> Mail: <input type="text" name="mail" /><br /> WWW: <input type="text" name="www" /> <button type="submit">Wyślij</button> </form> <? require('dodaj.php'); if($_SERVER['REQUEST_METHOD'] == 'POST') { // Dodawanie wpisu if(zapiszPost($_POST['nick'], $_POST['komentarz'], $_POST['mail'], $_POST['www'])) { http://www.php.net/echo '<p>Dziękujemy, wpis został dodany.</p>'; } else { http://www.php.net/echo '<p>Proszę wypełnić prawidłowo formularz.</p>'; } http://www.php.net/echo '<p><a href="index.php">Powrót</a></p>'; } else { if($liczba_postow != 0) { for($i=0; $i<$liczba_postow; $i++) { $wiersz = http://www.php.net/explode("\t", $post[$i]); http://www.php.net/echo "Nick: " .$wiersz[0]. "<br />"; http://www.php.net/echo "Komentarz: " .$wiersz[1]. "<br />"; http://www.php.net/echo "Email: " .$wiersz[2]. "\t WWW: " .$wiersz[3]."<br />"; http://www.php.net/echo "<br /><tr />"; } } else { http://www.php.net/echo "Brak postów w księdze gości"; http://www.php.net/exit; } } ?> </body> </html>
<? http://www.php.net/define("PLIK", "./wpisy.txt"); function zapiszPost($nick, $komentarz, $mail, $www) { // pozbycie sie pustych znakow $nick = http://www.php.net/trim($nick); $komentarz = http://www.php.net/trim($komentarz); $mail = http://www.php.net/trim($mail); $www = im($www); //sprawdzenie poprawnosci danych if(http://www.php.net/strlen($nick) < 3 or http://www.php.net/strlen($komentarz) < 3) { return false; http://www.php.net/exit; } if(http://www.php.net/strlen($mail) < 6 && http://www.php.net/eregi('^[a-zA-z0-9_]+@[a-zA-z0-9-]+.[a-zA-z0-9-.]+ , $mail)) { return false; exit; } if(strlen($www) > 7 ) { // Jesli adres nie zaczyna sie od http:// to dodaj to if(strpos($www, 'http://') !== 0) { $www = 'http://'.$www; } } else { return false; http://www.php.net/exit; } // zapisaywanie informacji if(chmod(PLIK, 0777) == FALSE) { http://www.php.net/echo "<b>Nie</b> udało się nadać prawa dostępu plikowi(".$plik.").<br />"; http://www.php.net/exit; } if(http://www.php.net/fopen(PLIK, 'r+') == FALSE) { http://www.php.net/echo "Próba otwarcia pliku " .$plik. "<b> nie</b> powiodła się<br />"; http://www.php.net/exit; } $post = $nick."\t".$komentarz."\t".$mail."\t".$www."r\n"; if(http://www.php.net/fwrite(PLIK, $post) == FALSE) { http://www.php.net/echo "Nie moge zapisac pliku " .$plik. "<br />"; http://www.php.net/exit; } http://www.php.net/fclose(PLIK); return true; } function podzielipoliczPost() { chmod(PLIK, 0777); http://www.php.net/fopen(PLIK, 'r'); $posty = http://www.php.net/file($PLIK); $liczba_postow = http://www.php.net/count($posty); return true; } ?>
Przyjrzyj się przykładowi na stronie http://pl.php.net/manual/pl/function.fwrite.php
fopen zwraca uchwyt do pliku. Funkcji fwrite i fclose jako pierwszy parametr przekazujesz uchwyt do pliku a nie ścieżkę do pliku. Poza tym nie ma potrzeby za każdym razem ustawiać praw 777. Tak naprawdę wystarczy je ręcznie ustawić raz
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)