Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Błąd Cookie / Sms System a Formularz
Potar
post
Post #1





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 27.02.2010

Ostrzeżenie: (20%)
X----


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

Ten post edytował Potar 12.04.2010, 17:39:45
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
k00sl
post
Post #2





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 20.04.2009

Ostrzeżenie: (0%)
-----


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. }




Go to the top of the page
+Quote Post
Potar
post
Post #3





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 27.02.2010

Ostrzeżenie: (20%)
X----


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ć.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 12:55