Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> formularz kontaktowy z wymaganiem ilości znaków w polach - problem
MK2
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 6.08.2010

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


Witam
Mam działający formularz kontaktowy, z którego po wpisaniu kodu z obrazka wysyłana jest wiadomość. Chciałem zmodyfikować go trochę w taki sposób, aby zmusić wysyłającego do wpisania pewnej ilości znaków w każdym polu:
imię: 5-40 znaków
email: 5-40 znaków
telefon: 0-30 znaków
treść: 15-5000 znaków
Po wprowadzeniu tych obostrzeń formularz niby działa prawidłowo. Jednak jak wysyłający wpisze poprawny kod z obrazka lecz nieprawidłową ilość znaków w dowolnym polu to:
1. wyskakuje okno informujące o złej ilości znaków w polu
2. po kliknięciu OK okno się zamyka a przeglądarka przechodzi do pliku wyslij.php
3. wysyłana jest wiadomość z niewystarczającymi danymi w polach

Jak należy zmienić kod aby przeglądarka nie przechodziła dalej dopóki nie zostaną wpisane w pola prawidłowe dane?
Chciałbym aby w przypadku pomyślnego wysłania wiadomości przeglądarka przechodziła do strony kontakt_ok.html a gdy wystąpi błąd to na stronę kontakt_error.html

Jako, że nie mam zbyt dużego doświadczenia w PHP proszę o konkretną odpowiedź! Dzięki z góry!

plik: kontakt.php
  1. <?php
  2. if ($_SERVER['REQUEST_METHOD'] == 'POST')
  3. {
  4. if (isset($_POST['captcha_code'],$_SESSION['random_txt']) && md5($_POST['captcha_code']) == $_SESSION['random_txt'])
  5. {
  6. unset($_POST['captcha_code'],$_SESSION['random_txt']);
  7. }
  8. else
  9. {
  10. echo '<b>The entered code was wrong.</b><br>';
  11. echo '<a href="java script:history.back()">Go Back</a>';
  12. }
  13. }
  14. ?>

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  3. <title>Bez nazwy</title>
  4. <style type="text/css">
  5. div#container
  6. {
  7. width: 1004px;
  8. position: relative;
  9. margin-top: 0px;
  10. margin-left: auto;
  11. margin-right: auto;
  12. text-align: left;
  13. }
  14. <style type="text/css">
  15. body
  16. {
  17. text-align: center;
  18. margin: 0;
  19. background-color: #C0C0C0;
  20. color: #000000;
  21. overflow-y: scroll;
  22. }
  23. <link rel="stylesheet" href="./wb.validation.css" type="text/css">
  24. <style type="text/css">
  25. a.style1:link
  26. {
  27. color: #00008B;
  28. text-decoration: none;
  29. }
  30. a.style1:visited
  31. {
  32. color: #666666;
  33. text-decoration: none;
  34. }
  35. a.style1:active
  36. {
  37. color: #00008B;
  38. text-decoration: none;
  39. }
  40. a.style1:hover
  41. {
  42. color: #00008B;
  43. text-decoration: none;
  44. }
  45. <script type="text/javascript" src="./jquery-1.4.2.min.js"></script>
  46. <script type="text/javascript" src="./wb.validation.js"></script>
  47. <script type="text/javascript">
  48. <!--
  49. function ValidateForm2(theForm)
  50. {
  51. if (theForm.TextArea1.value == "")
  52. {
  53. alert("W polu \"treść wiadomości\" wymagane jest od 15 do 5000 znaków!");
  54. theForm.TextArea1.focus();
  55. return false;
  56. }
  57. if (theForm.TextArea1.value.length < 15)
  58. {
  59. alert("W polu \"treść wiadomości\" wymagane jest od 15 do 5000 znaków!");
  60. theForm.TextArea1.focus();
  61. return false;
  62. }
  63. if (theForm.TextArea1.value.length > 5000)
  64. {
  65. alert("W polu \"treść wiadomości\" wymagane jest od 15 do 5000 znaków!");
  66. theForm.TextArea1.focus();
  67. return false;
  68. }
  69. if (theForm.Editbox2.value == "")
  70. {
  71. alert("W polu \"adres e-mail\" wymagane jest od 5 do 40 znaków!");
  72. theForm.Editbox2.focus();
  73. return false;
  74. }
  75. if (theForm.Editbox2.value.length < 5)
  76. {
  77. alert("W polu \"adres e-mail\" wymagane jest od 5 do 40 znaków!");
  78. theForm.Editbox2.focus();
  79. return false;
  80. }
  81. if (theForm.Editbox2.value.length > 40)
  82. {
  83. alert("W polu \"adres e-mail\" wymagane jest od 5 do 40 znaków!");
  84. theForm.Editbox2.focus();
  85. return false;
  86. }
  87. if (theForm.Editbox1.value == "")
  88. {
  89. alert("W polu \"imię i nazwisko\" wymagane jest od 5 do 40 znaków!");
  90. theForm.Editbox1.focus();
  91. return false;
  92. }
  93. if (theForm.Editbox1.value.length < 5)
  94. {
  95. alert("W polu \"imię i nazwisko\" wymagane jest od 5 do 40 znaków!");
  96. theForm.Editbox1.focus();
  97. return false;
  98. }
  99. if (theForm.Editbox1.value.length > 40)
  100. {
  101. alert("W polu \"imię i nazwisko\" wymagane jest od 5 do 40 znaków!");
  102. theForm.Editbox1.focus();
  103. return false;
  104. }
  105. if (theForm.Editbox3.value.length > 30)
  106. {
  107. alert("W polu \"Telefon\" dopuszczalne jest max 30 znaków!");
  108. theForm.Editbox3.focus();
  109. return false;
  110. }
  111. return true;
  112. }
  113. //-->
  114. <script type="text/javascript">
  115. $(document).ready(function()
  116. {
  117. $("#Form1").submit(function(event)
  118. {
  119. var isValid = $.validate.form(this);
  120. return isValid;
  121. });
  122. $("#Captcha3Edit").validate(
  123. {
  124. required: true,
  125. type: 'ajax',
  126. param: 'captcha3_ajax.php',
  127. error_text: 'Wprowadź poprawny kod i kliknij przycisk \"Wyślij wiadomość\"'
  128. });
  129. });
  130. </head>
  131. <div id="container">
  132. <div id="wb_Form1" style="position:absolute;left:0px;top:0px;width:559px;height:329px;z-index:12">
  133. <form name="Form2" method="post" action="" enctype="application/x-www-form-urlencoded" id="Form1" onsubmit="return ValidateForm2(this)">
  134. <textarea name="tresc" id="TextArea1" style="position:absolute;left:17px;top:131px;width:524px;height:88px;border:1px #C0C0C0 solid;font-family:Courier New;font-size:13px;z-index:0" rows="4" cols="61" tabindex="4"></textarea>
  135. <div id="wb_Text9" style="margin:0;padding:0;position:absolute;left:17px;top:225px;width:145px;height
  136. :16px;text-align:left;z-index:1;">
  137. <font style="font-size:13px" color="#000000" face="verdana">Wpisz kod z obrazka</font></div>
  138. <div id="wb_Text6" style="margin:0;padding:0;position:absolute;left:17px;top:115px;width:121px;height
  139. :16px;text-align:left;z-index:2;">
  140. <font style="font-size:13px" color="#000000" face="verdana">Treść wiadomości</font></div>
  141. <input type="text" id="Editbox2" style="position:absolute;left:17px;top:85px;width:309px;height:18px;border:1px #C0C0C0 solid;font-family:Courier New;font-size:13px;z-index:3" name="email" value="" tabindex="2">
  142. <div id="wb_Text4" style="margin:0;padding:0;position:absolute;left:17px;top:70px;width:143px;height:
  143. 16px;text-align:left;z-index:4;">
  144. <font style="font-size:13px" color="#000000" face="verdana">Adres e-mail</font></div>
  145. <input type="text" id="Editbox1" style="position:absolute;left:17px;top:41px;width:308px;height:18px;border:1px #C0C0C0 solid;font-family:Courier New;font-size:13px;z-index:5" name="imie" value="" tabindex="1">
  146. <div id="wb_Text7" style="margin:0;padding:0;position:absolute;left:19px;top:24px;width:252px;height:
  147. 16px;text-align:left;z-index:6;">
  148. <font style="font-size:13px" color="#000000" face="verdana">Imię i nazwisko / nazwa firmy</font></div>
  149. <div id="wb_Text8" style="margin:0;padding:0;position:absolute;left:343px;top:70px;width:176px;height
  150. :16px;text-align:left;z-index:7;">
  151. <font style="font-size:13px" color="#000000" face="verdana">Telefon </font><font style="font-size:9.3px" color="#000000" face="verdana">(nie wymagany)</font></div>
  152. <input type="text" id="Editbox3" style="position:absolute;left:343px;top:84px;width:180px;height:18px;border:1px #C0C0C0 solid;font-family:Courier New;font-size:13px;z-index:8" name="telefon" value="" maxlength="30" tabindex="3">
  153. <input type="submit" id="Button1" name="" value="Wyślij" style="position:absolute;left:390px;top:254px;width:152px;height:30px;font-family:Arial;font-weight:bold;font-size:13px;z-index:9" tabindex="6">
  154. <div id="wb_Captcha3" style="margin:0;padding:0;position:absolute;left:17px;top:241px;width:234px;height
  155. :38px;text-align:left;z-index:10;">
  156. <img src="captcha3.php" alt="Click for new image" title="Click for new image" style="cursor:pointer;width:120px;height:39px;" onclick="this.src='captcha3.php?'+Math.random()">
  157. <input type="text" id="Captcha3Edit" style="position:absolute;left:130px;top:19px;width:114px;height:18px;border:1px #C0C0C0 solid;font-family:Verdana;font-size:13px;" name="captcha_code" value="" tabindex="5"></div>
  158. </form>
  159. </div>
  160. <div id="wb_Text1" style="margin:0;padding:0;position:absolute;left:801px;top:825px;width:193px;heigh
  161. t:12px;text-align:left;z-index:13;">
  162. <div id="wb_Shape3" style="margin:0;padding:0;position:absolute;left:897px;top:1180px;width:0px;height
  163. :0px;text-align:center;z-index:14;">
  164. <img src="images/img0292.gif" id="Shape3" alt="" title="" style="border-width:0;width:0px;height:0px"></div>
  165. <div id="wb_Shape4" style="margin:0;padding:0;position:absolute;left:768px;top:1028px;width:0px;height
  166. :0px;text-align:center;z-index:15;">
  167. <img src="images/img0293.gif" id="Shape4" alt="" title="" style="border-width:0;width:0px;height:0px"></div>
  168. <div id="wb_Shape5" style="margin:0;padding:0;position:absolute;left:809px;top:1069px;width:0px;height
  169. :0px;text-align:center;z-index:16;">
  170. <img src="images/img0294.gif" id="Shape5" alt="" title="" style="border-width:0;width:0px;height:0px"></div>
  171. <div id="wb_Shape6" style="margin:0;padding:0;position:absolute;left:776px;top:1065px;width:0px;height
  172. :0px;text-align:center;z-index:17;">
  173. <img src="images/img0295.gif" id="Shape6" alt="" title="" style="border-width:0;width:0px;height:0px"></div>
  174. </div>
  175. </body>
  176. </html>


plik wyslij.php
  1. <?php
  2. if (!empty($_POST['tresc']) && !empty($_POST['email'])) {
  3. $message = "Treść wiadomości:\n$_POST[tresc]\n\nWysłał: $_POST[imie]\n\ne-mail: $_POST[email]\n\nTelefon: $_POST[telefon]";
  4. $header = "From: $_POST[imie] <$_POST[email]>";
  5. @mail("mojemail@domena.pl","Wiadomość ze strony www!","$message","$header")
  6. or die('Nie udało się wysłać wiadomości');
  7. header('location:http://domena.pl/kontakt_OK.html');
  8. }
  9. ?>


Ten post edytował MK2 6.08.2010, 17:41:47
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Spawnm
post
Post #2





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Proszę dodać BBcode .
Go to the top of the page
+Quote Post
MK2
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 6.08.2010

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


Drugi kłopot jest taki, że po pomyślnym wysłaniu wiadomości i przejściu na stronę kontakt_ok.html gdy wysyłający wciśnie przycisk "wróć" w przeglądarce to pojawia się wypełniony przed chwilą formularz a kod z obrazka nie zmienia się. Jak zmusić go do zmiany i jak wyczyścić dane? Na razie rozwiązałem to lamersko wstawiając niewidoczny dla oglądającego kod z obrazka na stronie kontkat_ok.html i wymuszając jego zmianę w ten sposób ale chciałbym to porządnie zrobić.

Hej, Formumowicze!

Nikt mi nie podpowie jak poprawić ten formularz?! Przecież to pewnie kwestia jednej linijki kodu! Pomóżcie amatorowi PHP! rolleyes.gif
Go to the top of the page
+Quote Post
thek
post
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Zmusić można dodając losowy ciąg na koniec obrazka. Spróbuj coś w stylu src="/ścieżka/do/obrazka.jpg?ciąglosowy". A dane przy użyciu wstecz i tak najczęściej uzupełnia sama przeglądarka, więc tutaj trudno coś pomóc.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post

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 Aktualny czas: 20.08.2025 - 07:28