Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Przedszkole _ [PHP]wiadomosc nie chce sie zapisac do plikud

Napisany przez: zimekk 24.02.2009, 23:02:34

"zrobilem" prosta ksiege gosci ale podczas proby zapisu posta do pliku, pokazuje sie blad:

Cytat
Warning: fwrite(): supplied argument is not a valid stream resource in c:\usr\krasnal\www\ksiega gosci\wynik.php on line 60
Nie moge zapisac pliku


to plik: index.php
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <meta http-equiv="Content-Type"
  6. content="text/html; charset=iso-8859-2" />
  7. <title>Księga gości</title>
  8. </head>
  9. <body xml:lang="pl">
  10. <form action="index.php" method="post">
  11. Nick: <input type="text" name="nick" /><br />
  12. Wpisz swoj komentarz:<br />
  13. <textarea name="komentarz" cols="20" rows="10"></textarea><br />
  14. Mail: <input type="text" name="mail" /><br />
  15. WWW: <input type="text" name="www" />
  16. <button type="submit">Wyślij</button>
  17. </form>
  18. <?
  19. require('dodaj.php');
  20. if($_SERVER['REQUEST_METHOD'] == 'POST')
  21.     {
  22.         // Dodawanie wpisu
  23.         if(zapiszPost($_POST['nick'], $_POST['komentarz'], $_POST['mail'], $_POST['www']))
  24.         {
  25.             http://www.php.net/echo '<p>Dziękujemy, wpis został dodany.</p>';
  26.         }
  27.         else
  28.         {
  29.             http://www.php.net/echo '<p>Proszę wypełnić prawidłowo formularz.</p>';
  30.         }
  31.         http://www.php.net/echo '<p><a href="index.php">Powrót</a></p>';    
  32.     }
  33. else
  34.        {
  35.                  if($liczba_postow != 0)
  36.                          {
  37.                          for($i=0; $i<$liczba_postow; $i++)
  38.                          {
  39.                          $wiersz = http://www.php.net/explode("\t", $post[$i]);
  40.                          http://www.php.net/echo "Nick: " .$wiersz[0]. "<br />";
  41.                          http://www.php.net/echo "Komentarz: " .$wiersz[1]. "<br />";
  42.                          http://www.php.net/echo "Email: " .$wiersz[2]. "\t WWW: " .$wiersz[3]."<br />";
  43.                          http://www.php.net/echo "<br /><tr />";
  44.                          }
  45.                          }
  46.                          else
  47.                          {
  48.                          http://www.php.net/echo "Brak postów w księdze gości";
  49.                          http://www.php.net/exit;
  50.                          }
  51.        }
  52. ?>
  53. </body>
  54. </html>

a to plik: dodaj.php
  1. <?
  2.       http://www.php.net/define("PLIK", "./wpisy.txt");
  3.      function zapiszPost($nick, $komentarz, $mail, $www)
  4.      {
  5.                 // pozbycie sie pustych znakow
  6.                 $nick = http://www.php.net/trim($nick);  $komentarz = http://www.php.net/trim($komentarz); $mail = http://www.php.net/trim($mail);   $www = im($www);
  7.                 //sprawdzenie poprawnosci danych
  8.                if(http://www.php.net/strlen($nick) < 3 or http://www.php.net/strlen($komentarz) < 3)
  9.         {
  10.             return false; http://www.php.net/exit;
  11.         }          
  12.        
  13.         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))
  14.         {
  15.             return false; exit;
  16.         }
  17.         if(strlen($www) > 7 )
  18.         {
  19.             // Jesli adres nie zaczyna sie od http:// to dodaj to
  20.             if(strpos($www, 'http://') !== 0)
  21.             {
  22.                 $www = 'http://'.$www;
  23.             }                                
  24.         }
  25.         else
  26.         {
  27.                return false;    http://www.php.net/exit;
  28.                }
  29.     // zapisaywanie informacji
  30.     if(chmod(PLIK, 0777) == FALSE)
  31.              {
  32.              http://www.php.net/echo "<b>Nie</b> udało się nadać prawa dostępu plikowi(".$plik.").<br />";              http://www.php.net/exit;
  33.              }              
  34.     if(http://www.php.net/fopen(PLIK, 'r+') == FALSE)
  35.              {
  36.              http://www.php.net/echo "Próba otwarcia pliku " .$plik. "<b> nie</b> powiodła się<br />";              http://www.php.net/exit;
  37.              }        
  38.     $post =  $nick."\t".$komentarz."\t".$mail."\t".$www."r\n";            
  39.     if(http://www.php.net/fwrite(PLIK, $post) == FALSE)
  40.        {
  41.        http://www.php.net/echo "Nie moge zapisac pliku " .$plik. "<br />";
  42.        http://www.php.net/exit;
  43.        }
  44.     http://www.php.net/fclose(PLIK);     return true;
  45.   }
  46.  
  47.   function podzielipoliczPost()
  48.    {
  49.   chmod(PLIK, 0777);  
  50.   http://www.php.net/fopen(PLIK, 'r');
  51.   $posty = http://www.php.net/file($PLIK);
  52.   $liczba_postow = http://www.php.net/count($posty);   return true;
  53.   }
  54. ?>

Napisany przez: bigZbig 24.02.2009, 23:26:29

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 winksmiley.jpg

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)