orion Posted December 11, 2004 Report Share Posted December 11, 2004 Varbūt kādam ir zināmi labi resursi par tēmu PHP optimisation un security. Gribās kkā, lai kods būtu optimāls un drošs, ne tikai strādājošs. Vai varbūt arī te uz vietas kādam ir ko teikt par dotajām tēmām. Par security - ir skaidrs, ka izmantojam register_globals OFF, ravējam no formu laukiem liekos simbolus, rakstam echo $kkas.' ir psc'; nevis echo"$kkas ir psc"; Izmantojam md5 neizpaužamu datu nodošanai un glabāšanai db u.c. vietās, kur svarīgi lai kāds kko neuzzin par daudz ((: Kam vēl ir jāpievērš uzmanība?? Kamdēļ izmantojam <br> vietā <br />? kādas pirmajam var būt sekas? Link to comment Share on other sites More sharing options...
Aleksejs Posted December 11, 2004 Report Share Posted December 11, 2004 Izmantojam, kur vien varam sha() nevis md5() http://www.securityfocus.com/bid/11849/discussion/ Link to comment Share on other sites More sharing options...
spynode Posted December 11, 2004 Report Share Posted December 11, 2004 <br> seku nav nekaadu. <br /> ir xhtml atbilstoshs. Link to comment Share on other sites More sharing options...
Kavacky Posted December 11, 2004 Report Share Posted December 11, 2004 Koda optimizēšana: Visu, kas atkārtojas, salikt procedūrās un funkcijās. Samazināt mainīgo skaitu. Atrast neveiksmīgi izveidotas manipulācijas un tās noīsināt. Link to comment Share on other sites More sharing options...
orion Posted December 11, 2004 Author Report Share Posted December 11, 2004 Nu ok, lai būtu, bet kā optimizē šādu koda gabalu?? <? $cat=$_GET['cat']; if (!isset($cat)) { $cat='pirmaa'; } if ($cat == 'pirmaa') { $url=$_SESSION['jazik']."/main.php"; include $url; } else if ($cat == 'oper') { $url=$_SESSION['jazik']."/oper.php"; include $url; } else if ($cat == 'wuk') { $url=$_SESSION['jazik']."/wukoras.php"; include $url; } else if ($cat == 'agri') { $url=$_SESSION['jazik']."/agri_es_celjos.php"; include $url; } else if ($cat == 'med') { $url=$_SESSION['jazik']."/medinieks_duriks.php"; include $url; } ------//---------dafig nafig kas -----------//----------- else {$url=$_SESSION['jazik']."/main.php"; include $url; } Kategorijas nesakriit ar failu nosaukumiem. Veidot vienu masiivu ar atljautajaam kategorijaam un otru ar attieciigajiem linkiem? --> taalaak atlasiit attieciigo linku, bet ja nav atlasiijies - pieshkjirt savu?? hmz... Vai arii tas jaadara kkaa savadaak??? Link to comment Share on other sites More sharing options...
Aleksejs Posted December 11, 2004 Report Share Posted December 11, 2004 Es taisītu to visu ar switch: <?php switch($_GET['cat']){ case 'oper': $url=$_SESSION['jazik'].'/main.php'; break; case 'wuk': $url=$_SESSION['jazik'].'/wukoras.php'; break; case 'agri': $url=$_SESSION['jazik'].'/agri_es_celjos.php'; break; case 'med': $url=$_SESSION['jazik'].'/medinieks_duriks.php'; break; default: $url=$_SESSION['jazik'].'/main.php'; } include($url); ?> Link to comment Share on other sites More sharing options...
orion Posted December 11, 2004 Author Report Share Posted December 11, 2004 (edited) Nuu, vaardusakot man sanaaca šāda variants: <? $cat=$_GET['cat']; $atljautie=array('pervaja', 'work', 'wuk','agri', 'med', 'kval'); $linki=array('pervaja'=>'/main.php','work'=>'/work.php','wuk'=>'/wukoras.php','agri'=>'/agri_es_celjos.php','med'=>'/medinieks_duriks.php' ); foreach($atljautie as $atlj){ if(isset($linki[$cat])){ $kategorija=$cat;}} if(!isset($kategorija)){ $kategorija='pervaja';} $url=$_SESSION['jazik'].$linki[$kategorija]; include $url; ?> Liekas ka ir biku īsāk (: . Ņemot vērā ka in da real kategorijas ir ap 30 un to skaits tikai pieaugs. Kautkā nepatīk man šis manuālais stils, bet db diemžēl šim projektam nav pieejama... A varbūt šis vēl nav tas optimālākais variants?? Paldies Aleksejs par savu variantu (: Es tik nedaudz būtu pielabojis - respektīvi izlaižot $_SESSION['jazik'] - tjip pieliekot jamo tikai pašās beigās klāt. Tomēr mazāk vietas aizņem ((: Edited December 11, 2004 by orion Link to comment Share on other sites More sharing options...
Aleksejs Posted December 11, 2004 Report Share Posted December 11, 2004 (edited) Kods ir mazāk rindiņās, bet katru reizi iziet cauri visam masīvam. Tas, manuprāt, nav optimāli (-; Tālāk... Ja loti gribi tieši tā, tad es šo: foreach($atljautie as $atlj){ if(isset($linki[$cat])){ $kategorija=$cat; } } if(!isset($kategorija)){ $kategorija='pervaja';} $url=$_SESSION['jazik'].$linki[$kategorija]; izmainītu šādi: $kategorija='pervaja'; foreach($atljautie as $atlj){ if(isset($linki[$cat])){ $kategorija=$linki[$cat]; break; } } $url=$_SESSION['jazik'].$linki[$kategorija]; Jeb vēl īsāk: $linki=array('pervaja'=>'/main.php','work'=>'/work.php','wuk'=>'/wukoras.php','agri'=>'/agri_es_celjos.php','med'=>'/medinieks_duriks.php' ); if(isset($linki[$_GET['cat']])){ $url=$_SESSION['jazik'].$linki[$_GET['cat']]; } else { $url=$_SESSION['jazik'].$linki['pervaja']; } Updeits: Tikko pats pārlasīju, ko sarakstiju... Vai gadijumā nebiji domājis foreach($atljautie as $atlj){ if(isset($atlj[$cat])){ $kategorija=$cat; } } jo citādi nav jēga iet cauri tam "ayļauto" vērtibu masīvam... Edited December 11, 2004 by Aleksejs Link to comment Share on other sites More sharing options...
orion Posted December 12, 2004 Author Report Share Posted December 12, 2004 Kods ir mazāk rindiņās, bet katru reizi iziet cauri visam masīvam. Tas, manuprāt, nav optimāli (-; Ko tu ar to domaaji?? Nuu tjipa ir divi masiivi - katram, lai ielaadeetu lapu, izskrien vienu reizi cauri. Pirmo, lai paarbaudiitu vai kategorija atljauta - otro, lai atrastu incluudojamo failu. Kgan - vispaar man tas tavs switch variants patiik. Eertaak papildinaat + paarskatāmāks. Un pieljauju ka arī ātrāks. Link to comment Share on other sites More sharing options...
orion Posted December 14, 2004 Author Report Share Posted December 14, 2004 Rekur/URL] incants rakstinjsh par PHP drošību. Labi izskaidrojošs (: man patikās. Joprojām ceru ka kāds iemetīs kādu linku uz normālu resursu linkiem. Tēmas - drošība un optimizēšana. Vēlams ar piemēriem. ((: Link to comment Share on other sites More sharing options...
Aleksejs Posted December 14, 2004 Report Share Posted December 14, 2004 Session Fixation Vulnerability in current Web-applications Link to comment Share on other sites More sharing options...
blackhalt Posted December 15, 2004 Report Share Posted December 15, 2004 Par ātrumu krieviski: http://www.codenet.ru/webmast/php/speed/ Link to comment Share on other sites More sharing options...
orion Posted December 15, 2004 Author Report Share Posted December 15, 2004 Par ātrumu krieviski:http://www.codenet.ru/webmast/php/speed/ 12261[/snapback] Hee, incants rakstinjsh. Apakshaa pie komentaariem tur ir piemeeri ar HTML koda iizvadiishanu ar echo, un aarpus PHP. Tur bijs ljooti juutama atshkjiriiba, bet es patesteeju uz savas kastes - ieguvu ljooti liidziigus rezultaatus pa 10x palaizhot katru no testiem seciibaa: 123; 123; 123... u.t.t. Praktiski ļoti maza atšķirība man parādījās. Varbūt pie vainas jamam ir IIS 6, man stāv Apache 1.3 Link to comment Share on other sites More sharing options...
Roze Posted December 16, 2004 Report Share Posted December 16, 2004 Hee, incants rakstinjsh. Apakshaa pie komentaariem tur ir piemeeri ar HTML koda iizvadiishanu ar echo, un aarpus PHP. Tur bijs ljooti juutama atshkjiriiba, bet es patesteeju uz savas kastes - ieguvu ljooti liidziigus rezultaatus pa 10x palaizhot katru no testiem seciibaa: 123; 123; 123... u.t.t. Praktiski ļoti maza atšķirība man parādījās. Varbūt pie vainas jamam ir IIS 6, man stāv Apache 1.3 Ko nozīmē ļoti līdzīgi rezultāti? :) Ja teiksim skripts izpildās 2 milisekundēs bet tu panāc uzlabojumu uz 1ms, cilvēkam jau neko tas būtiski neizsaka, taču atrdarbības uzlabota pa 50%. Un ja parēķinam jau uz 100 vai 1000 paralēliem lietotājiem / pieprasījumiem - šī "praktiski ļoti maza atšķirība" pieaug jau krietni manāma gan servera noslodzes gan jau jūtamas bremzes ziņā. Link to comment Share on other sites More sharing options...
orion Posted December 16, 2004 Author Report Share Posted December 16, 2004 Tātad joka pēc vēl nedaudz patestējos. ---rezultāti--> Tests1 <?php session_start(); function getmicrotime() { list($usec, $sec) = explode(" ",microtime()); return ((float)$usec + (float)$sec); } $t_start = getmicrotime(); for ($i = 1; $i <= 100000; $i++) { echo "<i>"; echo $i; echo "</i> "; } echo "<br>"; $t_end = getmicrotime(); $t1 = $t_end - $t_start; echo 'Laiks bija: '.round($t1,4);?> tests2 <?php function getmicrotime() { list($usec, $sec) = explode(" ",microtime()); return ((float)$usec + (float)$sec); } $t_start = getmicrotime(); for ($i = 1; $i <= 100000; $i++) { ?><i><?= $i;?></i> <? } echo "<br>"; $t_end = getmicrotime(); $t2 = $t_end - $t_start; echo 'Laiks bija: '.round($t2,4); ?> tests3 <?php function getmicrotime() { list($usec, $sec) = explode(" ",microtime()); return ((float)$usec + (float)$sec); } $tstr = ""; $t_start = getmicrotime(); for ($i = 1; $i <= 100000; $i++) { $tstr .= "<i>".$i."</i> "; } echo $tstr; echo "<br>"; $t_end = getmicrotime(); $t3 = $t_end - $t_start; echo 'Laiks bija: '.round($t3,4);?> rezultāti pēc desmit testiem secībā t1->t2->t3->t1->t2->... |Tests1 | Tests2 | Tests3 | ================= |9,1524 |9,4372 |4,6406 | |9,0501 |6,5130 |13,0046| |7,8540 |3,9836 |5,3020 | |9,4327 |8,1066 |4,5298 | |5,2410 |6,8997 |5,1321 | |8,6352 |8,9852 |6,2694 | |10,1446|9,5270 |9,8356 | |11,5732|11,3878|11,0793| |9,3089 |11,7769 |8,1910 | |8,5403 |11,0443 |11,7231| vidēji:|8,4932 | 8,7661 | 7,9438 | Pirmo reiz testējot - dabūju vēl līdzīgākus rezultātus. Interesanti, ka trešajam testam pieder gan labākais, gan arī sliktākais rezultāts. Domāju ka būs jāuztaisa kāds advancētāks testiņš un tad vēlreiz jāpatestē. Link to comment Share on other sites More sharing options...
Recommended Posts