Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Formularz - zabezpieczenie
Forum PHP.pl > Forum > Przedszkole
gizmo1985
Witam
Mam pytanie typu : Jak zabezpieczyć formularz, żeby nie było możliwości wysłania pustych danych ?
Domyślam się, że trzeba sprawdzić jakąś funkcją czy pole tekstowe nie jest pełne ?
Czy się mylę ?

Mój formularz :
  1. Miasto: <input type="text" name="miasto"
  2. value="<?php echo $row['miasto']; ?>"><br>
  3. Wojewodztwo: <input type="text" name="wojewodztwo"
  4. value="<?php echo $row['wojewodztwo']; ?>"><br>
  5. Kod pocztowy: <input type="text" name="kod_pocztowy"
  6. value="<?php echo $row['state']; ?>"><br>
  7. Numer telefonu: <input type="text" name="nt_tel"
  8. value="<?php echo $row['nr_tel']; ?>"><br>
  9. Email: <input type="text" name="email"
  10. value="<?php echo $row['email']; ?>"><br>
bełdzio
isset / empty
pedro84
  1. // Analogicznie dla każdego pola, w pętli czy osobo, to już Twoja decyzja
  2. if(empty($_POST['miasto'] {
  3. echo 'Puste pole: miasto';
  4. } else {
  5. // formularz zwalidowany, akcja
  6. }
elmozaur
lepiej zrobic po stronie klienta za pomoca JS.
dzieki temu jeszcze przed wyslaniem formularz moze byc sprawdzony
evolucja
Weź tak nie mów po potem zapomni o sprawdzeniu tego po stronie serwera smile.gif Walidacja za pomocą JS to tylko dodatek...
gizmo1985
Generalnie jakbym umiał JS, to nie bawiłbym się w takie pierdołki biggrin.gif

A takie pytanie jeszcze mam, jak zrobić takie cóś, żeby w momencie nie wpisania nic w pole, nic nie zostało wysłane ...
W sensie przy aktualizacji, żeby nie zapisywało mi pustej wartości w bazie winksmiley.jpg

elmozaur
Cytat(evolucja @ 23.01.2010, 18:26:16 ) *
Weź tak nie mów po potem zapomni o sprawdzeniu tego po stronie serwera smile.gif Walidacja za pomocą JS to tylko dodatek...


O a to ciekawe teraz to ja tez jestem ciekaw dlaczego tak myslisz ?
Zawsze myslalem tak:
to czy pola sa puste (sprawdzenie podstawowe) mozna zrobic w zwyklym JS.
dane sa wysylane i dalsze sprawdzanie i filtrowanie odbywa sie po stronie php.

jesli sie myle prosze mnie poprawic
evolucja
W sumie nie doczytałem wszystkiego do końca, myślałem, że mówisz o całej walidacji only JS.
gizmo1985
A takie pytanie jeszcze mam, jak zrobić takie cóś, żeby w momencie nie wpisania nic w pole, nic nie zostało wysłane ...
W sensie przy aktualizacji, żeby nie zapisywało mi pustej wartości w bazie winksmiley.jpg tongue.gif
elmozaur
no wlasnie ;-) bo po co wysylac formularz z pustymi polami ? wyswietlac komunikat na innej stronie i raz jeszcze wracac do tego samego formularza skoro mozna to zrobic na tej samej stronie po 1 kliknieciu myszki ;-)
evolucja
No tak jak koledzy mówili..
via JS - nie wyślesz formularza dopóki nie zostaną wpisane dane
via PHP - jeśli jakaś zmienna jest empty np. empty($_POST['miasto']) to wtedy nie wykonujesz zapisu do bazy.
elmozaur
Cytat(gizmo1985 @ 23.01.2010, 18:43:45 ) *
A takie pytanie jeszcze mam, jak zrobić takie cóś, żeby w momencie nie wpisania nic w pole, nic nie zostało wysłane ...
W sensie przy aktualizacji, żeby nie zapisywało mi pustej wartości w bazie winksmiley.jpg tongue.gif


dokladnie tak jak napisalem wyzej ;-)
gizmo1985
No tak winksmiley.jpg
ale to muszę mozolnie dla każdego pola tworzyć winksmiley.jpg czy da się to jakoś uogólnić ? tongue.gif
evolucja
dlaczego mozolnie? biggrin.gif
  1. if($_POST["pole1"]; != null|$_POST["pole2"]; != null|$_POST["pole3"]; != null|$_POST["pole4"]; != null|$_POST["pole5"]; != null) {
  2. <zapisujesz do bazy> } else {
  3. <wyswietlasz blad> }
pedro84
Cytat(evolucja @ 23.01.2010, 18:53:36 ) *
dlaczego mozolnie? biggrin.gif
  1. if($_POST["pole1"]; != null|$_POST["pole2"]; != null|$_POST["pole3"]; != null|$_POST["pole4"]; != null|$_POST["pole5"]; != null) {
  2. <zapisujesz do bazy> } else {
  3. <wyswietlasz blad> }



gizmo1985, możesz to zrobić w ten sposób jak Ci podał evolucja, choć akurat lepiej użyć empty(). Nie zapomnij, że najpierw rób wszystko po stronie serwera, ewentualnie potem baw się js.
elmozaur
Cytat(pedro84 @ 23.01.2010, 19:03:59 ) *
gizmo1985, możesz to zrobić w ten sposób jak Ci podał evolucja, choć akurat lepiej użyć empty(). Nie zapomnij, że najpierw rób wszystko po stronie serwera, ewentualnie potem baw się js.



Rozwiazanie kompletnie nie logiczne jak dla mnie gdyz:
wyobraz sobie ze 10000000 userow wysyla w tym samym czasie do bazy swoje formularze z czego 50% ma puste pola.
Jesli po stronie klienta najpierw sprawdzisz formularz za pomoca JS to nie bedziesz musial "meczyc" serwera zbednymi odpowiedziami aby userzy poprawili i wysylali raz jeszcze swoje formularze. Dodatkowo do bazy trafia jedynie pelne i poprawnie wypelnione wersje.
evolucja
Cytat
ewentuanie potem baw się js.
pedro84
Cytat(elmozaur @ 23.01.2010, 19:14:19 ) *
Rozwiazanie kompletnie nie logiczne jak dla mnie gdyz:
wyobraz sobie ze 10000000 userow wysyla w tym samym czasie do bazy swoje formularze z czego 50% ma puste pola.
Jesli po stronie klienta najpierw sprawdzisz formularz za pomoca JS to nie bedziesz musial "meczyc" serwera zbednymi odpowiedziami aby userzy poprawili i wysylali raz jeszcze swoje formularze. Dodatkowo do bazy trafia jedynie pelne i poprawnie wypelnione wersje.


Czy Ty rozumiesz o czym piszesz, bo wydaje mi się, że nie. Przecież logiczne jest, że:
1. Najpierw robi walidację PHP
2. Potem się bawi w walidację za pomocą js.
---
3. Waliduje js.
4. Kiedy js jest wyłączony, waliduje PHP.

Ot, cały trik.
Kshyhoo
W JS przed wysłaniem danych:
  1. <script language="javascript" type="text/javascript">
  2. function error(tekst) {
  3. if (errfound) return;
  4. window.alert(tekst);
  5. errfound = true;
  6. }
  7. function validate() {
  8. errfound = false;
  9. var bledy = "";
  10. with (document.forms[0]) {
  11. if (tytul.value == "") bledy += "Nie wpisałeś tytułu.\n";
  12. if (autor.value == "") bledy += "Nie wpisałeś autora.\n";
  13. if (kat_id.value == "") bledy += "Nie wybrałeś kategorii.\n";
  14. if (bledy != "") error(bledy);
  15. }
  16. return !errfound;
  17. }
  18. </script>
  19.  
  20. <form method='post' action='plik.php' onsubmit='return validate();'>
elmozaur
Cytat(pedro84 @ 23.01.2010, 19:16:56 ) *
Czy Ty rozumiesz o czym piszesz, bo wydaje mi się, że nie. Przecież logiczne jest, że:
1. Najpierw robi walidację PHP
2. Potem się bawi w walidację za pomocą js.
---
3. Waliduje js.
4. Kiedy js jest wyłączony, waliduje PHP.
Ot, cały trik.


Moge sie mysli oczywiscie nie mowie ze nie...
ale jak masz otwarta strone z formularzem
to jak przed wyslaniem chcialbys sprawdzic czy formularz zostal wypelniony questionmark.gif? PHPem ? a dopiero potem JSem questionmark.gif?
evolucja
Tak.

Odpuść sobie kolego.. już każdy rozumie o co chodzi z walidacją JS i PHP, nawet autor tematu który sprawę chciał rozwiązać only via PHP a nie JS(tag tematu).
pedro84
Cytat(elmozaur @ 23.01.2010, 19:23:02 ) *
Moge sie mysli oczywiscie nie mowie ze nie...
ale jak masz otwarta strone z formularzem
to jak przed wyslaniem chcialbys sprawdzic czy formularz zostal wypelniony questionmark.gif? PHPem ? a dopiero potem JSem questionmark.gif?


No i się mylisz :-)

Przecież jak sobie zrobi walidację za pomocą js, to js będzie walidował formularz. Dopiero jak w przeglądarce będzie wyłączony js, wtedy funkcje, że tak określę, walidatora, przejmie serwer via PHP.
gizmo1985
Intersuje mnie tylko PHP winksmiley.jpg JS narazie nie jest mi do życia potrzebny;)

Dzięki ludziska winksmiley.jpg sporo mi pomogliście winksmiley.jpg
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.