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: 3763
  • 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: 3763
  • 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 3376 korisnika na forumu :: 47 registrovanih, 2 sakrivenih i 3327 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 20624 - dana 04 Apr 2026 04:18

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 10x10.9, A.R.Chafee.Jr., aramis s, Banovo Brdo, Buzdovan, casual03, celik, Centauro, Crazzer, Dare, DejanSt, delboy, Devil city 1989, doragan, dragisa dragisa, Dzambas, Gheljda, icemilos, jaeger, jalos, janbo, JOntra, laurusri, leopard83, ljuba.b, Marky, mikoyan21, Mitogna, Mićko, MountAndBlade, mrvica78, nnovakis, Smd, starlights, Tafocus, Tanjagre, Tas011, Trpe Grozni, vandrej, vazduh, Veless, Vlad000, vojnik švejk, yiyi, Zec, zlukic, zziko