NiTrino Posted February 20, 2009 Report Share Posted February 20, 2009 1) if (isset($_POST['forma'])) { $lauks1 = mysql_real_escape_string($_POST['lauks1']); $lauks2 = mysql_real_escape_string($_POST['lauks2']); $error = false; if (!$lauks1) { $error = true; } if (!$error) { $result = $Objekts->izsauktMetodi($lauks1, $lauks2); } } 2) if (isset($_POST['forma'])) { $result = $Objekts->izsauktMetodi($_POST); // metode veic eskeiposhanu, kljudu paarbaudi } 3) if (isset($_POST['forma'])) { $lauks1 = mysql_real_escape_string($_POST['lauks1']); $lauks2 = mysql_real_escape_string($_POST['lauks2']); $result = $Objekts->izsauktMetodi($lauks1, $lauks2); // metode veic kljudu paarbaudi } Kurš no šiem liekas pārskatāmāks, saprotamāks, praktiskāks? Savi varianti arī vēlami! :) Quote Link to comment Share on other sites More sharing options...
bubu Posted February 20, 2009 Report Share Posted February 20, 2009 Viskrutāk jau butu nerakstīt manuāli to lauku pārbaudes, bet automatizēt to visu šādi: $fields = array("lauks1" => array("type" => "integer"), "lauks2" => array("type" => "string", "validate" => "\w+@\w+.\w+"), "lauks3" => array("type" => "string", "default" => "index"), ); $errroMsg = validate_fields($fields, $_POST); if (count($errorMsg) == 0) { // tālāk jau droši izmantojam $_POST["lauks1"] bez aizspriedumiem ... } else { // parādi $errorMsg ... } Attiecīgi validate_fields metode automātiski izskries cauri $fields masīvam un pārbaudīs lauku tipus, pielietos attiecīgu konvertāciju (integeriem - intval, string - escape_string), piešķirs defaultās vērtības, utt.. pēc vajadzības. Un pēc tam varēsi brīvi lietot datus no $_POST nešauboties, ka tie tur nav, ir slikti, vai tml. Quote Link to comment Share on other sites More sharing options...
martins256 Posted February 20, 2009 Report Share Posted February 20, 2009 Es rakstu šādi: POST datus pārbaudu pirms padošanas klasei, jo kļūdu paziņojumus varētu vajadzēt padot dažādās valodās. Klasei padodu neeskeipotus, jo, klasi atkārtoti izmantojot, var aizmirsties eskeipot. if (isset($_POST['forma'])) { $error = false; if (!$_POST['lauks1']) { $error = true; } if (!$error) { $result = $Objekts->izsauktMetodi($_POST['lauks1'], $_POST['lauks2']); } } Quote Link to comment Share on other sites More sharing options...
Kaklz Posted February 20, 2009 Report Share Posted February 20, 2009 1. variants, bet eskeipošanu pilnīgi noteikti ir jāveic tuvāk DB darbībām, ja vien tu taisies virzīties MVC virzienā. Tā jau ir darbība, kas attiecas uz datu saglabāšanu datuāzē, nevis kontrolieri. Ja par koda strukturēšanu, tad man liekas jēdzīgs šāds variants // php daļa $allowedActions = array('step1', 'step2', 'processform', 'intro'); $step = (!empty($_REQUEST['action']) ? $_REQUEST['action'] : ''); $ivrec = new MyController(); if (in_array($step, $allowedActions)){ $ivrec->$step(); }else{ $ivrec->intro(); } + Class MyController{ function step1(){ } function step2(){ } function processform(){ // post datu apstrāde, vajadzīgie db update } function intro(){ } // HTML daļa <form method="post"> <input type="hidden" name="action" value="processform" /> </form> Quote Link to comment Share on other sites More sharing options...
Mikijs Posted February 20, 2009 Report Share Posted February 20, 2009 Pievienojos Kaklz. Par 1. variantu. Quote Link to comment Share on other sites More sharing options...
codez Posted February 20, 2009 Report Share Posted February 20, 2009 Kontrolerī veicu ieejošu datu validāciju, taču eskeipošana notiek db klasē, tieši pirms kverija. + nav iespējams aizmirst eskeipot datus - ielaist caurumus; + par eiskoeipošanu nav jādomā, tā notiek automātiski - var nākties eskeipot datus vairākas reizes, bet tā kā datu eskeipošanai seko kverijs un šis kverijs aizņem par vairākām kārtām vairāk skaitļošanas resursu, nekā skaitļošana, tad tas ir sīkums. Quote Link to comment Share on other sites More sharing options...
Ghenis Posted February 22, 2009 Report Share Posted February 22, 2009 http://lv.php.net/manual/en/function.filter-input.php + http://lv.php.net/manual/en/class.pdostatement.php un visas problēmas par datu validāciju tiek aizmirstas . Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.