Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [html]zabezpieczenie formularza
Forum PHP.pl > Forum > Przedszkole
dave666
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
Adrian1207
  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
zulus
To problem JavaScript, w HTML tego nie zrobisz
dave666
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>
Rafal Filipek
do walidacji formularzy za pomoca js polecam cos gotowego np. http://www.jsvalidate.com/
oi.
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
blade-mrn
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.
oi.
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.
blade-mrn
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?
oi.
Mógłbyś to na moim formularzu wstawić? W JS nie jestem biegły worriedsmiley.gif
blade-mrn
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.
bełdzio
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
oi.
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>
blade-mrn
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ć.
oi.
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
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.