Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Formularz + zapis do pliku - pomoc
Forum PHP.pl > Forum > Przedszkole
Moraw09
Witam,
Na wstępie dodam że raczkuje w PHP, na stronie korzystam z takiego oto skryptu obsługującego formularz:
(przesyłam dane z formularza, zapisując w pliku .txt.)

Wrzucam tylko fragmenty kodu PHP, aby nie zaśmiecać.
Mój problem polega na tym że, pomimo iż wszystko dobrze działa, są czasem przypadki kiedy ktoś zbyt szybko kliknie "dodaj".
Puste pola formularza próbują zostać zapisane do pliku i czasem się wtedy wszystko chrzani...

Czy ktoś może mi pomóc, i pokazać jak napisać fragment kodu umieszczonego tuż przed zapisałem do pliku, który w momencie kiedy zapisywane pola tekstowe (zmienne $tresc, $autor.. itp) mają np. mniej niż 3 znaki odrzuca je, nie zapisuje,i przekierowuje do innej strony?

Z góry dziękuję, będe bardzo wdzięczny. Próbowałem sam na kilka sposobów, ale nic nie działa.

przykładowy formularz:

  1. <form action="" method="POST">
  2. <b>Data i godzina:</b>
  3. <br>
  4. <textarea name="autor" rows="1" cols="46"></textarea><br>
  5. <b>Miejsce:</b>
  6. <br>
  7. <textarea name="tresc" rows="4" cols="46">'.$tresc.'</textarea><br />
  8. <b>Autor:</b>
  9. <br>
  10. <textarea name="wykonawca" rows="1" cols="30">'.$wykonawca.'</textarea>
  11. <br />
  12. </br>
  13. <input type="submit" value="Dodaj" /></form>
  14. </td>
  15. </tr>



Kod obsługujący formularz:

  1. <?php
  2. $file=fopen($nazwa,'a+');
  3. $plik=file($nazwa);
  4.  
  5. if(isset($_GET['delid']))
  6. {$f = fopen($nazwa, "w");
  7.  for($i=0;$i<count($plik);++$i)
  8.  {
  9.    if($plik[$i][0]==$_GET['delid'])
  10.    {
  11.      $ok=1;
  12.    }
  13.    else
  14.    {
  15.      if($ok==1){$plik[$i][0]=$plik[$i][0]-1;}
  16.      fputs($f, $plik[$i]);
  17.    }
  18.  }
  19. fclose($f);
  20. header('location: '.$adres);
  21. }
  22.  
  23.  
  24.     $data=date('d.m.Y H:i:s');
  25.     $autor=strip_tags($_POST['autor']);
  26.     $tresc=strip_tags($_POST['tresc']);
  27.     $wykonawca=strip_tags($_POST['wykonawca']);
  28.  
  29.    
  30.     $tresc=str_replace(array('*|*',"\n"),array('**',''),$tresc);
  31.    
  32.    
  33.    $lp=count($plik);
  34.          flock($file,2);
  35.        fputs($file,$lp.'*|*'.$autor.'*|*'.$data.'*|*'.$tresc.'*|*'.$_SERVER['REMOTE_ADDR'].'*|*'.$wykonawca."r\n");
  36.          flock($file,3);
  37.          setcookie($_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_URL'],"anty",time()+$anty_flood);
  38.          header('location: '.$adres);
  39.          exit;      
  40.  
  41.  
  42. for($i=0;$i<count($plik);++$i) {
  43.  
  44. $komorka=explode('*|*',$plik[$i]);
  45.  
  46.  
  47. if(isset($_SESSION['login'])){$admin=' - Wysłano z IP: '.$komorka[4].' (<a href="?delid='.$komorka[0].'">Usuń</a> '.$IP.')';}else{$admin="";}
  48.  
  49. echo '<DIV CLASS="l"><p class="autor"> - dodano: <i>'.$komorka[2].'</i> '.$admin.'</p><p class="news">temat:  <b>'.$komorka[1].'</b><br>'.$komorka[3].'</p><p class="wykonawca">autor:  '.$komorka[5].'</p></DIV><HR>';
  50.  
  51. }
  52.  
  53. fclose($file);
Fifi209
strlen" title="Zobacz w manualu PHP" target="_manual

ew. dla czegoś bardziej skompilowanego użyj wyrażeń regularnych i preg_match" title="Zobacz w manualu PHP" target="_manual
Moraw09
hm.. właśnie tak chciałem zrobić, ale jakkolwiek bym to pisał, nie działało.. mógłbym prosić o napisanie tej pętli warunkowej dokładnie tak jak powinna wyglądać?
z góry dzięki.
Fifi209
Tutaj nikt nie daje gotowców. Pokaż swój kod po przeróbkach i zobaczymy co da się zrobić w tej sprawie.
Moraw09
ok, czy coś w tym stylu ma sens?
(dla pola treść)
  1. <?php
  2. $data=date('d.m.Y H:i:s');
  3.    $autor=strip_tags($_POST['autor']);
  4.    $tresc=strip_tags($_POST['tresc']);
  5.    $wykonawca=strip_tags($_POST['wykonawca']);
  6.  
  7.    $lwykonawca= strlen($wykonawca);
  8.    $lautor= strlen($autor);
  9.    $ltresc= strlen($tresc);
  10.  
  11. if($ltresc < 3 )
  12.   {
  13.    header('Location: www.innastrona.pl');
  14.   }
  15.   else
  16.   {
  17.   $tresc=str_replace(array('*|*',"\n"),array('**',''),$tresc);
  18.      
  19.   $lp=count($plik);
  20.         flock($file,2);
  21.         fputs($file,$lp.'*|*'.$autor.'*|*'.$data.'*|*'.$tresc.'*|*'.$_SERVER['REMOTE_ADDR'].'*|*'.$wykonawca."r\n");
  22.         flock($file,3);
  23.         setcookie($_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_URL'],"anty",time()+$anty_flood);
  24.         header('location: '.$adres);
  25.         exit;      
  26.    }
  27. ?>
Fifi209
Jak najbardziej. haha.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.