php validacija forme

3

php validacija forme

offline
  • Pridružio: 06 Apr 2005
  • Poruke: 403
  • Gde živiš: Beograd

Pa recimo:
if (empty($_POST['nesto'])) { $error[] = "Sinak popuni trazeno polje nesto"; }
I tako lepo prodjes sva potrebna polja.
Svaki put kad se javi greska ti punis niz $error nekim porukama.
Kad prodjes sve promenjive koje proveravas, onda proveris da li je niz $error prazan.
Ako jeste snimanje u bazu.Ako nije prikazes greske jednim foreach-om npr.

EDIT:Sad sam tek pazljivo procitao celu temu pa da dam malo konkretniji odgovor.
Proveru koji je tip podataka unesen (broj, string...) mozes da radis preko regularnih izraza.Znaci ili preg_match() ili recimo eregi().
Isto vazi i za email.Sam regex pattern nadji na googlu (vrlo je lako).

I jedan tip za kraj:
Nigde ne escapujes promenjive u source-u koji si okacio ovde.
Obavezno bar addslashes() a bolje je mysql_real_escape_string() za stringove.
Za brojeve koristi: $neki_broj = intval($_POST['neki_broj']);



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • DR  Male
  • Legendarni građanin
  • Pridružio: 08 Okt 2004
  • Poruke: 5450
  • Gde živiš: Beograd

jok vala, ni ova kombinacija ne radi ... <body> <?    //upis u bazu    if ( isset($_POST['potvrdi']) ) {       $drzava = trim($_POST['drzava']);       $naziv = trim($_POST['naziv']);       $adresa = trim($_POST['adresa']);       $mesto = trim($_POST['mesto']);       $telefon = trim($_POST['telefon']);       $fax = trim($_POST['fax']);       $email = trim($_POST['email']);       $upis = "insert into registar (Drzava, Naziv, Adresa, Mesto, Telefon, Fax, Email) values ('$drzava', '$naziv', '$adresa', '$mesto', '$telefon', '$fax', '$email')";       if( mysql_query($upis) ) {          echo("upisano");       }       else {          echo("greska u upisu");       }          } if (empty($_POST['naziv'])) { $error[] = "Sinak popuni trazeno polje nesto"; } ?>



offline
  • Blood  Male
  • Ugledni građanin
  • Pridružio: 26 Jul 2003
  • Poruke: 384
  • Gde živiš: Beograd

DR ::thanx mr.balkanac Smile
Blood ::u sustini nemas neko pravilo, proveris samo da li su sva polja popunjena
if ( isset($_POST['potvrdi']) && isset($_POST['drzava']) && isset($_POST['naziv']) (i tako za sve ostale) ) {
$drzava = trim($_POST['drzava']);
$naziv = trim($_POST['naziv']);
$adresa = trim($_POST['adresa']);


Ovo ne vrsi funkciju, iskljucivanjem js-a mogu da posaljem potpuno prazan formular.


Ja inace ne radim tako proveru nikada, same regularne izraze ubacim u js, a sto se tice php-a jednostavno proverim da nije prazno $_POST['nesto'] != ''

DR ::
aha, znam.
i postoji li nacin da se npr za polje godine ogranici mogucnost izbora od npr 1950.god pa do 2006.??

Mislim da ti je za to najbolje da napravis select box i da kao opcije ponudis samo te godine koje zelis:
for($i=1950;$i<=date('Y');$i++) { echo "<option value=$i>$i</option>\n"; }
i naravno, ako zelis jos dodatnu zastitu, kod koji ti je balkanac postovao Wink

offline
  • Pridružio: 06 Apr 2005
  • Poruke: 403
  • Gde živiš: Beograd

@DR

Kod ti je lose organizovan (radis proveru posle upisa u bazu?!).
Probaj da ga organizujes ovako nekako:

<body> <?    //upis u bazu    if ( isset($_POST['potvrdi']) ) {       if (empty($_POST['naziv']))      {        $error[] = "Sinak popuni trazeno polje nesto";      }       $drzava = trim($_POST['drzava']);       $naziv = trim($_POST['naziv']);       $adresa = trim($_POST['adresa']);       $mesto = trim($_POST['mesto']);       $telefon = trim($_POST['telefon']);       $fax = trim($_POST['fax']);       $email = trim($_POST['email']);       if (empty($errors))       {            $upis = "insert into registar (Drzava, Naziv, Adresa,  Mesto, Telefon, Fax, Email) values ('$drzava', '$naziv', '$adresa', '$mesto', '$telefon', '$fax', '$email')";             if( mysql_query($upis) )             {                  echo("upisano");             }else {                  echo("greska u upisu");             }       }else{        echo "Ispravite sledece greske:";        foreach ($errors as $key=>$value)       {          echo $value."<br />";       }    } ?>

Ovo je katastrofa kod, ali princip je taj.

offline
  • DR  Male
  • Legendarni građanin
  • Pridružio: 08 Okt 2004
  • Poruke: 5450
  • Gde živiš: Beograd

ovakav kod javlja gresku unexpected $end na liniji koja sadrzi </html>. dodao sam jos 1 } i to ispravio tako.
medjutim, i dalje salje prazan formular. Bebee Dol Smile

offline
  • Pridružio: 06 Apr 2005
  • Poruke: 403
  • Gde živiš: Beograd

Sta znaci salje?
Dozvoljava da pretisnes submit ako nisi popunio trazena polja?
Ako je to, to moras da resis sa Java Script-om i to sa PHP-om nema nikakve veze.

offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3666
  • Gde živiš: 127.0.0.1

Probaj ovako da proveris imas li gresaka:

umesto:

if (empty($errors))

koristi

$broj = count($errors); if ($broj != 0)

i gledaj da proveris sva polja, a ne samo naziv Mr. Green

offline
  • DR  Male
  • Legendarni građanin
  • Pridružio: 08 Okt 2004
  • Poruke: 5450
  • Gde živiš: Beograd

centaur ::Sta znaci salje?
Dozvoljava da pretisnes submit ako nisi popunio trazena polja?
Ako je to, to moras da resis sa Java Script-om i to sa PHP-om nema nikakve veze.

da ali ne upisuje u bazu sto je ok medjutim sta ako se izostavi neko vazno polje a iskljucen je js a taj podatak npr moze da bude veoma vazan? Wink
rastafari i to vec deluje s tim da imam sledece greske Notice: Undefined variable: errors in c:\program files\easyphp1-7\www\forum\ap14.php on line 68 Ispravite sledece greske: Warning: Invalid argument supplied for foreach() in c:\program files\easyphp1-7\www\forum\ap14.php on line 81

offline
  • Pridružio: 06 Apr 2005
  • Poruke: 403
  • Gde živiš: Beograd

DR ::
da ali ne upisuje u bazu sto je ok medjutim sta ako se izostavi neko vazno polje a iskljucen je js a taj podatak npr moze da bude veoma vazan? Wink


Ti ne mozes 100% da sprecis usera da submituje formu nikada (osim ako ne sakrijes submit polje, a i tad ce se snaci Wink )
Ali zato mozes da ne snimis nesipravne podatke, da kreiras poruke o greskama, da mu ih prikazes i omogucios mu da ispravi neispravno unete podatke.

offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3666
  • Gde živiš: 127.0.0.1

obrati paznju na typo: kad desinises niz, on se zove $error, a kad proveravas jel ima elemenata u njemu, onda se zove $errors...

dodaj s na pocetku ili ga oduzmi na kraju Wink

Dopuna: 22 Avg 2007 13:19

a za JS, verovatno ti u IE brani, a u FF dozvoljava slanje prazne forme...

non-IE browseri malo drugacije shvataju JS, a IE shvata i jedno i drugo...

probaj da if(document.forma.telefon.value.length
zamenis sa if(document.forms[0].elements[0].value.lenght

s tim sto ti je prvi element u formi broj 0, drugi 1 i tako dalje...

Ko je trenutno na forumu
 

Ukupno su 698 korisnika na forumu :: 24 registrovanih, 3 sakrivenih i 671 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Bahuss, Bane san, BasCelik, BraneS, Brankoni, BSD, Crazzer, Deneb, Doca, DonRumataEstorski, dule clio, Dzoni90, kuntalo, Milan A. Nikolic, Milos ZA, mračni čovek, Ognjen D., Panonsky, sakota79, sovanova95, Srki98, Steeeefan, Vlad000, zogi036