Jump to content
php.lv forumi

Bloķēt failu


Jackal

Recommended Posts

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

š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

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 by Delfins
Link to comment
Share on other sites

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

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

×
×
  • Create New...