Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Błąd Cookie / Sms System a Formularz
Forum PHP.pl > Forum > PHP
Potar
Witam zrobiłem system płatności sms który działa poprawnie przkeierowuje do strony z formularzem oraz jest wszystko zabezpieczone cookie. Problem pojawia się gdy już ktoś wyśle formularz i cofnie strone bądź odświezy to może do bólu wysyłać formularze, a ja chcę że gdy bedzie po raz pierwszy wysłać to wyśle i cookie wygasną. Pozdrawiam
Kod PHP:
  1. $check = $_POST['check']; # podany kod na stronie gdzie wejście jest płatne i wymagany jest zakupiony kod
  2. if($check == NULL)
  3. exit("Prosze wpisac kod");
  4.  
  5.  
  6. $handle = fopen("http://dotpay.pl/check_code.php?id=".$id."&code=".$code."&check=".$check."&type=".$type."&del=".$del, 'r');
  7. $status = fgets($handle, 8);
  8. $czas_zycia = fgets($handle, 24);
  9. fclose($handle);
  10. $czas_zycia = rtrim($czas_zycia);
  11.  
  12.  
  13.  
  14. if ($status == 0) {print "Kod niepoprawny."; exit;} # gdy kod niepoprawny
  15. else
  16. { # gdy kod poprawny:
  17. if (!isset($_COOKIE['ActiveCode']))
  18. {
  19. setcookie('ActiveCode',1, time()+$czas_zycia);
  20. }
  21. else
  22. {
  23. setcookie('ActiveCode',0, time()+1, "/");
  24. setcookie('ActiveCode',1, time()+$czas_zycia, "/");
  25. }
  26. header("Location: ".$page); # włączenie strony głównej
  27. }

Oraz Skrypt Formularza:
  1. <?php
  2. include "sprawdzacz.php";
  3. if (count($_POST))
  4. {
  5. ////////// USTAWIENIA //////////
  6. $email = 'xxxl'; // Adres e-mail adresata
  7. $subject = 'Wpis Premium'; // Temat listu
  8. $message = 'Dziękujemy za wysłanie formularza'; // Komunikat
  9. $error = 'Wystąpił błąd podczas wysyłania formularza'; // Komunikat błędu
  10. $charset = 'utf-8'; // Strona kodowa
  11. //////////////////////////////
  12.  
  13. $head =
  14. "MIME-Version: 1.0\r\n" .
  15. "Content-Type: text/plain; charset=$charset\r\n" .
  16. "Content-Transfer-Encoding: 8bit";
  17. $body = '';
  18. foreach ($_POST as $name => $value)
  19. {
  20. if (is_array($value))
  21. {
  22. for ($i = 0; $i < count($value); $i++)
  23. {
  24. $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value[$i]) : $value[$i]) . "\r\n";
  25. }
  26. }
  27. else $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value) : $value) . "\r\n";
  28. }
  29. echo mail($email, "=?$charset?B?" . base64_encode($subject) . "?=", $body, $head) ? $message : $error;
  30. }
  31. else
  32. {
  33. ?>
  34. <center>
  35. <form action="formularz_smst.php" method="post">
  36. <p>Login: </p><input type="text" name="Login" />
  37. <p>Numer Telefonu Nadawcy: </p><input type="text" name="Tel" />
  38. <br>
  39. <input type="submit" value="Wyslij formularz" />
  40. </form>
  41. </center>
  42. <?php
  43. }

Bądź jak zrobić żeby był formularz i sprawdzacz na jednej stronie:
Login:
Kod z SMS:
I dopiero jak sprawdzi kod z sms to wysle formularz.
Pozdrawiam
k00sl
Jeśli chodzi ci o samo zabezpieczenie formularza przed powtórnym wysłaniem danych, umieść w formularzu ukryty input

  1. <input type="hidden" name="hash" value="'.md5(uniqid(rand())).'">


w autoryzacji daj:

  1. if(!isset($_SESSION['form']) || !in_array($_POST['hash'],$_SESSION['form'])){
  2.  
  3. //kod
  4.  
  5. $_SESSION['form'][]=$_POST['hash'];
  6.  
  7. }




Potar
Pomoc 1
Ja nie chce blokady przed kolejnym wysłaniem formularza...
Ja chcę blokade że jak dodaje mi cookie skrypt sprawdzajacy sms otwiera formularz.php to po wyslaniu kasuje sesje (ciasteczka) i jak ktoś chce kolejny raz wejsc na tą strone bedzie napisane sesja minęła... Tak jak mam skrypt sprawdzający sesję.
  1. <?php # skrypt sprawdzający ważność kodu
  2. if (!isset($_COOKIE['ActiveCode']))
  3. {
  4. print "koniec czasu<BR>";
  5. unset($_COOKIE[session_name()]);
  6. }
  7. ?>

I wszystko mam oprócz kasowania sesji po wysłaniu formularza...

Pomoc 2
Najlepiej by było gdyby ktoś dał rade połączyć dwa skrypty w jeden formularz + opcja sprawdzająca że jak ktoś poda zły kod to formularz sie nie wyśle poprostu było by chyba najprosciej ale niewiem jak się do tego zabrać.
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.