[ Zlatiborac @ 10.02.2004. 20:32 ] @
Problem je sledeci:
Naime, potrebno je da uradim jednu povecu formu koja bi podatke prosledjivala dalje,., da li na mail ili u bazu nije bitno za prichu.,., problem sa kojim sam se sreo sad, a i dosada je u proverama.
Naime dosada sam koristio samo proveru da li je u polje upisano bilo shta i ako nije vracala bi nazad da se popuni, ali sa tim da su dotada popunjena polja zadrzavala one vrednosti koje su unete u njih.
To sam radio tako shto bih prvo primio promenjive, proverio polja, i ako neki od uslova nije ispunjen, preshlo bi se na kod prethodne strane.,.,. ,evo kako je to izgledalo.,., uproshteno naravno.,.,., ako me neko ne razume:


Prva strana na kojoj se nalaze polja!!!

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form name="form1" method="post" action="">
<p>
<input name="ime" type="text" id="ime">
Ime
</p>
<p>
<input name="prezime" type="text" id="prezime">
Prezime
</p>
<p>
<input type="submit" name="Submit" value="Unesi">
<input type="reset" name="Submit2" value="Reset">
</p>
</form>
</body>
</html>


Druga strana koja proverava i prosledjuje dalje podatke

<?php
$ime = $HTTP_POST_VARS['ime'];
$prezime = $HTTP_POST_VARS['prezime'];

if ( empty ( $ime )|| empty ( $prezime ))
{
?>
<font color=\"#ff0000\">Neko od polja nije uneto!!!</font>
<form name="form1" method="post" action="">
<p>
<input name="ime" type="text" id="ime" value="<?php print "$ime"; ?>">
Ime
<?php if ( empty ( $ime ) ) { print "<font color=\"#ff0000\">*</font>"; } ?>
</p>
<p>
<input name="prezime" type="text" id="prezime" value="<?php print "$prezime"; ?>">
Prezime
<?php if ( empty ( $prezime ) ) { print "<font color=\"#ff0000\">*</font>"; } ?>
</p>
<p>
<input type="submit" name="Submit" value="Unesi">
<input type="reset" name="Submit2" value="Reset">
</p>
</form>
<?php
} else {
$to = "[email protected]";
$subject = "Forma";
$message = "
Korisnik je uneo sledece podatke\n

Ime klijenta: $ime \n
Prezime klijenta: $prezime \n
";
mail ( $to, $subject, $message);
echo "Mail je poslat!!!";
exit();
}

?>

Kao shto vidite u drugom fajlu ako nije neshto uneto prlazi se na ponovni unos, s'tim da se zadrzavaju vrednosti koje su unete.

I shta je sada problem?!
Pa sve je ovo lako kada se rade male forme i kada se od vas ne zahteva da proveravate da li su u polje ime uneta samo slova, da li je telefon OK, i sve ostalo.,.,.,.
Ali shta se deshava kada je potrebna provera i imena (da li su slova samo u pitanju), i telefona, i soc. broja, lichne karte.,.,.
Pokushavao sam neshto da uradim preko funkcija koje bi proveravale da li su u pitanju samo brojevi ili slova.,.,., ali .,.,., ali je tu shto se sve ovo jako zakomplikuje kada imate formu sa 30ak polja, pa kad morate da kopirate sva polja.,.,,.,

Znachi shta mene interesuje.,., ima li neko prostije reshenje od ovoga koje sam koristio dosada?
Zna li ko koje se funkcije koriste.,., ja sam koristio sledecu npr. za e-mail validaciju

$pattern = '^([._a-zA-Z0-9-]){2,255}@([._a-zA-Z0-9-]){2,255}\.([a-zA-Z]){2,3}$';
if (!ereg ($pattern,$email)) {
echo "bad email";
}
i nije mi se pokazala OK.,.,., i ovu

if (ereg(^([a-zA-Z0-9_-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([a-zA-Z0-9-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$, $_POST['email'])) {
echo "<br>Please enter a valid e-mail address.";
}

Nashao sam dosta primera na NETu ovih provera, ali nijedan primer ovoga shto meni treba.
PLS, nemojte mi reci da koristim JAVAu ili sl. Zelim ovo da uradim u PHPu!
[ NetworkAdmin @ 10.02.2004. 21:35 ] @
evo nije bas 100% ono sto trazis ali ima dosta elemenata ustvari provjerava sve elemente forme prije upisa u database:

http://www.phpinsider.com/php/code/SafeSQL/

Tamo imas provjere jeli nesto numericko, mail, samo slova slova i brojevi minimalna/max duzina i mnogo stosta.

Tamo imas objasnjenja sta i kako raditi a ovo je malo starija klasa ali tamo mozes naci trag kuda dalje ici.
[ luka357 @ 10.02.2004. 22:29 ] @
Probaj ovo da primjenis, kod mene radi na jednoj veoma velikoj formi, ako ti trebaju neke druge provjere mogu da pregledam neke svoje aplikacije u kojima sam koristio provjere za upise u bazu i na server preko formi.

$validEmailExpr =
"^[0-9a-z~!#$%& -]([.]?[0-9a-z~!#$%& -])*" .
"@[0-9a-z~!#$%& -]([.]?[0-9a-z~!#$%& -])*$";

if (empty($email))

$errors["email"] .= "Elektronska adresa je obavezna kategorija.";

elseif (!eregi($validEmailExpr, $email))
// Adresa poste mora da se poklapa sa regularnim izrazom
$errors["email"] .= "Adresa poste mora da se poklapa sa regularnim izrazom ime@domain.";

elseif (strlen($email) >50)
//Dozvoljeno je najvise 50 znakova
$errors["email"] .= "Dozvoljeno je najvise 50 slovnih znakova.";
[ Zlatiborac @ 10.02.2004. 23:26 ] @
Hvala vam na pomoci, ali mozda sam ja malo da kazem promashio.,.,., evo na shta mislim.
Naime, ima dosta objashnjenja na NETu kako proveriti ispravnost.,.,. mene za sad vishe interesuje da li je put koji koristim OK. Da li je u redu ovakav nachin "vracanja" nazad uz upozorenje da neshto nije upisano?
Shta vi koristite?
[ _owl_ @ 10.02.2004. 23:41 ] @
Mrzelo me da citam kod koji si poslao, ali pod hitno razmisli o koriscenju nekog templejt sistema. Inace princip koji si opisao je sasvim OK, korisnik popuni formu ti proveris polja i ili ides dalje ili ga vracas na formu sa porukom o gresci. Idealno bi bilo kada bi postojala i JS validacija cisto da se podaci ne salju na server i nazad u slucaju neke trivijalne greske(ne popunjeno polje, neka prostija validacija).
[ Zlatiborac @ 11.02.2004. 00:27 ] @
Eto, da si prochitao barem kraj video bi da je bash to reshenje ono shto ne zelim.,.,. jako retko upotrebljavam ono za shta ne znam kako funkcionishe :)
Ipak, hvala ti!
[ arsa xx @ 11.02.2004. 01:23 ] @
Svakako ces morati zasuci rukave
evo male pomoci: http://www.thewebmasters.net/php/Validator.phtml
[ noviKorisnik @ 11.02.2004. 08:26 ] @
Citat:
Zlatiborac:
...
PLS, nemojte mi reci da koristim JAVAu ili sl. Zelim ovo da uradim u PHPu!
Citat:
_owl_:
Idealno bi bilo kada bi postojala i JS validacija cisto da se podaci ne salju na server i nazad u slucaju neke trivijalne greske(ne popunjeno polje, neka prostija validacija).

Eto, da si prochitao barem kraj video bi da je bash to reshenje ono shto ne zelim.,.,. jako retko upotrebljavam ono za shta ne znam kako funkcionishe :)
Ipak, hvala ti!

_owl_ je predložio da se koristi JS validacija, što nije Java a nije ni slično.

Princip validacije u JS je prilično sličan opisanom u PHP-u. Postoje regularni izrazi za određene oblike traženog unosa i radi se provera da li vrednost nekog polja u formularu zadovoljava pretpostavljenu šemu. Ako je neko polje neispravno popunjeno, formular se ne prosleđuje već se, na primer, daje poruka o grešci i selektuje neispravno popunjeno polje. Formular se prosleđuje tek kada su sva polja uspešno postavljena.

Zašto cela ova priča? Dva su razloga - izbegava se maltretiranje korisnika u čekanju nove stranice koja javlja grešku i izbegavaju se suvišni zahtevi serveru.

Opet, što se tiče provere - stoji preporuka da se izvrši JS validacija formulara pre slanja (za to JS isključivo i služi), a takođe stoji i preporuka da se i pored toga radi validacija i na PHP strani. Znači - dupla validacija.

Evo samo primer validacije u JS, da vidiš da to nije nešto strašno:

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script>
function proveri (formular)
{
if (formular.ime.value == '')
{
alert ('ime mora biti popunjeno');
formular.ime.focus ();
return false;
}
if (formular.prezime.value == '')
{
alert ('prezime mora biti popunjeno');
formular.prezime.focus ();
return false;
}
return true;
}
</script>

</head>

<body>
<form name="form1" method="post" action="">
<p>
<input name="ime" type="text" id="ime">
Ime
</p>
<p>
<input name="prezime" type="text" id="prezime">
Prezime
</p>
<p>
<input type="submit" name="Submit" value="Unesi" onclick="return proveri (this.form);">
<input type="reset" name="Submit2" value="Reset">
</p>
</form>
</body>
</html>
[ Zlatiborac @ 11.02.2004. 12:55 ] @
Hmm.,.,., ovaj kod koji si dao radi proveru da li je ishta upisano .,.,., to mi je ferceralo i samo sa PHPom. Kako sada izvesti proveru ispravnosti upisanog polja, tj. da li se u imenu nalaze samo slova.,.,. u broju telefona samo brojevi i sl.???
[ noviKorisnik @ 11.02.2004. 14:21 ] @
Izvini, krenuo sam po prvom primeru koji je bio baš takav. Nije stvar u tome da ćeš u JS uraditi nešto što ne možeš u PHP-u. Za provere različitih oblika unosa koriste se takođe regularni izrazi, baš kao što bi se izvelo u PHP-u. Primer
Code:
function check_numeric (value)
{
  var r = /^\d+$/;
  return r.test (value);
}

Za proveru e-maila ne znam jer i nisam našao koji je opšti oblik dozvoljene e-mail adrese, a vidim da je to veći problem. U praksi je verovatno dovoljno nešto od ovih predloženih šema.

Sama ideja provere u JS je iz razloga da se spreči nepotrebno višestruko prosleđivanje formulara. Pored ove provere neophodna je i PHP provera jer korisnik može i da isključi JS u svom browseru (kada se formular prosleđuje u svakom slučaju).
[ NetworkAdmin @ 11.02.2004. 14:56 ] @
Evo ovdje imas masu php form validatora

http://php.resourceindex.com/F...e_Development/Data_Validation/
[ Zlatiborac @ 11.02.2004. 16:02 ] @
OK.,., pogledacu sve to. Malopre sam nashao jedan JS primerchic, pa ako ne stignem da zavrshim ono shto sam planirao moracu da koristim JS :(