Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ponowne wysłanie formularza po kilku minutach
Forum PHP.pl > Forum > PHP
Matiash
Witam, jak zrobic cos takiego ze np. jak ktos kliknie 4 * wyslij to za 4 razem wyskoczy komunikat ze musi odczekac 5 minut ?
kossa
Zależy co ma się dziać po każdym kliku wyślij.

Jeżeli strona nie jest przeładowywana to możesz zliczać liczbę kliknięć za pomcą JavaScript a po 4 kliku zapamiętać czas i jak user znowu kliknie to sprawdasz ile już czasu minęło.

Jak strona się przeładowuje to możesz w sesji zapisywać ilośc kliknięć a po 4 czas i dalej tak samo jak wyżej.

Łukasz
Matiash
tak strona się przeładowywuje po każdym wysłani formularza, tzn właściwie jest to uplod plikow + tworzenie pliku txt gdzie sa dane zapisywane. A nie musze jeszcze ustawic np. jakiegos rozpoznawania ip albo cos ?
kossa
Jeśli zrobisz to na sesjach to każda sesja jest indywidualna dla danego użytkownika, poczytaj o sesjach http://pl2.php.net/manual/en/ref.session.php. Sprawdzanie IP w tej sytuacji nie jest konieczne.

Łukasz
Matiash
No wiec zrobilem ale na podstawie ciasteczek gdyz wydawalo mi sie to prostsze. Jednak pojawia sie inny problem.

kod przedstawia sie nastepujaco:

  1. <?php
  2. if (isset($_COOKIE['ciastko2'])) {
  3.  echo("Już głosowałeś!");
  4.  /*warunek sprawdza czy istnieje w przeglądarce ciasteczko o nazwie
  5.    "ciastko2", jeśli tak to nie pozwala na ponowne wysłanie formularza*/
  6. }
  7. else {
  8.  
  9. //////////////////////////////////////
  10. //tutaj jest moj kod formularza//
  11. //////////////////////////////////////
  12.  
  13. setcookie("ciastko2", "glosowalem", time()+56);
  14.  
  15.  header("Location: la.html");
  16. }
  17. ?>


I tak, jesli mam czas ustawiony np + 56 czyli 56 sekund czas wygasniecia ciasteczka to nie dziala natomiast jesli ustawie 10000 to dziala. Od 10000 sekund wzwyż działa. Co moze byc przyczyna ?
strife
Testowałem Twój kod na Firefox'ie, Operze i IE. Wszystko działa poprawnie, wyczyść cache/ciasteczka w przeglądarce i zobacz jeszcze raz. Albo rozwiń wypowiedź:

Cytat
sekund czas wygasniecia ciasteczka to nie dziala
Matiash
No wiec wyczyściłem ciasteczka ( moja przegladarka to firefox 2.0.0.3 ) i dalej to samo. Problem jest taki ze dopiero gdy czas wygaśniecia ciasteczek ustawie na 10000 i wiecej sekund to działa ( wyswietla sie napis "Juz glosowano" Natomiast jesli ustawie mniejsza liczbe np 60 albo 120 to po ponownym wyslaniu formularza w odstepie krotszym niz te 120 lub 60 sekund wysyla go.

Probowalem jeszcze na IE wersja 6.0.3 i jest jeszcze gorzej tam po klikniecu wyslij pojawia sie caly kod php.

Oto moj kod:

  1. <?php
  2. if (isset($_COOKIE['ciastko2'])) {
  3.  echo("Już głosowałeś!");
  4.  /*warunek sprawdza czy istnieje w przeglądarce ciasteczko o nazwie
  5.    "ciastko2", jeśli tak to nie pozwala na ponowne wysłanie formularza*/
  6. }
  7. else {
  8. $katalog="./pliki/".date('dmyHis')."/";
  9. mkdir($katalog,0777);//tworzymy katalog
  10. $plik=fopen($katalog."opis.txt","w+");
  11. fputs($plik,"Imię i nazwisko:".chr(10).$_POST['imie'].chr(10).chr(10)."Adres email:".chr(10).$_POST['email'].chr(10).chr(10)."Treść wiadomości:".chr(10).$_POST['tresc'].chr(10).chr(10)."Dodano: ".chr(10).date("d F Y, H:i"));
  12. fclose($plik); 
  13. echo "Dziękujemy za przesłanie relacji<br /><br />";
  14. for ($i=0; $i<sizeof($_FILES['plik']['size']); $i++) {
  15. if ($_FILES['plik']['size'][$i] !=0) {
  16. $uploaded = $katalog. $_FILES['plik']['name'][$i];
  17. if (is_uploaded_file($_FILES['plik']['tmp_name'][$i])) {
  18.  if ($_FILES['plik']['type'][$i]=="image/jpeg") {
  19.  } else { echo "Zły format pliku numer $i<br>"; exit; }
  20. if ($_FILES['plik']['size'][$i] > 205500 ) {
  21. echo "Rozmiar zdjęcia numer $i jest zbyt wielki<br />";
  22.  
  23. } else {
  24. move_uploaded_file($_FILES['plik']['tmp_name'][$i], $uploaded);
  25. $dane=strip_tags(file_get_contents($katalog.$_FILES['plik']['name'][$i]));//usuwamy tagi php i html
  26.  $file=fopen($katalog.$_FILES['plik']['name'][$i],'w');//otwieramy plik
  27.  fwrite($file,$dane);//zapisujemy go w zmienionej formie
  28.  
  29. echo "Operacja wysyłania zdjęcia nr. $i przebiegła pomyślnie<br />";
  30. }
  31. } else {
  32.  
  33. echo "Operacja przesłania zdjęć nie powiodła się $i!<br />";
  34. }
  35. }
  36. }
  37.  
  38. setcookie("ciastko2", "glosowalem", time()+120);
  39.  
  40.  header("Location: la.html");
  41. }
  42. ?>


TO co zobaczylem pod IE przeraziło mnie

---------------------------------------

Czy mógłby ktos jeszcze przetestowac moj kod ? U mnie tak jak mowie gdy czas wygasniecia ciasteczek ustawie na 10000 sekund lub wiekszy niz 10000 to działa ale jak ustawiam mniej np. 60 sekund lub 120 to mozna wysyłać formularz do woli. A co moze byc przyczyna ze po klkniecu wyslij na IE wyswietla sie kod php a formularz nie jest uploadowany na serwer ?

A moze to wina windows , bo akutalnie na 64bitowej wersji pracuje. Kolega testowal skrypt i u niego tez dziala.
Void(Null)
A co zrobisz jak ktoś zablokuje swoje ciastka w przeglądarce ?
Matiash
no własnie a da sie jakos zmusic kogos zeby wlaczyl ciastka w przegladarce ? Tzn ze strona z uploadem sie nie pojawi dopoki nie ma wlaczonych ciastek ?
kwiateusz
oczywiście ustawiasz ciacho po wejściu na strone a następnie sprawdzam jak jest ciacho to wpuszczasz, a jak nie ma to do widzenia tongue.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.