Zakazanie spustenia php scriptu pomocou HTTP

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
greggy
Člen | 14
+
0
-

Zdravim,

da sa nejak nastavit aby sa niektore routy nedali pustit cez http, len cez cmd? Ide o cronjoby a nechcem aby sa dali pustit cez http. Na pustenie cronjobov pouzivam CLIRouter, ale Router ich vie pustit aj cez prehliadac.

Robil to niekto? Alebo je na to nejaky postup?

na1k
Člen | 288
+
0
-

nepomůže php_sapi_name() ?

Přímo routa metodu na odlišení prostředí asi nemá, ale vždycky si můžeš relativně snadno napsat vlastní implementaci.

llook
Člen | 407
+
0
-

Kontrola php_sapi_name() je určitě správný postup. Plus bych ty presentery vyčlenil do samostatného modulu, který ta výchozí routa nenajde.

Majkl578
Moderator | 1364
+
0
-
if (PHP_SAPI !== 'cli') {
	throw new LogicException('Script could be run from console only.');
}
llook
Člen | 407
+
0
-

LogicException? Podle mě spíš BadRequestException nebo ForbiddenRequestException.

Oli
Člen | 1215
+
0
-

Jen doplním, že kdyby na to má doplněk, třeba se bude hodit: Kdyby/Console. Možná to je ale pro tvoji potřebu moc složitý oproti PHP_SAPI…

Majkl578
Moderator | 1364
+
0
-

llook napsal(a):

LogicException? Podle mě spíš BadRequestException nebo ForbiddenRequestException.

Proboha, to je snad jedno jaká výjimka v tom příkladu je, ne? Jde o princip (tu podmínku)… Klidně si tam vyhazuj IDontLikeYouAccessingMeNotFromConsoleStopDoingThatPleaseOrIBanYouException.

greggy
Člen | 14
+
0
-

na1k napsal(a):

nepomůže php_sapi_name() ?

Přímo routa metodu na odlišení prostředí asi nemá, ale vždycky si můžeš relativně snadno napsat vlastní implementaci.

Toto riešenie je postačujúce. Ďakujem