Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [html]zabezpieczenie formularza
dave666
post 8.01.2009, 16:55:30
Post #1





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 1.04.2008

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


Mam takie pytanko mógłby mi ktoś podpowiedzieć w jaki sposób zabezpieczyć formularz kontaktowy aby po kliknięciu wyślij nie wysyłał emaila bez wypełniania wszystkich pól
Go to the top of the page
+Quote Post
Adrian1207
post 8.01.2009, 17:01:14
Post #2





Grupa: Zarejestrowani
Postów: 94
Pomógł: 10
Dołączył: 20.02.2007

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


  1. <?php
  2. if(!empty($_POST['pole1']) && !empty($_POST['pole2'])){
  3. //Kod wysylania maila
  4. }
  5. else{
  6. //Komunikat że nie wypełnione wszystkie pola
  7. }
  8. ?>


Na przyklad tak smile.gif

Ten post edytował Adrian1207 8.01.2009, 17:01:55
Go to the top of the page
+Quote Post
zulus
post 8.01.2009, 17:01:38
Post #3





Grupa: Zarejestrowani
Postów: 225
Pomógł: 18
Dołączył: 30.06.2003
Skąd: Wrocław

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


To problem JavaScript, w HTML tego nie zrobisz


--------------------
Go to the top of the page
+Quote Post
dave666
post 8.01.2009, 17:06:58
Post #4





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 1.04.2008

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


moge uzyc javascript ale trzeba wiedzieć jeszcze jak temu pytam tu na forum winksmiley.jpg a formularz wygląda nastepująco
  1. <FORM NAME="zalacznik" METHOD="post" ACTION="index.php?id=wyslij" ENCTYPE="multipart/form-data">
  2. Imię: <input type="text" id="imie" name="imie" ><br>
  3. Nazwisko: <input type="text" name="nazwisko" id="nazw"><br>
  4. Wiek: <input type="text" id="wiek" name="wiek" ><br>
  5. Numer GG:<input type="text" name="gg" id="gg" ><br>
  6. Zainteresowania <input type="text" name="zainteresowania" id="zainter" ><br>
  7. Ilość wolnego czasu <input type="text" name="ile" id="ile" ><br>
  8. Doświadczenie<input type="text" name="doswiadczenie" id="dos" ><br>
  9. Miasto: <input type="text" name="miasto" id="miasto" ><br>
  10. Temat: <input type="text" name="temat" id="temat" ><br>
  11. Twój e-mail:<input type="text" name="email" id="mail" ><br>
  12. Telefon:<input type="text" name="tel" id="telefon"><br>
  13. Tresc:<textarea name="tresc" id="tresc" rows="3" cols="20" ></textarea><br>
  14. <input type="hidden" name="wyslij" value="1" />
  15. <input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
  16. Załącznik <INPUT type="file" name="plik1"><br><br>
  17. <INPUT TYPE="SUBMIT" VALUE="Wyślij Email">
  18. </FORM>
Go to the top of the page
+Quote Post
Rafal Filipek
post 8.01.2009, 18:50:22
Post #5





Grupa: Zarejestrowani
Postów: 274
Pomógł: 54
Dołączył: 2.05.2006
Skąd: Nadarzyn

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


do walidacji formularzy za pomoca js polecam cos gotowego np. http://www.jsvalidate.com/
Go to the top of the page
+Quote Post
oi.
post 23.11.2010, 21:38:58
Post #6





Grupa: Zarejestrowani
Postów: 145
Pomógł: 1
Dołączył: 12.07.2006

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


Nie wiem co robię źle ale po wgraniu plików na serwer JS jest nieaktywne jak zapiszę stronę z dema na dysk to działa . sciana.gif
Go to the top of the page
+Quote Post
blade-mrn
post 24.11.2010, 11:02:15
Post #7





Grupa: Zarejestrowani
Postów: 113
Pomógł: 11
Dołączył: 20.10.2009

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


Jeśli chcesz tylko sprawdzić czy pola nie są puste to wystarczy coś takiego:
[JAVASCRIPT] pobierz, plaintext
  1. function sprawdzanie_danych ()
  2. {
  3. if ((document.getElementById('ID sprawdzanego pola').value!="") && (document.getElementById('ID sprawdzanego pola').value!=""))
  4. {document.getElementById('ID buttona').disabled=false;} else {document.getElementById('buttona').disabled=true;}
  5. }
[JAVASCRIPT] pobierz, plaintext

Funkcja ta sprawdza czy pola są wypełnione, jeśli są odblokowuje przycisk jeśli nie to przycisk zostaje zablokowany. Trzeba by tylko zdecydować kiedy to ma być sprawdzane.


--------------------
"Wszyscy wiedzą, że czegoś nie da się zrobić, i przychodzi taki jeden, który nie wie, że się nie da, i on to właśnie robi."
Albert Einstein
Go to the top of the page
+Quote Post
oi.
post 24.11.2010, 12:17:41
Post #8





Grupa: Zarejestrowani
Postów: 145
Pomógł: 1
Dołączył: 12.07.2006

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


Jak Twoją funkcję podstawić do formularza ?:
  1. <form method="post" action="index.php?str=formularz&akcja=dodaj_ok" enctype="multipart/form-data" >
  2. <div class="c1"><input type="hidden" name="user_id" value="<?php echo $user_id; ?>" /></div>
  3. <div class="c1">*Nazwa <input name="nazwa" type="text"> </div>
  4. ...
  5. <div class="c1">Zainteresowania: <textarea name="zainteresowania" class="form" cols="30" rows="12"></textarea> </div>
  6. </form>

Chciałbym by było tak jak w tym przykładzie z walidatora JS - dynamicznie i interaktywnie. Może którychś plików js nie zaincludowałem ? Ale próbowałem na różne sposoby.
Go to the top of the page
+Quote Post
blade-mrn
post 24.11.2010, 13:00:11
Post #9





Grupa: Zarejestrowani
Postów: 113
Pomógł: 11
Dołączył: 20.10.2009

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


Jeśli chodzi o moją funkcję to najprościej jest chyba dać ją w zdarzenie OnMouseOver np do przycisku lub jego okolicy. W tedy w momencie najechania myszką nastąpi sprawdzanie i przycisk stanie się aktywny albo nie. Można to też dać jako OnChange lub OnKeyUp do pól które maja być wypełnione.
A jak wysyłasz ten formularz bo nie widzę w nim żadnego submita?


--------------------
"Wszyscy wiedzą, że czegoś nie da się zrobić, i przychodzi taki jeden, który nie wie, że się nie da, i on to właśnie robi."
Albert Einstein
Go to the top of the page
+Quote Post
oi.
post 25.11.2010, 08:51:50
Post #10





Grupa: Zarejestrowani
Postów: 145
Pomógł: 1
Dołączył: 12.07.2006

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


Mógłbyś to na moim formularzu wstawić? W JS nie jestem biegły worriedsmiley.gif
Go to the top of the page
+Quote Post
blade-mrn
post 25.11.2010, 11:36:00
Post #11





Grupa: Zarejestrowani
Postów: 113
Pomógł: 11
Dołączył: 20.10.2009

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


Skrypt JavaScript
[JAVASCRIPT] pobierz, plaintext
  1. <script LANGUAGE="JavaScript">
  2. function sprawdzanie_danych ()
  3. {
  4. if ((document.getElementById('zainteresowania').value!="") && (document.getElementById('nazwa').value!=""))
  5. {document.getElementById('wysli').disabled=false;} else {document.getElementById('wysli').disabled=true;}
  6. }
  7. </SCRIPT>
[JAVASCRIPT] pobierz, plaintext

Będzie to mnie więcej tak w wersji z OnKeyUp:
  1. <form method="post" action="index.php?str=formularz&akcja=dodaj_ok" enctype="multipart/form-data" >
  2. <div><input type="hidden" name="user_id" value="<?php echo $user_id; ?>" /></div>
  3. <div>*Nazwa <input name="nazwa" id="nazwa" type="text" onKeyUp="sprawdzanie_danych ()"> </div>
  4. <div>Zainteresowania: <textarea name="zainteresowania" id="zainteresowania" class="form" cols="30" rows="12"onKeyUp="sprawdzanie_danych ()"></textarea></div>
  5. <div><input type="submit" id="wysli" value="wysli" disabled="disabled"></div>
  6. </form>

Lub tak w wersji z OnMouseOver:
  1. <form method="post" action="index.php?str=formularz&akcja=dodaj_ok" enctype="multipart/form-data" >
  2. <div><input type="hidden" name="user_id" value="<?php echo $user_id; ?>" /></div>
  3. <div>*Nazwa <input name="nazwa" id="nazwa" type="text"> </div>
  4. <div>Zainteresowania: <textarea name="zainteresowania" id="zainteresowania" class="form" cols="30" rows="12"></textarea></div>
  5. <div onMouseOver="sprawdzanie_danych ()"><input type="submit" id="wysli" value="wysli" disabled="disabled"></div>
  6. </form>

Skrypt w obu przypadkach jest taki sam. Nie jest to zbyt genialne rozwiązanie ale działa. Nie zapominaj jednak o sprawdzeniu czy te pola nie są puste również w skrypcie php. Na potrzeby zademonstrowania tego dopisałem do twojego fragmentu formularza button.


--------------------
"Wszyscy wiedzą, że czegoś nie da się zrobić, i przychodzi taki jeden, który nie wie, że się nie da, i on to właśnie robi."
Albert Einstein
Go to the top of the page
+Quote Post
bełdzio
post 25.11.2010, 11:40:07
Post #12





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

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


weź pod uwagę 2 rzeczy:
1. walidacja w JS nie będzie działała jak wyłączysz obsługę JS
2. spamboty z zasady nie używają JS


--------------------
Go to the top of the page
+Quote Post
oi.
post 25.11.2010, 12:27:58
Post #13





Grupa: Zarejestrowani
Postów: 145
Pomógł: 1
Dołączył: 12.07.2006

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


W wersji z OnMouseOver nie działa po wypełnieniu pól jaki i przy pustych polach - przycisk wyślij jest nieaktywny. W wersji OnKeyUp: formularz działa ale jak w jednym polu np jak poniżej usunę onKeyUp="sprawdzanie_danych ()" - to pole wyslij jest niaktywne nawet po wypełnieniu wszystkich pół.
Bełdzio JS nie służy mi jako wyrocznia, tyko info dla użytkowników którzy nei wypełnili wszystkich pół. W PHP i tak sprawdzam czy sa wymagane pola.

  1. <form method="post" action="index.php?str=formularz&akcja=dodaj_ok" enctype="multipart/form-data" >
  2. <div><input type="hidden" name="user_id" value="<?php echo $user_id; ?>" /></div>
  3. <div>*Nazwa <input name="nazwa" id="nazwa" type="text" onKeyUp="sprawdzanie_danych ()"> </div>
  4. <div>Zainteresowania: <textarea name="zainteresowania" id="zainteresowania" class="form" cols="30" rows="12"></textarea></div>
  5. <div><input type="submit" id="wysli" value="wysli" disabled="disabled"></div>
  6. </form>


Ten post edytował oi. 25.11.2010, 12:37:47
Go to the top of the page
+Quote Post
blade-mrn
post 25.11.2010, 13:20:07
Post #14





Grupa: Zarejestrowani
Postów: 113
Pomógł: 11
Dołączył: 20.10.2009

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


bełdzio: Jeśli obsługa javy będzie wyłączona to akurat w tym przypadku nie tyle walidacja nie działa co przycisk się nie odblokuje, bo domyślnie jest zablokowany. Ale oczywiście się z tobą zgadzam dlatego powinno być jeszcze sprawdzanie w PHP.

oi.: Jeśli usunąłeś z jednego pola onKeyUp="sprawdzanie_danych ()" to logicznym chyba jest że musisz wyrzucić również sprawdzanie tego pola ze skryptu, czego pewnie nie zrobiłeś. Z tego co podałeś widzę że nie sprawdzasz textarea, więc warunek w JS będzie wyglądał tak:
[JAVASCRIPT] pobierz, plaintext
  1. if (document.getElementById('nazwa').value!="")
[JAVASCRIPT] pobierz, plaintext


Czemu w wersji z OnMouseOver nie działa przyznam się że nie wiem sprawdzałem to u siebie i działało ale zapewne zależy to od przeglądarki i trzeba by to w związku z tym dopracować.


--------------------
"Wszyscy wiedzą, że czegoś nie da się zrobić, i przychodzi taki jeden, który nie wie, że się nie da, i on to właśnie robi."
Albert Einstein
Go to the top of the page
+Quote Post
oi.
post 25.11.2010, 18:49:50
Post #15





Grupa: Zarejestrowani
Postów: 145
Pomógł: 1
Dołączył: 12.07.2006

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


Rzeczywiście wystarczy w if zmienić warunek :-) Co do tego onMouseOver to jeżeli nie działa na wszystkich przeglądarkach to jest nie dopuszczalne bo nie wyobrażam sobie by zwykły user czy tym bardziej klient biznesowy nie mógł dodać treści przez błąd skryptu weryfikującego.

Mam prośbę czy możecie zobaczyć www.jsvalidate.com/demo jak to jest z tym gotowym skryptem walidacji ? Wygląda i sprawuje się na tej stronie dobrze, ale jak chcę go wdrożyć do siebie to zachowuje się tak jakby nie było tego JS na stronie. Pobrałem http://www.jsvalidate.com/download/get/ zainkludowałem JS na stronie . Zauważyłem, że w kodzie źródłowym na demo jest :
  1. <script type="text/javascript" language="javascript" src="/scriptaculous/lib/prototype.js"></script>
  2. <script type="text/javascript" language="javascript" src="/scriptaculous/src/scriptaculous.js"></script>
  3. <script type="text/javascript" language="javascript" src="/versions/jsvalidate_beta04.js"></script>

natomiast jak to demo zapisze na dysk to w źródle jest dużo więcej odnośników do skryptów JS
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: 13.07.2025 - 15:24