Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [PHP] Zabezpieczenie formularza
spikerx
post 3.01.2014, 05:35:44
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 3.01.2014

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


Już klęczę nad tym ponad 2 godziny i niestety jestem zmuszony do napisania tego tematu, mimo, że temat już wałkowany kilka set razy to ja nie mogę znaleźć rozwiązania dla mojej sprawy. Chodzi o odświeżanie wysłanego już formularza. Chcę skorzystać ze skryptu header ale już tyle kombinacji próbowałem, że po prostu nie mam siły, bo nic nie działa :/

  1. <?
  2. if(isset($_POST["sender"])) {
  3.  
  4. $imie = $_POST['imieinazwisko'];
  5. $adres = $_POST['adreszamieszkania'];
  6. $pesel = $_POST['numerpesel'];
  7. $email = $_POST['email'];
  8. $telefon = $_POST['telefon'];
  9. $rodzajkursu = $_POST['rodzajkursu'];
  10. $angielski = $_POST['jezykangielski'];
  11. $gluchoniemi = $_POST['gluchonieme'];
  12.  
  13.  
  14. // Potwierdzenie dla użytkownika
  15. $reply_subject = 'xxxxxxxxxxx';
  16. $reply_body = 'Otrzymaliśmy twoją wiadomość';
  17. $reply_email = 'xxxxxxxxxxx';
  18.  
  19. // Wysłanie do xxx
  20.  
  21. $to = 'xxxxxxxxxxxxx';
  22. $from = $imie . "<" . $email . ">";
  23. $subject = 'xxxxxxxxxxxxxxxxxxxxxx';
  24. $body = "\n\nImię i Nazwisko: " . $imie .
  25. "\n\nAdres zamieszkania: " . $adres .
  26. "\n\nNumer Pesel: " . $pesel .
  27. "\n\nEmail: " . $email .
  28. "\n\nTelefon: " . $telefon .
  29. "\n\nRodzaj kursu: " . $rodzajkursu .
  30. "\n\nJęzyk angielski: " . $angielski .
  31. "\n\nGłuchoniemy: " . $gluchoniemi ;
  32.  
  33.  
  34. $coding = "Content-Type: text/plain; charset=utf-8 \nContent-Transfer-Encoding: 8bit";
  35. if(mail($to, $subject, $body, "From: " . $from . "\n" . $coding))
  36. {
  37. // potwierdzenie nadawcy
  38. if(mail($email, $reply_subject, $reply_body, "From: " . $reply_email . "\n" . $coding))
  39. {
  40. echo "<p class=\"dziekujemy\">Dziękujemy za wysłanie formularza!</p>";
  41.  
  42. }
  43. else
  44. {
  45. echo('<p class=\"dziekujemy\">Błąd podczas wysyłania wiadomośći</p>');
  46. }
  47. }
  48. }
  49.  
  50. require_once("zapisyform.php");
  51.  
  52. ?>



Oraz plik do formularza
  1. <div id="form" <? if(isset($_POST['sender'])) { echo "style=\"display:none;\"";}
  2. ?>>
  3. <form id="form1" name="form1" method="post" action="">
  4. <input type="hidden" name="sender" value="true" />
  5.  
  6. <fieldset> <legend>Zapisz się już dziś!</legend> <ul>
  7.  
  8.  
  9. <li><span id="sprytextfield1">
  10. <label for="imieinazwisko3">Imię i Nazwisko</label>
  11. <input type="text" name="imieinazwisko" id="imieinazwisko3" tabindex="1" />
  12. <span class="textfieldRequiredMsg">Wymagana jest wartość.</span></span></li>
  13. <li><span id="sprytextfield2">
  14. <label for="adreszamieszkania">Adres zamieszkania</label>
  15. <input type="text" name="adreszamieszkania" id="adreszamieszkania" tabindex="2" />
  16. <span class="textfieldRequiredMsg">Wymagana jest wartość.</span></span></li>
  17. <li><span id="sprytextfield3">
  18. <label for="numerpesel">Numer PESEL</label>
  19. <input name="numerpesel" type="text" id="numerpesel" tabindex="3" maxlength="11" />
  20. <span class="textfieldRequiredMsg">Wymagana jest wartość.</span><span class="textfieldInvalidFormatMsg">Za mało znaków.</span><span class="textfieldMinCharsMsg">Nieprawidłowy PESEL</span><span class="textfieldMaxCharsMsg">Nieprawidłowy PESEL</span></span></li>
  21. <li><span id="sprytextfield4">
  22. <label for="email">E-mail</label>
  23. <input type="text" name="email" id="email" tabindex="4" />
  24. <span class="textfieldRequiredMsg">Wymagana jest wartość.</span><span class="textfieldInvalidFormatMsg">Nieprawidłowy format.</span></span></li>
  25. <li><span id="sprytextfield5">
  26. <label for="telefon">Telefon komórkowy</label>
  27. <input type="text" name="telefon" id="telefon" tabindex="5" />
  28. <span class="textfieldRequiredMsg">Wymagana jest wartość.</span><span class="textfieldInvalidFormatMsg">Nieprawidłowy format.</span></span></li>
  29. <li><span id="spryselect1">
  30. <label for="rodzajkursu" class="formLeft">Rodzaj kursu</label>
  31. <select name="rodzajkursu" class="formRight" id="rodzajkursu" tabindex="6">
  32. <option>Kategoria A - Motocykl</option>
  33. <option>Kategoria B - Samochód</option>
  34. </select>
  35. </span></li>
  36. <li>
  37. <input name="jezykangielski" type="checkbox" id="dodatkoweinformacje" tabindex="7" />
  38. <label for="jezykangielski">Szkolenie w języku angielskim</label>
  39.  
  40. </li>
  41. <li>
  42. <input name="gluchonieme" type="checkbox" id="gluchoniemi" tabindex="8" />
  43. <label for="gluchonieme">Szkolenie osób głuchoniemych</label>
  44.  
  45. </li>
  46. <li><span id="sprycheckbox1">
  47.  
  48. <input name="przetwarzanie" type="checkbox" id="przetwarzanie" tabindex="9" /> <label for="przetwarzanie">Wyrażam zgodę na przetwarzanie danych osobowych w celu realizacji zamówienia.<font color="#FF0000">*</font><br />
  49. <span class="checkboxRequiredMsg">pole wymagane.</span></label>
  50.  
  51. <br /> </span></li>
  52. </ul>
  53. <p>&nbsp;</p>
  54. <p>
  55. <input type="submit" name="przycisk" id="przycisk" value="Wyślij" />
  56. </p>
  57. </fieldset>
  58. </form></div>


Formularz działa, po wysłaniu pojawia się Dziękujemy za wysłanie formularza! jednak chcę, żeby automatycznie strona się przeładowała, ponieważ po kliknięciu F5 ten sam wypełniony formularz jest ponownie wysyłany
Go to the top of the page
+Quote Post
valkirek
post 3.01.2014, 07:28:41
Post #2





Grupa: Zarejestrowani
Postów: 117
Pomógł: 6
Dołączył: 24.07.2013

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


Po wysłaniu formularza możesz dać sesję uźytkkownikowi z konkretnym komunikatem i przekierowaniem spowrotem na strone z formularzem i wyswietlasz komunikat z sesji
Go to the top of the page
+Quote Post
lobopol
post 3.01.2014, 07:32:57
Post #3





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


Musisz zrobić:
1. Na początku sprawdzasz czy w sesji nie ma wiadomości do wyświetlenia, jak jest wyświetlasz i kasujesz z sesji
2. po poprawnym wysłaniu forma zapisujesz wiadomosc do wyswietlenia z sesji
3. Używasz header() do przekierowania na tą samą stronę


--------------------
Go to the top of the page
+Quote Post
spikerx
post 3.01.2014, 17:10:00
Post #4





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 3.01.2014

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


Cytat(valkirek @ 3.01.2014, 07:28:41 ) *
Po wysłaniu formularza możesz dać sesję uźytkkownikowi z konkretnym komunikatem i przekierowaniem spowrotem na strone z formularzem i wyswietlasz komunikat z sesji


Właśnie o to mi chodzi, komunikat jest, ale nie wiem jak z tym przekierowaniem :/

Dodatkowo, nie wiem czy tutaj mogę dodać ale mam wysuwany tekst po kliknięciu i po wstawieniu skryptu nie działa mi walidacja formularza.

///////////////// TEKST WYSUWANY ////////////////////

  1. <script type="application/javascript">
  2. $().ready(function() {
  3. $('div.more').hide().before('<br><a class="zapisyclass" href="">Jak zapisać się na kurs prawa jazdy?&raquo;</a>')
  4. .prev().toggle(function() {
  5. $(this).next().slideDown();
  6. }, function() {
  7. $(this).next().slideUp();
  8.  
  9. });
  10. });


//////// SILNIK FORMULARZA //////////////

i na końcu przed </body> ustawienia walidacji

  1. <script type="text/javascript" language="javascript">
  2. $(document).ready(function() {
  3. $(".box_skitter_large").skitter();
  4. });
  5. var sprytextfield1 = new Spry.Widget.ValidationTextField("sprytextfield1", "none", {validateOn:["blur", "change"]});
  6. var sprytextfield2 = new Spry.Widget.ValidationTextField("sprytextfield2", "none", {validateOn:["blur", "change"]});
  7. var sprytextfield3 = new Spry.Widget.ValidationTextField("sprytextfield3", "integer", {validateOn:["blur", "change"], minChars:11, maxChars:11});
  8. var sprytextfield4 = new Spry.Widget.ValidationTextField("sprytextfield4", "email", {validateOn:["blur", "change"]});
  9. var sprytextfield5 = new Spry.Widget.ValidationTextField("sprytextfield5", "phone_number", {validateOn:["blur", "change"], format:"phone_custom", pattern:"000-000-000", useCharacterMasking:true});
  10. var spryselect1 = new Spry.Widget.ValidationSelect("spryselect1", {isRequired:false, validateOn:["blur", "change"]});
  11. var sprycheckbox1 = new Spry.Widget.ValidationCheckbox("sprycheckbox1", {validateOn:["blur", "change"]});
  12. </script>



Z tego co już się dowiedziałem to chodzi o kolejność i o "konflik", próbowałem
Kod
jQuery.noConflict();

ale mi nie działa albo w złym miejscu to użyłem

Ten post edytował spikerx 3.01.2014, 17:10:21
Go to the top of the page
+Quote Post
Turson
post 3.01.2014, 17:16:43
Post #5





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Cytat
Właśnie o to mi chodzi, komunikat jest, ale nie wiem jak z tym przekierowaniem :/

Przecież lobopol odpowiedział, że zamiast header refresh dać header location
Go to the top of the page
+Quote Post
Crozin
post 3.01.2014, 17:27:59
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Coś słabo te dwie godziny wykorzystałeś, skoro pierwszego z brzegu rozwiązania nie znalazłeś: http://en.wikipedia.org/wiki/Post/Redirect/Get

Ten post edytował Crozin 3.01.2014, 17:28:46
Go to the top of the page
+Quote Post
spikerx
post 5.01.2014, 21:18:26
Post #7





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 3.01.2014

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


Cytat(Turson @ 3.01.2014, 17:16:43 ) *
Przecież lobopol odpowiedział, że zamiast header refresh dać header location


stosowałem
  1. header("Location: /zapisy.php");

Jednak bez skutku

Jednakże teraz nawet header nie pomoże bo pierwszy problem jaki się teraz pojawił to brak walidacji formularza sad.gif

Edit: Z walidacja już sobie poradziłem, ale nadal nie mogę z tym header sad.gif

Jest ktoś w stanie pomóc, bo jestem w kropce sad.gif Próbuje i nic mi nie idzie :/

Ten post edytował spikerx 3.01.2014, 19:15:57
Go to the top of the page
+Quote Post
Turson
post 5.01.2014, 21:33:30
Post #8





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Jakiś błąd wyskakuje czy coś?
Go to the top of the page
+Quote Post
com
post 5.01.2014, 21:35:02
Post #9





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


albo adres bezwzględny albo
  1. header("Location: ./zapisy.php");

wink.gif
Go to the top of the page
+Quote Post
spikerx
post 6.01.2014, 22:04:35
Post #10





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 3.01.2014

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


dodaje

  1. {
  2. echo "<p class=\"dziekujemy\">Dziękujemy za wysłanie formularza!</p>";
  3. header("Location: zapisy.php");
  4.  
  5. }


Ten post edytował spikerx 6.01.2014, 22:04:57
Go to the top of the page
+Quote Post
Turson
post 6.01.2014, 22:15:59
Post #11





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


I co sie wtedy dzieje??
Go to the top of the page
+Quote Post
nospor
post 6.01.2014, 22:18:39
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No ale nie mozesz dawac zadnego tekstu gdy robisz HEADER LOCATION.
Raz ze to niepoprawne, a dwa ze to bez sensu, bo jak niby ktos ma zobaczyc tekst ktory od razu znika...


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
spikerx
post 6.01.2014, 22:20:09
Post #13





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 3.01.2014

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


Właśnie nic nie dzieje, po prawnie wyświetla Dziękuje za wysłanie formularza ale na tym stoi
nospor nawet jak usune

  1. echo "<p class=\"dziekujemy\">Dziękujemy za wysłanie formularza!</p>";


To sama strona się nie przeładowuje

Ten post edytował spikerx 6.01.2014, 22:21:58
Go to the top of the page
+Quote Post
Turson
post 6.01.2014, 22:24:53
Post #14





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Zgaduje, że masz wyłączone raportowanie błędów i nie wywala błędu "Header already sent" i dlatego przekierowanie nie działa.

Dodaj na początku
  1. error_reporting(E_ALL);error_reporting(-1);

jeśli moje prognozy się sprawdzą z tym błędem to na początku daj

a na samym końcu
Go to the top of the page
+Quote Post
nospor
post 6.01.2014, 22:30:54
Post #15





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
nospor nawet jak usune
Ale nie chodzi tylko o te jedna linijke przed. Chodzi o wszystko co wysylasz do przegladarki. Nie moze isc nic a nic


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
spikerx
post 6.01.2014, 22:43:34
Post #16





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 3.01.2014

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


hmm, dodałem jedynie na początku
  1. error_reporting(E_ALL);error_reporting(-1);


Taki mam kod:
  1. if(mail($email, $reply_subject, $reply_body, "From: " . $reply_email . "\n" . $coding))
  2. {
  3. echo "<p class=\"dziekujemy\">Dziękujemy za wysłanie formularza!</p>";
  4. header("Location: zapisy.php");
  5. }


I jak wypełnię formularz, pojawia się Dziękujemy za wysłanie itd. a jak odświeżę strone to powraca mi do formularza, czyli chyba już dobrze jest

Jednak nie działa, coś w google chrome mi się zmieniło, bo na internet explorer jest to samo. Błędu nie wyświetla, a może poprzez require_once w zewnetrznym pliku dam header i wywołam go jeżeli użytkownik wypełni formularz, będzie to trybiło?
Go to the top of the page
+Quote Post
Turson
post 6.01.2014, 22:45:14
Post #17





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


To żadna różnica czy z zewnętrznego pliku czy nie. Poza tym zauważ, że strona się przekieruje zanim użytkownik zobaczy komunikat
Go to the top of the page
+Quote Post
spikerx
post 6.01.2014, 22:49:25
Post #18





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 3.01.2014

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


Własnie powinna, Turson dodałem jeszcze ob_start itd, tak jak proponowałeś i niestety nic to nie zmieniło, chyba, że ja coś źle robię
Go to the top of the page
+Quote Post
com
post 6.01.2014, 22:56:08
Post #19





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


pokaż kod jak to zrobiłeś wink.gif
Go to the top of the page
+Quote Post
spikerx
post 8.01.2014, 21:19:30
Post #20





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 3.01.2014

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


  1. <?
  2. error_reporting(E_ALL);error_reporting(-1);
  3. if(isset($_POST["sender"])) {
  4.  
  5. $imie = $_POST['imieinazwisko'];
  6. $adres = $_POST['adreszamieszkania'];
  7. $pesel = $_POST['numerpesel'];
  8. $email = $_POST['email'];
  9. $telefon = $_POST['telefon'];
  10. $rodzajkursu = $_POST['rodzajkursu'];
  11. $angielski = $_POST['jezykangielski'];
  12. $gluchoniemi = $_POST['gluchonieme'];
  13.  
  14.  
  15. // Potwierdzenie dla użytkownika
  16. $reply_subject = 'Zapis na kurs ze strony xxxxxxxx';
  17. $reply_body = 'Otrzymaliśmy twoją wiadomość';
  18. $reply_email = 'xxxxxxxxxxxxx';
  19.  
  20. // Wysłanie do Pilota
  21.  
  22. $to = 'xxxxxxxxxxx';
  23. $from = $imie . "<" . $email . ">";
  24. $subject = 'Zapis na kurs ze strony xxxxxxxxxxxxxx';
  25. $body = "\n\nImię i Nazwisko: " . $imie .
  26. "\n\nAdres zamieszkania: " . $adres .
  27. "\n\nNumer Pesel: " . $pesel .
  28. "\n\nEmail: " . $email .
  29. "\n\nTelefon: " . $telefon .
  30. "\n\nRodzaj kursu: " . $rodzajkursu .
  31. "\n\nJęzyk angielski: " . $angielski .
  32. "\n\nGłuchoniemy: " . $gluchoniemi ;
  33.  
  34.  
  35. $coding = "Content-Type: text/plain; charset=utf-8 \nContent-Transfer-Encoding: 8bit";
  36. if(mail($to, $subject, $body, "From: " . $from . "\n" . $coding))
  37. {
  38. // potwierdzenie nadawcy
  39. if(mail($email, $reply_subject, $reply_body, "From: " . $reply_email . "\n" . $coding))
  40. {
  41.  
  42. header("Location: zapisy.php");
  43. }
  44. else
  45. {
  46. echo('<p class=\"dziekujemy\">Błąd podczas wysyłania wiadomośći</p>');
  47.  
  48. }
  49. }
  50. }
  51.  
  52. require_once("zapisyform.php");
  53. ?>


Tylko nie bijcie smile.gif

Pomozecie?

Ten post edytował spikerx 6.01.2014, 23:06:07
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 8.07.2025 - 03:30