Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Antyflood
Forum PHP.pl > Forum > Przedszkole
psq
Mam pytanie, napisalem prosty formularz itp.
Ale chciałbym go zabezpieczyc, zeby osoba jak go wypelnila i wyslala, nie mogła wysłać go ponownie.. np. dzialajaca na cookie lub na IP.. a czas niemoznosci napisania to powiedzmy Xdni lub Xgodzin itp.. jestem naprawde poczatkujacy i nie bardzo wiem jak za to sie zabrac, a szukalem, ale zaden gotowiec mi nie dzialal:/
  1. <center>
  2. <form action="list.php" method="post">
  3. <input type="text" name="pole1" /><br>
  4. <input type="text" name="pole2" /><br><input type="text" name="pole3" /><br /><input type="submit" value="OK" />
  5. </form>
  6. </center>
  7.  
  8. <?
  9. $pole1 = stripslashes(trim($_POST["pole1"]));
  10. $pole2 = stripslashes(trim($_POST["pole2"]));
  11. $pole3 = stripslashes(trim($_POST["pole3"]));
  12.  
  13. if ($pole1<>"" && $pole2<>"" && $pole3<>"") {
  14. $tresc="$pole1n $pole2n $pole3nn";
  15. $f=fopen("dane.txt", "a");
  16. fputs($f, $tresc);
  17. fclose($f);
  18. mail("mail@mail.pl", "TEMAT", $tresc);
  19. echo "List został wysłany, dziekujemy...";
  20. }
  21. ?>

O tak wyglada caly formularz.. ale nie bardzo wiem jak go zabezpieczyc przed floodem. Oczywiscie jest on mniejszy od oryginalnego.. Chyba dobrze napisalem.. Prosiłbym o pomoc, z góry dziekuje.
psq
dziękuje za miłe chęci, jednak czytając to z manuala, dochodze do wniosku.. jak ja to mam umieścic w ten formularz.. Ale jezeli nikt mi nie pomoze, to trudno.
Pozdrowienia.
Pigula
  1. <?php
  2. $pole1 = stripslashes(trim($_POST["pole1"]));
  3. $pole2 = stripslashes(trim($_POST["pole2"]));
  4. $pole3 = stripslashes(trim($_POST["pole3"]));
  5.  
  6. if ($pole1<>"" && $pole2<>"" && $pole3<>"") {
  7. $tresc="$pole1n $pole2n $pole3nn";
  8. $f=fopen("dane.txt", "a");
  9. fputs($f, $tresc);
  10. fclose($f);
  11. mail("mail@mail.pl", "TEMAT", $tresc);
  12. echo "List został wysłany, dziekujemy...";
  13. setcookie("List",1,time()+x*3600); //x jest liczba godzin
  14. }
  15. ?>

pozniej sprawdzasz:
  1. <?php
  2. if ($_COOKIE['List']==1)
  3. {
  4. echo 'Sorry nie mozesz narazie wyslac formularza';
  5. }
  6. else
  7. {
  8.  //wyswietlasz formularz
  9. }
  10. ?>
psq
jezeli dobrze zrozumiealem to robie tak:
tworze plik powiedzmy test.php w nim mam to
  1. <?php
  2. if ($_COOKIE['List']==1)
  3. {
  4. echo 'Sorry nie mozesz narazie wyslac formularza';
  5. }
  6. else
  7. {
  8.  include 'formularz.php';
  9. }
  10. ?>

w pliku formularz mam to:
  1. <form action="formularz.php" method="post">
  2. <p align="center">
  3. <input type="text" name="pole1" />
  4. <input type="text" name="pole2" /><br>
  5. <input type="submit" value="WYSLIJ" />
  6. <?php
  7. $pole1 = stripslashes(trim($_POST["pole1"]));
  8. $pole2 = stripslashes(trim($_POST["pole2"]));
  9. if ($pole1<>"" && $pole2<>"") {
  10. $f=fopen("dane.txt", "a");
  11. fputs($f, $tresc);
  12. fclose($f);
  13. mail("mail@mail.pl", "TEMAT", $tresc);
  14. echo "Formularz Wyslany";
  15. setcookie("List",1,time()+48*3600); //x jest liczba godzin
  16. }
  17. ?>

Jezeli tak, to niestety wywala mi błąd po wyslaniu formularza taki:
Kod
Formularz Wyslany
Warning: Cannot modify header information - headers already sent by (output started at c:\usr\krasnal\www\cpe\form\formularz.php:13) in c:\usr\krasnal\www\cpe\form\formularz.php on line 95

na lini 95 znajduje sie:
  1. <?php
  2. setcookie("List",1,time()+144*3600); //x jest liczba godzin
  3. ?>

Nie wiem czy dobrze zrozumialem wyzsza wypowiedz:(
Dziekuje ze tracicie na mnie czas sad.gif
tiraeth
ob_start() na początku i ob_end_flush() na końcu skryptu załatwi sprawę...
psq
Nigdy bym nie doszedl.. hehehe a tymbardziej ze czytalem manual o cookie:)
Dzieki moj wybawco. jestem Ci bardzo wdzieczny!
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.