Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Walidacja Formularza w JS oraz PHP
Forum PHP.pl > Forum > Przedszkole
ppsi
Hejka mam dosc powazny problem .Zrobiłem formularz zgłoszeniowy i dodałem do niego walidacje JS oraz php. Tylko problem w tym jak to wszystko zgrac. Problem powinien być rozwiazany ze jesli użytkownik nie ma obslugi JS lub ma ja wyłączona wtedy włącza sie walidacja php jesli użytkownik ma właczona JS wtedy czesc pol zeby byla sprawdza w JS (aby nie obciazac serera i przeladowywac zbednie stron poniewaz zwalnia to autamtycznie dzialanie www) a pozostala grupa pol jak np PELSE,NIP itp po zweryfikowaniu wczesniej pol przez walidacje JS aby wlaczyla sie dalasza czesc walidacj w php. Narazie dziala to ze jesli mamy obsluge JS i nie wypelnimi zadnego pola wyskoczy okienko JS aby wprwadzic dane i auamtycznie wlacza sie walidacja php czyli przeladowuje sie strona i prosi o podani danych .TAK wyglada KOD HTML :
  1. <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2">
  2. <script LANGUAGE= "JavaScript" TYPE= "text/javascript">
  3. <!-- Ukrycie przed przeglądarkami nie obsługującymi JavaScriptów
  4. function sprawdz()
  5. {
  6. var brakDanych = false;
  7. var formularz = document.forms.formularz1;
  8. var napis = "";
  9. if (formularz.imie.value == ""){
  10. napis += "imie\n"
  11. brakDanych = true;
  12. }
  13. if (formularz.nazwisko.value == ""){
  14. napis += "nazwisko\n"
  15. brakDanych = true;
  16. }
  17. if (formularz.miasto.value == ""){
  18. napis += "kraj\n"
  19. brakDanych = true;
  20. }
  21. if (formularz.kod1.value == ""){
  22. napis += "telefon\n"
  23. brakDanych = true;
  24. }
  25. if (!brakDanych)
  26. formularz.submit();
  27. else
  28. alert ("Proszę wypełnić następujące pola:\n" + napis);
  29. }
  30. // Koniec kodu JavaScript -->
  31. </HEAD>
  32. <form name="formularz1" method="post" action="mail.php" enctype="multipart/form-data">
  33.  
  34. Imię:<br>
  35. <input type="text" name="imie"><br>
  36.  
  37. Nazwisko:<br>
  38. <input type="text" name="nazwisko"><br>
  39.  
  40. Miasto:<br>
  41. <input type="text" name="miasto"><br>
  42.  
  43. Kod pocztowy:<br>
  44. <input type="text" name="kod1" size="2" maxlength="2"> - <input type="text" name="kod2" size="3" maxlength="3"><br>
  45.  
  46. Ulica:<br>
  47. <input type="text" name="ulica"> <br>
  48.  
  49. Nr Domu/Nr Mieszkania: <br>
  50. <input type="text" name="nrdomu" size="6" maxlength="6"> nr mieszkania <input type="text" name="nrmieszkania" size="6" maxlength="6"><br>
  51.  
  52. Wojewodztwo:<br>
  53. <select name="wojewodztwo"> <option selected value="wybiezwojewodztwo"> - - - - - - - <option value="wielkopolskie"> wielkopolskie <option value="malopolskie"> malopolskie <option value="podkarpackie"> podkarpackie <option value="śląskie"> śląskie </select> <br>
  54.  
  55. Data urodzenia (rok/miesia/dzień):<br>
  56. 19<input type="text" name="rok" size="2" maxlength="2"> <select name="miesiac"> <option selected value="---------------"> --------------- <option value="styczen"> styczen <option value="luty"> luty <option value="marzec"> marzec <option value="kwiecien"> kwiecień <option value="maj"> maj <option value="czerwiec"> czerwiec <option value="lipiec"> lipiec <option value="sierpień"> sierpień <option value="wrzesien"> wrzesien <option value="padziernik"> pazdziernik <option value="listopad"> listopad <option value="grudzien"> grudzień</select> <input type="text" name="dzien" size="2" maxlength="2"> <br>
  57.  
  58. Telefon domowy (kierunkowy/nr telefonu)<br>
  59. <input type="text" name="kierunkowy" size="3" maxlength="3"> <input type="text" name="nrtel" size="12" maxlength="12"><br>
  60.  
  61. Telefon komórkowy:<br>
  62. <input type="text" name="telkom" size="9" maxlength="9"><br>
  63.  
  64. PESEL:<br>
  65. <input type="text" name="nrpesel" size="11" maxlength="11"><br>
  66.  
  67. NIP:<br>
  68. <input type="text" name="nip"><br>
  69.  
  70. REGON:<br>
  71. <input type="text" name="nrregon" size="14" maxlength="14"><br>
  72.  
  73. Nr dowodu osobistego:<br>
  74. <input type="text" name="dowodosobisty" size="9" maxlength="9"><br>
  75.  
  76. E-mail:<br>
  77. <input type="text" name="email"><br>
  78.  
  79.  
  80. Wybieze temat wiadomosci:<br>
  81. <SELECT NAME="tematlistu"> <OPTION VALUE="brak">--------------- <OPTION VALUE="zamowienie">zamowienie <OPTION VALUE="pytanie">pytanie <OPTION VALUE="inne">inne </SELECT> <br>
  82.  
  83. Ulubiony piosenkarz: (musisz wybrac jednego)<br>
  84. <input type="radio" name="piosenkarze" value="krawczyk"> Krawczyk&nbsp;
  85. <input type="radio" name="piosenkarze" value="stachurski"> Stachurski&nbsp;
  86. <input type="radio" name="piosenkarze" value="kowalska"> Kowalska&nbsp;
  87. <input type="radio" name="piosenkarze" value="wisniewskik"> Wiśniewski&nbsp;
  88. <input type="radio" name="piosenkarze" value="mandaryna"> Mandaryna&nbsp; <br> <br>
  89.  
  90.  
  91. Ulubiony kolor: (musisz wybrac przynajmniej jeden)<br>
  92. <input type="checkbox" name="kolor[czerwony]" value="czerwony" />czerwony<br />
  93. <input type="checkbox" name="kolor[zielony]" value="zielony" />zielony<br />
  94. <input type="checkbox" name="kolor[niebieski]" value="niebieski" />niebieski<br />
  95. <input type="checkbox" name="kolor[rozowy]" value="rozowy" />rozowy<br />
  96. <input type="checkbox" name="kolor[czarny]" value="czarny" />czarny<br />
  97. <input type="checkbox" name="kolor[bialy]" value="bialy" />bialy<br />
  98.  
  99.  
  100. Wybiez plik do załączenia:<br>
  101. <input type="file" name="filename" value="<?php echo($_FILE['filename']); ?>">
  102.  
  103. Akceptujesz regulamin? : <input type="checkbox" name="regulamin" value="regulamin"> TAK<br><br>
  104.  
  105. <input type="submit" name="submit" value="wyślij" onclick = "sprawdz()">
  106. <input type="reset" name="reset" value="od nowa">
  107. </form>
  108. </BODY>
  109. </HTML>


Jak zrobic tu warunek jezeli uzytkownik nie ma JS wlacza sie walidacj JS jesli ma obsuge JS wlaczas sie walidacja ogola w JS czyli aby w polach zostaly podane dane a nastepnie po wyslaniu wlacza sie walidacj php czyli sprawdza np porawnosc PESEL NIP itp. Prosze bardzo o pomoc z gory dziekuj i pozdrawiam
kicaj
Pamietaj ze cala walidacje JS mozna obejsc! Zrob w php walidacje ostateczna i zawsze aktywna smile.gif
ppsi
Nie bardzo chce obchodzic JS poniewaz co prawda JS nie ma takich moziwosci jak php ale dzial po stronie kienta i co za tym idzie przynosi duze kozysci jak szybkosc dziala i brak przeladowania strony wiec bardzo mi zalezy na jakims zrowiazaniu tego problemu prosze o pomoc bede bardzo wdzieczny pozdrowka dla wszystkich uzytkownkiow tego forum papaptki
aleksander
ja moge sobie wylaczyc javascript i wtedy Twój Twoje zabezpieczenia js mogą mi naskczyc tongue.gif po prostu walidacja php powinna byc zawsze aktywna i js tez smile.gif Podaj mi argumenty, ze tak nie powinno byc
ppsi
nie rozumiem kto tu chce wylaczyc walidacje php prosze czytac uwaznie posty. Po kolei najper ma byc walidacj JS ponieaz nie obciaza serwer i dziala szybko a pozniej alernatywnie ale zawsze aktywna jesli nie zadziala JS lub gdy trzba dokladnie sprawdzic pole takie jak np. PESEL lub NIP bedzie dzialac walidacja php.
sf
walidacja nie obciaza serwera w znaczacy sposob to jest pierdola

wiec jak ktos ma wlaczone JS to waliduje to najpierw JS i to jest taki zysk, ze user nie musi czekac na przeladowanie strony jesli zle cos wpisze i to jest ten PLUS, a nie, ze obciaza serwer..

no i dalej idac.. wypelnia, jest ok, wysyla sie.. walidacja php nastepuje jeszcze.. i robisz cos tam z tymi danymi
ppsi
Czy zna ktos konktretna odpiwedz na moje pytanie? prosze o jakas wzkazowke jak to wykonac? bede wdzieczny pozdrowka
sf
nie ma to jak lama...

zrob sobie dodatkowy parametr wysylany POST lub GET, ze walidacja odbyla sie czesciowo przez JS, albo sobie w sesji zapisz czy uzytkownik uzywa JS i potem zwykly if
batman
Lub zamiast
  1. <input type="submit">


wstaw

  1. <input type="button">
ppsi
dzieki z odpowiedzi ale czy mozna troszke jasniej i bardziej szczegolow poniewaz dopiero od niedawna zajmuj sie php smile.gif z gory dziekuj
batman
Submit jak sama nazwa wskazuje wysyła wysyła formularz, a button nie. Więc wstaw w miejsce submit (przycisku):

  1. <input type="button" name="submit" value="wyślij" onclick = "sprawdz()">
TomASS
Ja też miałem ten sam Problem.

Zrobiłem JS I Button, mam ten komfort, że jeśli użytkownik serwisu który tworze nie chce się dostosować, to nie - jego strata, także omijanie JS nie leży w jego interesie. A ostateczna walidacja i tak jest robiona w php.
php programmer
Według mnie każdy ma obsługe JS,
nikt już nie ma takich starych przeglądarek, żeby nie było JS,
a wyłączać JS nie ma po co, wiec robienie ewentualności na brak JS
jest moim zdaniem mało sensowne.
TomASS
Do tego też zmierzałem, pozatym trudno jest zadowolić wszystkich smile.gif
nospor
@php programmer co ty wygadujesz? czyli wedlug ciebie samo js wystarczy? To fakt, kazda przegladarka ma js i 90% uzytkowników ma go wlączonego. Ale znajdzie się 10% co go wylączom żeby np. spróbować narozrabiać lub tak z przekory. I co, wówczas walidacji nie bedzie, dane pójdą do serwera a ten uzna ze js zwalidowal i przyjmie je. Czlowieku, toż to grozi globalna katastrofą (tu lekko przesadzilem biggrin.gif)
php programmer
Jak już to 1 % a nie 10%
poza tym jak dane nie beda takie jak trzeba to można tego
jednego człowieczka na 100 zignorować, albo napisać że coś jest nie tak
i żeby sobie włączył JS i sie nie wygłupiał

to tak jak by robić ewentualność na wypadek że ktoś tam może
jeszcze jeździ syrenką, albo trabantem, albo sobie wyłączył hamulce
bo chce poeksperymentować
nospor
a niech nawet to bedzie 0,00001%. Tu nie chodzi oto ze gostek se wylaczy. mi chodzi oto ze se wylaczy, poda jakieś dane, które mogą w ciekawy sposób zmodyfikować zapytanie i ci skasuje cała bazę. Do tego wystarczy ten jeden ludek. Tak więc walidacja php musi być
php programmer
Przeciez i tak robi sie backupy.
A prawdopodobieństwo skasowania bazy praktycznie żadne.
Równie dobrze może uderzyć w ziemie jakiś meteor.
nospor
wow, rozbrajasz mnie. Oby jak najmniej ludzi z takim podejsciem do sprawy.
A slyszal kiedy o slq insertion/injection?

nie ma co ciągnac tej dyskusji bo juz pokazales na co cie stac. milego dnia
Sh4dow
o tak zrobcie tak, przesylacie zmienna ktora wylacza walidacje w php ja stworze wlasna strone ktora bedzie sie odnosci do wasze, wysle jakis ladny kod, z potwierdzeniem "falszywej walidacji" i postaram sie doskonale uprzykrzyc ci zycie lamiac jakeis zabezpieczenia lub niszczac polowe strony, bo wedlug ciebie klient zauwazy roznice w ladowaniu sie strony na poziomie 0.001s.

Ludzie JavaScript ma byc tylko pomocnikiem dla wygody usera a nie programisty. Walidacja w php jest sposobem zabezpieczenia sie przed probami ataku na strone.

A pozatym po jakiego grzyba kombinowac, cudowac jak przekazac czy bylo walidowane w JS ? Duzo szybciej napiszesz dwie walidacje (JS i php) niz bedziesz rozwiazywakl ten problem.

A ja sie zastanawialem jak mozna zrobic dziurawy system O_o

Pozdrawiam Rkingsmiley.png

[Edit] @php programer: Nie odzywaj sie lepiej na ten temat bo to zaczynam byc upokazajace. Wychodzi na to ze twoja znajomosc w tym zakresie jest znikoma. A co do backupow to juz slyszalem jak Firma hostingowa robila codzienne backupy bazy. i w ten sposob serwis przestal istniec z powodu znikniecia bazy.
php programmer
Cytat(nospor @ 2005-09-02 08:19:05)
A slyszal kiedy o slq insertion/injection?

Nie słyszałem.

Ja tylko mówie swoje zdanie na ten temat, to już nawet nie można powiedzieć co sie myśli?

A my ci tylko mówimy, że jesteś w dużym błędzie, a ty dalej swoje i nic do ciebie nie przemawia tongue.gif
--
nospor


Tak tyko że ja swoją "upartośc" (według was) popieram
życiowymi argumentami.

Nie obraź się, ale wynika że masz małe życiowe doswiadczenia
--
nospor


a właśnie że mam duże
SongoQ
Cytat
A prawdopodobieństwo skasowania bazy praktycznie żadne.
Równie dobrze może uderzyć w ziemie jakiś meteor.


Podaj adresy serwisow ktore wynonywales z zabezpieczeniami JS, a radze ze kilka minut i ktos Ci je wywali. W innym poscie napisales ze obyty jestes z bazami, jestem ciekaw czy masz aby tak dobre zabezpieczone wszystko jak serwisy za pomoca JS.
FiDO
http://www.thecounter.com/stats/2005/July/javas.php - to apropo ilosci ludzi z wylaczonym JS.

Malo zyciowe te Twoje agumenty, a doswiadczen chyba jednak duzych nie masz (mimo ze mozesz ze swojej perspektywy sadzic inaczej), skoro masz takie przekonania i nie slyszales nawet o sql injection, ktory jest jednym z podstawowych atakow na zle robione skrypty.

Ja sie np. nie bawie w waliadcje po stronie klienta, wszystko server-side, ale formularze mam tak robione, zeby zadnych wprowadzonych danych nie stracic, dodatkowo po submicie jesli byly blednie wypelnione pola to automatycznie pierwsze blednie wypelnione pole dostaje focus i jest to dosc wygodne rozwiazanie.
aleksander
@php programmer: http://forum.php.pl/index.php?showtopic=23258

EOT
php programmer
Cytat(SongoQ @ 2005-09-02 11:50:04)
Cytat
A prawdopodobieństwo skasowania bazy praktycznie żadne.
Równie dobrze może uderzyć w ziemie jakiś meteor.


Podaj adresy serwisow ktore wynonywales z zabezpieczeniami JS, a radze ze kilka minut i ktos Ci je wywali. W innym poscie napisales ze obyty jestes z bazami, jestem ciekaw czy masz aby tak dobre zabezpieczone wszystko jak serwisy za pomoca JS.

Dobra, nie chcę już przedłużac niepotrzebnie tematu
ale w odpowiedzi na jeden z postów podaje formularz,
(praktycznie bez żadnych zabezpieczeń)
czekam aż ktoś wpisze takie dane, że pozostałe dane przez to wywalą.

http://www.pomorze.netsulima.pl/podstrony/forum/forum.php

ps.do aleksander
dzieki za link
ppsi
No dziekuje za odpowiedz widze ze wdala sie dluzsza rozmowa smile.gif Popieram nospora poniewaz ma takie zadnie jak ja. JS jako wstepna walidacja poniewaz jest szybaka nie przeladowuje strony i nie obciaza sereerwa i alternatywnie wrazie brkua JS walidacja php . I to jest wedlug mnie optymalne rozwiazanie exclamation.gif! . Ide dziala wrcie pytan bede pisal . Dziekuje slicznie pozdrowka dla calego forum smile.gif ppaaatkkii
Hej, doszlo do jakiegoś nie porozumienia. Ja uwazam że js i php a nie js i alternatywnie php
---
nospor
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.