daGrevis Posted November 4, 2010 Report Share Posted November 4, 2010 Daži skripti sākās apmēram tā... $x = mysql_real_escape_string( $_POST['x'] ); $y = $_GET['y']; if( isSet( $x ) ) { mysql_query(" SELECT `{$x}` FROM `z` ") or exit( mysql_error() ); } Es rakstu tā un domāju, ka tā ir labāk. xD if( isSet( $_POST['x'] ) ) { mysql_query(" SELECT `" . mysql_real_escape_string( $_POST['x'] ) . "` FROM `z` ") or exit( mysql_error() ); } Galīgi neko "nerubīju"? xD xD Quote Link to comment Share on other sites More sharing options...
Rincewind Posted November 4, 2010 Report Share Posted November 4, 2010 Jo vairāk koda, jo krutāks programmētājs! Šādos gadījumos papildus mainīgie protams nav vajadzīgi. Bet gadījumos kad ar POST[]/GET[] vērtībām tiks veiktas kaut kādas operācijas, labākai koda lasāmībai manuprāt labāk pieņemt ka viņi ir konstantes un izveidot kopijas. $_POST['a']*=5; //nafig $a=$_POST['a'];$a*=5; //labais Quote Link to comment Share on other sites More sharing options...
briedis Posted November 4, 2010 Report Share Posted November 4, 2010 Normālos gadījumos $_POST, $_GET masīvus izmanto tikai lai "izņemtu" datus. $text = $_POST['text']; $text = funkcija($text); $text = funkcija1($text); $text = funkcija2($text); Otrkārt, $text ir vieglāk uzrakstīt nekā $_POST['text'] :) Quote Link to comment Share on other sites More sharing options...
Mr.Key Posted November 4, 2010 Report Share Posted November 4, 2010 seko līdzi profesionālam stilam.. ar laiku sapratīsi, kāpēc.. Quote Link to comment Share on other sites More sharing options...
daGrevis Posted November 4, 2010 Author Report Share Posted November 4, 2010 P.S. Kāds šeit būtu "short-hand's"? if( isSet( $_GET['id'] ) ) { $id = $_GET['id']; } Quote Link to comment Share on other sites More sharing options...
briedis Posted November 4, 2010 Report Share Posted November 4, 2010 $id = isset($_GET['id']) ? (int)$_GET['id'] : 0; //0 - noklusētais Quote Link to comment Share on other sites More sharing options...
404 Posted November 4, 2010 Report Share Posted November 4, 2010 Ar to likšanu "pa taisno" var uzkāpt uz grābekļa diezgan ātri.Cik pašam tā nav bijis,ka,uzskatot,ka nekādas papildus darbības ar POST datiem vajadzīgas nebūs,tas tiek vienkārši ar visu validāciju iekš kverija iemests.Paiet laiciņš,un kodam savajagās kādus uzlabojumus,un tad "ai,nu bet tur jau nebūs vajadzības" sāk atspēlēties,kad nākas no katra kverija to post atkal ķeksēt ārā,un definēt ar visām apstrādēm jau sākumā,ko būtu varējis izdarīt jau pirmajā reizē.Otrs tāds pats grābeklis ir {} nelietošana aiz if,domājot ka tur jau ar to 1 darbību mūžam pietiks tajā vietā :) Quote Link to comment Share on other sites More sharing options...
Mr.Key Posted November 5, 2010 Report Share Posted November 5, 2010 vienkārš princips, kurš atvieglo dzīvi, ir vienmēr (ar to domājot 100 gadījumus no 100) likt figūriekavas aiz if. webā tas sīkums, bet programmējot lidmašīnas, tas var nebūt tāds sīkums btw, viena simtmiljonu kosmosa misija nojuka dēļ viena nepareiza cipara kodā. kļūda atklājās tad, kad pēc dažiem gadiem zondei bija jāsāk kaut kas darīt, bet nekas nenotika :D Quote Link to comment Share on other sites More sharing options...
Леший Posted November 5, 2010 Report Share Posted November 5, 2010 (edited) Tāpēc, kā kods "SELECT `" . mysql_real_escape_string( $_POST['x'] ) . "`,`" . mysql_real_escape_string( $_POST['y'] ) . "`,`" . mysql_real_escape_string( $_POST['z'] ) . "`,`" . mysql_real_escape_string( $_POST['a'] ) . "`,`" . mysql_real_escape_string( $_POST['b'] ) . "`,`" . mysql_real_escape_string( $_POST['c'] ) . "`,`" . mysql_real_escape_string( $_POST['d'] ) . "` FROM `z` WHERE id = `" . mysql_real_escape_string( $_POST['id'] ) . "` " Nav īpaši lasams. Edited November 5, 2010 by Леший Quote Link to comment Share on other sites More sharing options...
EdgarsK Posted November 5, 2010 Report Share Posted November 5, 2010 Īsti negribu iedziļināties saturā, bet par šo gan ierunāšos.. $x = mysql_real_escape_string( $_POST['x'] ); $y = $_GET['y']; if( isSet( $x ) ) { // Wtf? Sho tu tak jau define, kapec japarbauda? mysql_query(" SELECT `{$x}` FROM `z` ") or exit( mysql_error() ); Quote Link to comment Share on other sites More sharing options...
codez Posted November 5, 2010 Report Share Posted November 5, 2010 (edited) 1) Iesaku izmantot MVC paternu aplikācijas strūktūras būvēšanai 2) Piebūvēt klāt automātisku ievaddatu validāciju, kur validāciju nevis programmē, bet drīzāk deklarē. Piemērs, kur tiek izsaukta AjaxController-a index action-s addComment. Tajā pašā klasē deklarējam kādi ievaddati drīkst nākt requestā un kādā formā tiem jābūt. Var sataisīt, ka pie nepareiziem datiem requestu pārtrauc vai var sataisīt callback funkcijas, kuras atgriež kļūdu paziņojumus. Deklarējam visu stāvokli (ielogojies lietotājs, post-a saturs) kādam jābūt, lai tālāk izpildītu action-a metodi un rakstam vienkāršu metodi. Viss ir labi pārskatām, nekādu lieku mainīgo. Varam pat iebūvēt, ka tiek detektēti nesankcionēti mainīgie POST-ā un reģistrēt urķēšanas mēģinājumu. class Index extends AjaxController{ public addComment_input=array( "logged"=>true, "post"=>array( "aid"=>array("type"=>"int","min"=>1), \\article id "text"=>array("type"=>"text","min"=>20,"max"=>500,"extra"=>"htmlpurifier") ) ); function addComment($input){ $a=new Comment(); $a['aid']=$input['aid']; $a['text']=$input['text']; $a['uid']=LoggedUser->getID(); $a->insert(); DB::commit(); } } 3) Izmantot kādu datubāzes abstrakcijas slāni, piem., ORM vai izmantot PDO, vai izmantot savas funkcijas, kurās padodot parametrus tās tiek automātiski eskeipotas. Edited November 5, 2010 by codez Quote Link to comment Share on other sites More sharing options...
daGrevis Posted November 5, 2010 Author Report Share Posted November 5, 2010 Īsti negribu iedziļināties saturā, bet par šo gan ierunāšos.. $x = mysql_real_escape_string( $_POST['x'] ); $y = $_GET['y']; if( isSet( $x ) ) { // Wtf? Sho tu tak jau define, kapec japarbauda? mysql_query(" SELECT `{$x}` FROM `z` ") or exit( mysql_error() ); Pilnīgi neloģisks kods, kad tika rakstīts tikai, lai parādītu, par ko ir runa. Protams, ka isSet() tur loģiski nevajag. xD 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.