Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][PHP] Formularz i akcje
Maciek1705
post 13.08.2009, 20:49:13
Post #1





Grupa: Zarejestrowani
Postów: 157
Pomógł: 3
Dołączył: 15.06.2009

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


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
Go to the top of the page
+Quote Post
Puzi
post 13.08.2009, 21:19:20
Post #2





Grupa: Zarejestrowani
Postów: 231
Pomógł: 17
Dołączył: 26.08.2007

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


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
Go to the top of the page
+Quote Post
Andaramuxo
post 13.08.2009, 21:37:29
Post #3





Grupa: Zarejestrowani
Postów: 150
Pomógł: 15
Dołączył: 18.03.2009

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


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.


--------------------
Go to the top of the page
+Quote Post
Maciek1705
post 13.08.2009, 23:39:59
Post #4





Grupa: Zarejestrowani
Postów: 157
Pomógł: 3
Dołączył: 15.06.2009

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


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.
Go to the top of the page
+Quote Post
Adis92
post 14.08.2009, 01:23:41
Post #5





Grupa: Zarejestrowani
Postów: 146
Pomógł: 12
Dołączył: 9.01.2009
Skąd: Płock

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


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

Ten post edytował Adis92 14.08.2009, 01:35:16
Go to the top of the page
+Quote Post
Fifi209
post 14.08.2009, 02:13:51
Post #6





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


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.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
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 Wersja Lo-Fi Aktualny czas: 18.07.2025 - 07:49