Jackal Posted May 7, 2007 Report Share Posted May 7, 2007 Man lapā visas lapas normāli ir paradzēts vērt vaļā aptuveni šādā veidā - index.php?id=forums un vajadzētu aizliegt atvērt lapas rakstot forums.php. Kā to izdarīt? Laikam to var izdarīt ar htaccess failu, bet es nezinu, kas jāraksta tajā, lai nobloķētu failus. Varbūt ir kāds cits veids bez htaccess faila? Link to comment Share on other sites More sharing options...
andrisp Posted May 7, 2007 Report Share Posted May 7, 2007 Bez htaccess faila: Iekš galvenā faila: define('IS_INCLUDED', true); Iekš failiem, kuriem negribam, lai piekļūst pa taisno: if (!defined('IS_INCLUDED')) { die(); } Link to comment Share on other sites More sharing options...
Delfins Posted May 7, 2007 Report Share Posted May 7, 2007 šitais variants neder, ja vēlāk kompilēsi PHP... Labāk ieliec tos visus failus zem kādas citas direktorijas.. piemēram ".ht_include" (Apacis uzliek forbidden uz .ht* masku, ja nav, tad to viegli izdarīt) Link to comment Share on other sites More sharing options...
Joyride Posted May 7, 2007 Report Share Posted May 7, 2007 Delfins: kapec neder ka andrisp teica, vari paskaidrot sikak? Link to comment Share on other sites More sharing options...
Delfins Posted May 8, 2007 Report Share Posted May 8, 2007 (edited) NU... ja vēlāk kompilēsi PHP... Ir tā, ka kompilējot(enkodējot) konstantes pārveršās par `cietām izteiksmēm`, tas ir kāds bija rezultāts kompilācijas laikā, tā arī visu laiku tur paliks (Vismaz tā darīja mmcache) Līdzīgi strādā arī C/C++ kompilēšana, atkarībā no paametriem nostrādā viens vai vairāki konstanšu IF-i (makrosi) un tiek kompilēts attiecīgs kods. Nu un portams katru reizi liekās nevajadzīgās darbības/pārbaudes - keep it simple as much as possible :) PHP: if (defined(...)) { ... } C++: #IFDEF _EXPR1_ .. code .. #ENDIF Edited May 8, 2007 by Delfins Link to comment Share on other sites More sharing options...
marrtins Posted May 8, 2007 Report Share Posted May 8, 2007 khe khe, nu nebūs jau nu gan tāpat kā C, jo if(defined()) nav tas pats kas macrosi iekš C/C++/Delphi utmldz *kompilējamām* valodām. ja tas mmcache tā dara (esmu gan pārliecināts, ka tā nav), tad tas būtu nežēlīgi *wrong* un ir konkrēts bugs. (mmcache gadienā nebi discontinued un to pārņēma citi kēxi zem nosaukuma eaccelerator ?). pēc Tevis teiktā sanāk, ka aiz if(!defined()) {} else {šite namz netiks izpildīts kods} :)) andrisp piedāvātais kods nedarbotos, ja inklūdē būs vnk pārbaude if(IS_INCLUDED), jo tad gan PHP izdomātu to pārveidot par stringu (jo nedefinēta konstante), kas, protams, automātiski ir true Link to comment Share on other sites More sharing options...
bubu Posted May 8, 2007 Report Share Posted May 8, 2007 khe khe, nu nebūs jau nu gan tāpat kā C, jo if(defined()) nav tas pats kas macrosi iekš C/C++/Delphi utmldz *kompilējamām* valodām. ja tas mmcache tā dara (esmu gan pārliecināts, ka tā nav), tad tas būtu nežēlīgi *wrong* un ir konkrēts bugs. Un kāpēc tas būtu nežēlīgi wrong? Manuprāt define/defined php spēlē tādu pašu lomu kā #define/#ifdef C/C++, jo semantika jau ir tāda pati. Un iegūtie rezultāti arī tādi paši (tb uztaisi konstantei vienu vērtību un ieinklūdē kādu php failu, pēc tam uzdefinē citu vērtību un ieinklūdē atkal to pašu failu - dabūsi dažādu kodu - tieši tāpat kā C/C++). Jo include php jau darbojās tāpat kā #include C/C++. Link to comment Share on other sites More sharing options...
Recommended Posts