Evo, probao na mom serveru i rezultati su sledeci:
PHP:
<?
if (!isset($_POST['username']) || !isset($_POST['password']) ) {
echo"Provera uz ISSET() nije uspela, nedostaje barem jedno polje za INPUT<br/>";
echo"<a href='prijava.php'>Vratite se nazad";
}
if (empty($_POST['username']) || empty($_POST['password'])) {
echo "Polja postoje ali provera EMPTY() nasla da je barem jedno polje PRAZNO<br/>\nVratite se nazad";
}
else echo "OK";
?>
Jedno polje jednostavno ne psotoji u formi:
---------------
PHP:
<?
if (!isset($_POST['username']) || !isset($_POST['password']) ) {
echo"Provera uz ISSET() nije uspela, nedostaje barem jedno polje za INPUT<br/>";
echo"<a href='prijava.php'>Vratite se nazad";
}
if (empty($_POST['username']) || empty($_POST['password'])) {
echo "Polja postoje ali provera EMPTY() nasla da je barem jedno polje PRAZNO<br/>\nVratite se nazad";
}
else echo "OK";
?>
Jedno od polja je prazno, a jedno ima neki sadrzaj:
------------------
PHP:
<?
if (empty($_POST['username']) || empty($_POST['password'])) {
echo "Polja postoje ali provera EMPTY() nasla da je barem jedno polje PRAZNO<br/>\nVratite se nazad";
}
else echo "OK";
?>
Oba polja sam izbacio iz forme, evo sta prijavljuje ovaj kod, uopste ne prijavljuje da NEMA varijabli:
------------
PHP:
<?
if (empty($_POST['username']) || empty($_POST['password'])) {
echo "Polja postoje ali provera EMPTY() nasla da je barem jedno polje PRAZNO<br/>\nVratite se nazad";
}
else echo "OK";
?>
Ostavo samo jendo polje a jedno fali, rezltat je:
----------
PHP:
<?
if ((!$_POST['username']) || (!$_POST['password']))
{
echo"Niste uneli potrebno podakte<br/>";
echo"<a href='prijava.php'>Vratite se nazad";
}
else echo "OK";
?>
jednog polja nema a drugom sam uneo sadrzaj, puca na jendom polju a oprijavljuje i da nema sadrzaja:
--------------
PHP:
<?
if ((!$_POST['username']) || (!$_POST['password']))
{
echo"Niste uneli potrebno podakte<br/>";
echo"<a href='prijava.php'>Vratite se nazad";
}
else echo "OK";
?>
Nisam ni jednu varijablu ostavio u formi, izvestaj je konfuzan a i program puca...
Zakljucak po meni:
Veoma je bitno iz razloga kompletnog testa sta forma salje, da se koristi ISSET() u kombinaciji sa EMPTY() To iz razloga sto ISSET() i EMPTY()
nikako ne testiraju istu stvar i nikako ne mogu da se koriste za iste namene.
ISSET() se koristi iskljucivo za testiranje POSTOJANJA varijable iz forme
EMPTY() se testira da li varijabla uopste ima sadrzaj (a ne da li postoji ako nema vec sadrzaj)
Drugi primer koda i bez ISSET() i EMPTY() (zadnja dva primera) pokazuju da je takvo testiranje tek nepravilno, jer pre svega ako nema varijable, program puca a i ne testira to sto hocemo i kako hocemo.
Tvrdnja da i ako funkcija EMPTY() prijavi da nema sadrzaja, to pokriva i slucaj ako uopste nema varijable, ne moze se u programerskom smislu smatrati korektnom. U dva razlicita slucaja moramo kontrolisati
stvarno stanje:
- Postoje li sve potrebne varijable u formi (ili da li su im imena identicna u PHP i u formi)
- Ako postoje, da li imaju sadrzaj
U ta dva slucaja, koristimo razlicite funkcije, da bi tacno ustanovili sta je problem i dali odgovorajucu poruku korisnku. Ako ne koristimo ISSET(), nego samo EMPTY() na primer ( a nijedna varijabla u formi na primer nije definisana) i funkcija vrati poruku da fale podaci a ne kaze da nema zapravo varijabli, velika je greska.
Potrebno je dakle testirati DVE stvari, jedna bez druge ne vrede mnogo u programerskom smislu a i u smislu upotrebljivosti koda sa strane korisnika:
1. Da li varijable uopste postoje (jedna vrsta poruke se salje korisniku ake ne postoje)
2. Ako postoje, da li imaju sadrzaj (ako nemaju saje se druga vrsta poruke korisniku)