Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: formularz kontaktowy z wymaganiem ilości znaków w polach - problem
Forum PHP.pl > Forum > PHP
MK2
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. ?>
Spawnm
Proszę dodać BBcode .
MK2
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
thek
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.
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.