[ Daffa @ 11.05.2009. 17:45 ] @
Pozdrav svima.

Napravio sam php skriptu za validaciju formi, i s njom je sve u redu. Takodje imam i javascript validaciju formi, i s njom je takodje sve u redu.
Sad imam problem sto ne umijem da postavim redosled: ukoliko korisnik u formu unese neodgovarajuci podatak, treba da se aktivira javascript validacija. PHP validacija mi treba samo ako korisnik u svom pretrazivacu nema ukljucen javascript. Kako ovo izvesti?

Izvinjavam se ukoliko tema vec postoji, ja je nisam nasao.

Hvala unaprijed.
[ Nikola Poša @ 11.05.2009. 18:17 ] @
Nemoj da se oslanjaš samo na validaciju sa strane klijenta, jer postoje dosta načina da se ona "zaobiđe". PHP, i uopšte, server-side validaciju nikako ne trebaš da preskačeš.

JavaScript validaciju možeš da pišeš čisto da ne bi svaki put morao ponovo da učitavaš stranu nakon submit-ovanja forme. Npr. korisnik ostavi neko polje nepopunjeno, i ti ga onda JavaScript-om samo obavestiš o tome, pre nego što se ti podaci pošalju na server.

Ja inače u potpunosti izbegavam client-side validaciju, a i kad hoću da dodam malo "user-friendly" efekta pri validaciji neke forme, onda to radim koristeći AJAX, što se opet svodi na server-side validaciju.
[ Daffa @ 11.05.2009. 18:24 ] @
OK, hvala na savjetu, ali mi nista konkretno nisi rekao vezano za moj problem. Za sada mi treba ovako kako sam prethodno opisao.

Naravno, zahvalan sam na ovom predlogu.
[ Nikola Poša @ 11.05.2009. 19:45 ] @
Pa što se tiče provere da li je JS uključen ili ne, meni jedino pada napamet ovako nešto:
Code:

<?php
//Ovde ide neki tvoj PHP kod
?>
<html>
   <body>
   <script type="text/javascript">
      window.location = 'http://www.mojsajt.com/javascript_omogucen.html';
   </script>
      Ovde ide neki sadrzaj koji ce se ispisivati za slucaj da JS nije omogucen.
   </body>
</html>

Drugi način:
Code:

<html>
   <head>
      <title>Title</title>

      <noscript>
         <meta http-equiv="refresh" content="0;url=http://www.mojsajt.com/javascript_onemogucen.html"/>
      </noscript>
   </head>

   <body>
       <?php //tvoj PHP kod ?>
   </body>
</html>

Poenta je da imaš dve iste stranice, samo što ćeš jednu od njih korisiti samo u slučaju da je uključen JS, a ovu drugu kad nije uključen. Evo recimo ovaj prvi primer će pokušati da se redirektuje na stranu javascript_omogucen.html, a to će uspeti samo ako je JS omogućen u browser-u. U suprotnom ispisaće se neki drugi sadržaj, odnosno, isti onaj koji imaš na javascript_omogucen.html, samo što će validacija ići PHP-om.

Ne garantujem da će to da proradi iz prve, al čisto da ti dam neku ideju.
[ Nikola Poša @ 11.05.2009. 20:18 ] @
btw Sad mi pade napamet još jedna bolja varijanta...

U liniji form tag-a možeš da dodaš događaj onsubmit, koji će da poziva tu tvoju f-ju za validaciju u JS-u:
Code:

<form action = "test.php" method = "post" onsubmit = "validacija();">
   //elementi forme
</form>

Naravno, to će da ima smisla ako je ono krajnje dugme za submit-ovanje forme tipa submit, a ne button. Taj događaj onsubmit će se izvršiti samo ako je u browser-u uključen JavaScript. I sad, kad se klikne na dugme za submit-ovanje forme, pre nego što se podaci stvarno pošalju na server, u ovom slučaju, skriptu test.php, izvršiće se JS f-ja validacija(). U slučaju da je JS isključen, taj događaj se neće trigger-ovati, i podaci iz forme će biti poslati PHP-u.

I ovo takođe nikad nisam probao, al' po nekoj logici, trebalo bi da radi...
[ Daffa @ 11.05.2009. 20:36 ] @
OK Nikola, pogledacu to malo... Djeluje logicno... Hvala na predlozima.

E, jos nesto: kako da pozovem javascript preko echo-a u php-u? Ukoliko ovo ne uspije, planiram da ostavim samo js validaciju za sada...
[ Nikola Poša @ 11.05.2009. 21:01 ] @
Citat:
Daffa:E, jos nesto: kako da pozovem javascript preko echo-a u php-u?

Code:

echo '<script type = "text/javascript">//JS kod</script>';

Ako si na to mislio...
[ Daffa @ 11.05.2009. 22:03 ] @
to je to hwala!!!
[ Tudfa @ 12.05.2009. 16:04 ] @
Citat:
Nikola Poša: Nemoj da se oslanjaš samo na validaciju sa strane klijenta, jer postoje dosta načina da se ona "zaobiđe". PHP, i uopšte, server-side validaciju nikako ne trebaš da preskačeš.

JavaScript validaciju možeš da pišeš čisto da ne bi svaki put morao ponovo da učitavaš stranu nakon submit-ovanja forme. Npr. korisnik ostavi neko polje nepopunjeno, i ti ga onda JavaScript-om samo obavestiš o tome, pre nego što se ti podaci pošalju na server.

Ja inače u potpunosti izbegavam client-side validaciju, a i kad hoću da dodam malo "user-friendly" efekta pri validaciji neke forme, onda to radim koristeći AJAX, što se opet svodi na server-side validaciju.


@Daffa

Ovo ti je odgovor koji bi trebao da prihvatiš kao nešto što predstavlja realnost.
Sigurnost aplikacije je jedna od najbitnijih stvari na koje treba obratiti paznju u toku razvoja.
Trimovanje, eskejpovanje i osnovni regularni izrazi uvek dobro dodju da ne misliš.

Evo primera zbog čega uvek treba raditi server-side proveru:

http://en.wikipedia.org/wiki/SQL_injection ,
http://en.wikipedia.org/wiki/Cross-site_scripting ,
http://en.wikipedia.org/wiki/Session_hijacking