Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP] Formularz i akcje
Forum PHP.pl > Forum > Przedszkole
Maciek1705
Witam Was serdecznie forumowicze. Mam do Was pytanie, otóż robię formularz do rejestracji nowych użytkowników. Wygląda on tak:
  1. <form name='form' action='DodawanieNowegoKlienta.php' method='POST' onsubmit='return przetwarzaj_dane();'>
  2.  
  3. <fieldset>
  4. <div>
  5. <label for='Login'>Login: </label>
  6. <input type='text' id='Login' name='txtLogin' maxlength='30' onkeyup='checkLogin(this);' />
  7. <span class='hint'>Login powinien składać się z conajmniej 6 znaków.</span>
  8. </div>
  9.  
  10. <div>
  11. <label for='Haslo'>Hasło: </label>
  12. <input type='password' id='Haslo' name='pwdHaslo' maxlength='20' onkeyup='checkHaslo(this);' />
  13. <span class='hint'>Hasło powinno składać się z kombinacji liter i cyfr oraz nie może być mniejsze niż 4 znaki. Zalecane 8 znakowe hasło</span>
  14. </div>
  15.  
  16. <div>
  17. <label for='Imie'>Imię: </label>
  18. <input type='text' id='Imie' name='txtImie' maxlength='30' onkeyup='checkImie(this);' />
  19. <span class='hint'>Podaj swoje imię</span>
  20. </div>
  21.  
  22. <div>
  23. <label for='Nazwisko'>Nazwisko: </label>
  24. <input type='text' id='Nazwisko' name='txtNazwisko' maxlength='30' onkeyup='checkNazwisko(this);' />
  25. <span class='hint'>Podaj swoje nazwisko</span>
  26. </div>
  27.  
  28. <div>
  29. <label for='Pesel'>Pesel: </label>
  30. <input type='text' id='Pesel' name='txtPesel' maxlength='11' onkeyup='checkPesel(this);' />
  31. <span class='hint'>Podaj swój pesel</span>
  32. </div>
  33.  
  34. <div>
  35. <label for='Miejscowosc'>Miejscowość: </label>
  36. <input type='text' id='Miejscowosc' name='txtMiejscowosc' maxlength='30' onkeyup='checkMiejscowosc(this);' />
  37. <span class='hint'>Podaj nazwę miejscowości w której mieszkasz</span>
  38. </div>
  39.  
  40. <div>
  41. <label for='Ulica'>Ulica: </label>
  42. <input type='text' id='Ulica' name='txtUlica' maxlength='30' onkeyup='checkUlica(this);' />
  43. <span class='hint'>Podaj nazwę ulicy</span>
  44. </div>
  45.  
  46. <div>
  47. <label for='NumerDomu'>Nr domu: </label>
  48. <input type='text' id='NumerDomu' name='txtNumerDomu' maxlength='3' onkeyup='checkNumerDomu(this);' />
  49. <span class='hint'>Podaj numer domu</span>
  50. </div>
  51.  
  52. <div>
  53. <label for='NumerLokalu'>Nr lokalu: </label>
  54. <input type='text' id='NumerLokalu' name='txtNumerLokalu' maxlength='3' onkeyup='checkNumerLokalu(this);' />
  55. <span class='hint'>Podaj numer lokalu</span>
  56. </div>
  57.  
  58. <div>
  59. <label for='KodPocztowy'>Kod pocztowy: </label>
  60. <input type='text' id='KodPocztowy' name='txtKodPocztowy' maxlength='6' onkeyup='checkKodPocztowy(this);' />
  61. <span class='hint'>Wprowadź kod pocztowy we właściwym formacie według wzoru xx-xxx</span>
  62. </div>
  63.  
  64. <div>
  65. <label for='Powiat'>Powiat: </label>
  66. <input type='text' id='Powiat' name='txtPowiat' maxlength='30' onkeyup='checkPowiat(this);' />
  67. <span class='hint'>Podaj powiat</span>
  68. </div>
  69.  
  70. <div>
  71. <label for='Wojewodztwo'>Województwo: </label>
  72. <input type='text' id='Wojewodztwo' name='txtWojewodztwo' maxlength='30' onkeyup='checkWojewodztwo(this);' />
  73. <span class='hint'>Podaj województwo</span>
  74. </div>
  75.  
  76. <div>
  77. <label for='Telefon'>Telefon: </label>
  78. <input type='text' id='Telefon' name='txtTelefon' maxlength='15' onkeyup='checkTelefon(this);' />
  79. <span class='hint'>Podaj telefon kontaktowy według wzoru xxx-xxx-xxx lub xxx-xxxxxxx</span>
  80. </div>
  81.  
  82. <div>
  83. <label for='email'>Adres E-mail: </label>
  84. <input type='text' id='email' name='txtEmail' maxlength='50' onkeyup='checkEmail(this);' />
  85. <span class='hint'>Podaj poprwny adres E-mail - bez obaw nie rozsyłamy spamu!</span>
  86. </div>
  87.  
  88. <input type='submit' name='wyslij' value='Wyślij'>
  89. <input type='reset' name='resWyczysc' value='Wyczyść'>
  90.  
  91. </fieldset>
  92.  
  93. </form>


Jak widać formularz posiada już jedną akcję która wysyła dane do innej strony na któerj jest procedurka ładująca owe dane do bazy. Formularz wykorzystuje java script i ajax do walidacji wprowadzonych danych. Chciałem formularzowi dodać jeden trik który będzie sprawdzał czy dany login jest już w bazie czy może jest wolny, miałem to napisać w ajax ale przeczytałem że do tego musi być następna "action". Moje pytanie brzmi czy może być kilka acji w jednym formularzu?

Drugim pytaniem jest to że czytałem również na forum że warto przeprowadzić walidację zarówno po stronie klienta jak i serwera, ja mam zrobioną po stronie klienta ale jak zrbić po stronie serwera trzeba do tego zrobić osobną stronę która będzie sprawdzać dane zanim przekaże je do strony z procedurą wprowadzającą dane do bazy?

Ostatnim pytaniem jest to czy zamiast robić walidację po stronie serwera nie można zrobić np triku że jeżeli skrypt nie jest spełniony to nie pojawi wię przycisk "submit"?

Pozdrawiam serdecznie i z góry dzięki za odpowiedzi
Puzi
Cytat(Maciek1705 @ 13.08.2009, 21:49:13 ) *
Drugim pytaniem jest to że czytałem również na forum że warto przeprowadzić walidację zarówno po stronie klienta jak i serwera, ja mam zrobioną po stronie klienta ale jak zrbić po stronie serwera trzeba do tego zrobić osobną stronę która będzie sprawdzać dane zanim przekaże je do strony z procedurą wprowadzającą dane do bazy?

Ostatnim pytaniem jest to czy zamiast robić walidację po stronie serwera nie można zrobić np triku że jeżeli skrypt nie jest spełniony to nie pojawi wię przycisk "submit"?


Polecam zrobić jeszcze walidację po stronie serwera... nie wszyscy mają włączoną obsługę javascript w przeglądarkach... Jak trafi Ci się taki użytkownik to obojętnie co wpisze dane zostaną wysłane.

Pozdrawiam
Andaramuxo
Cytat
Ostatnim pytaniem jest to czy zamiast robić walidację po stronie serwera nie można zrobić np triku że jeżeli skrypt nie jest spełniony to nie pojawi wię przycisk "submit"?

Można obejść, lepiej sprawdzić wysyłane dane.
Maciek1705
Dzięki za wskazówki dobrze podejrzewałem z tą walidacją po stronie serwera. A właśnie jak napisać taką funkcję czy mogło by być coś takiego:
  1. function walidacja_email($email) {
  2. if ((!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email)) && (strlen($email)<6))
  3. {
  4. echo "wprowadzony adres email jest niepoprawny";
  5. } else echo "wprowadziłeś poprawny adres email";
  6.  
  7. }


Zakładając że w function było by więcej no i do pola imput odpowiadającemu email trzeba nadać wartość value='$email', i jak zrobić żeby funkcje te zadziałały po kliknięciu przycisku wyślij. Chodzi o to że jak klikniemy na wyślij to żeby formularz sprawdził pola a później przekierował je do strony z procedurą dodawania danych.
Adis92
Ja u siebie używam takiej funkcji do weryfikacji e-maili
  1. function verifyEmail($email) {
  2.  
  3. $wholeexp = '/^(.+?)@(([a-z0-9\.-]+?)\.[a-z]{2,5})$/i';
  4. $userexp = "/^[a-z0-9\~\\!\#\$\%\&\(\)\-\_\+\=\[\]\;\:\'\"\,\.\/]+$/i";
  5.  
  6. if (preg_match($wholeexp, $email, $regs)) {
  7. $username = $regs[1];
  8. $host = $regs[2];
  9.  
  10. if (checkdnsrr($host, MX)) {
  11. if (preg_match($userexp, $username)) {
  12. return true;
  13. } else { return false; }
  14. } else { return false; }
  15. } else { return false; }
  16. }

a tak wywołuję funkcje
  1. if(verifyEmail($email) == true){
  2. Pozostały kod
  3. }else echo "Email jest niepoprawny!!!<br><a href='java script:history.back()'>Powrót</a>";

Gdzie pod $email podstawiam
  1. $email = mysql_escape_string($_POST['txtEmail']);


I dodałem ją do pliku który dodaje dane. Jeżeli e-mail nie przejdzie weryfikacji to dane się nie dodadzą.
Fifi209
Co do pytania o zajętość nicku...
Nie widzę problemu...

Podpinasz np. jquery (najprościej bawić się z ajaxem)

dodajesz onblur dla inputa z nickiem, i wtedy ajaxem sprawdzasz.
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.