/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Kommandolinje eller web
Fra : Jonas Koch Bentzen


Dato : 14-02-02 16:06

Findes der nogen sikker metode til at afgøre, om et script bliver kørt
gennem en webserver eller på kommandolinjen? Jeg har hidtil prøvet med
php_sapi_name(), extension_loaded("apache"), $argv, $argc mm., men der
er ingen af dem, der rigtigt kan bruges.

--
Jonas Koch Bentzen

http://understroem.dk/

 
 
Jonas Koch Bentzen (14-02-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 14-02-02 16:12

Jonas Koch Bentzen skrev:

> Findes der nogen sikker metode til at afgøre, om et script bliver kørt
> gennem en webserver eller på kommandolinjen?

Følgende burde vist være rimelig sikker, har jeg lige fundet ud af:

echo (isset($_SERVER['HTTP_HOST'])) ? "web\n" : "kommandolinje\n";

--
Jonas Koch Bentzen

http://understroem.dk/

Peter Brodersen (15-02-2002)
Kommentar
Fra : Peter Brodersen


Dato : 15-02-02 02:08

On Thu, 14 Feb 2002 16:12:08 +0100, Jonas Koch Bentzen
<ingen.emailadresse@eksempel.dk> wrote:

>Følgende burde vist være rimelig sikker, har jeg lige fundet ud af:
>
>echo (isset($_SERVER['HTTP_HOST'])) ? "web\n" : "kommandolinje\n";

Ikke at det er et problem i praksis, men hvis du blot telnetter til
serveren og glemmer host-headeren, vil der således kunne ske to
forskellige ting.

Nok ikke at det er et problem i praksis - det forekommer nok oftere at
man blot "ikke gider" at taste hostheaderen med, hvis man lige tester,
end der rent faktisk stadigvæk skulle være nogle IE2'ere derude.

--
- Peter Brodersen

Mogens Meier Christe~ (15-02-2002)
Kommentar
Fra : Mogens Meier Christe~


Dato : 15-02-02 03:39

"Peter Brodersen" <professionel@nerd.dk> wrote in message
news:wbZa8.10924$5L3.491192@news010.worldonline.dk...

> >echo (isset($_SERVER['HTTP_HOST'])) ? "web\n" : "kommandolinje\n";

> Nok ikke at det er et problem i praksis - det forekommer nok oftere at
> man blot "ikke gider" at taste hostheaderen med, hvis man lige tester,
> end der rent faktisk stadigvæk skulle være nogle IE2'ere derude.

....og folk der leger med f.eks. www.mbn.dk/q - det kan faktisk være meget
lærerigt! :)

--
Mvh. Mogens
B.Sc. i datalogi. Søger IT-job på Fyn!
www.momech.dk



Mogens Meier Christe~ (15-02-2002)
Kommentar
Fra : Mogens Meier Christe~


Dato : 15-02-02 04:04

"Mogens Meier Christensen" <mmc@nospam.dk> wrote in message
news:a4hsd0$1h2l$1@news.cybercity.dk...

> > >echo (isset($_SERVER['HTTP_HOST'])) ? "web\n" : "kommandolinje\n";

> > man blot "ikke gider" at taste hostheaderen med, hvis man lige tester,
> > end der rent faktisk stadigvæk skulle være nogle IE2'ere derude.

> ...og folk der leger med f.eks. www.mbn.dk/q - det kan faktisk være meget
> lærerigt! :)

Jeg har lige leget lidt med console og telnet. Resultater:

Følgende bliver sat i HTTP_SERVER_VARS ved telnet (kun "GET scriptnavn.php")
og ikke ved console:

REMOTE_ADDR
REMOTE_PORT
SERVER_ADDR
SERVER_ADMIN
SERVER_NAME
SERVER_PORT
SERVER_SIGNATURE
SERVER_SOFTWARE
GATEWAY_INTERFACE
SERVER_PROTOCOL
REQUEST_METHOD
QUERY_STRING
REQUEST_URI
PATH_TRANSLATED

Følgende bliver sat kun ved console - og ikke ved Webserver:

CLIENTNAME Console

COMPUTERNAME
HOMEPATH
LOGONSERVER
NUMBER_OF_PROCESSORS
OS
SESSIONNAME Console


===

Jeg kører med Apache @ Windows, mange i sidste afsnit er nok platform
(windows)-afhængige, jeg har sorteret de mest fra.
Så det sikreste er nok at teste om een eller flere af dem der er nævnt
ovenfor som kun kommer på en webserver er sat!


--
Mvh. Mogens
B.Sc. i datalogi. Søger IT-job på Fyn!
www.momech.dk





Jonas Koch Bentzen (15-02-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 15-02-02 09:50

Peter Brodersen skrev:

> On Thu, 14 Feb 2002 16:12:08 +0100, Jonas Koch Bentzen
> <ingen.emailadresse@eksempel.dk> wrote:
>
>>Følgende burde vist være rimelig sikker, har jeg lige fundet ud af:
>>
>>echo (isset($_SERVER['HTTP_HOST'])) ? "web\n" : "kommandolinje\n";
>
> Ikke at det er et problem i praksis, men hvis du blot telnetter til
> serveren og glemmer host-headeren, vil der således kunne ske to
> forskellige ting.

Det fandt jeg også ud af. Den mest sikre metode er så vidt jeg kan se at
teste på $_SERVER["SERVER_NAME"]. Godt nok kan man ikke være fuldstændig
sikker på, at den bliver sat på servere, der ikke er Apache, men
eftersom den er en del af CGI-specifikationen, er den rimelig sikker.

--
Jonas Koch Bentzen

http://understroem.dk/

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste