Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Odczyt nagłówków protokołu
Forum PHP.pl > Forum > PHP
mund
Witam,

W jaki sposób można odczytać jakim protokołem zostało wysłane zapytanie :?:

Przykład:
skrypt ma się wykonywać wtedy-i-tylko-wtedy gdy został wywołany po HTTPS,
w przeciwnym wypadku ma być przekierowany do bezpiecznego połączenia i dopiero wtedy wykonany.
dragossani
Najprościej sądze po porcie. SSL działa zwykle na porcie 443. Można też po adresie.
Kod
if (($SERVER_PORT==443)||(substr($SCRIPT_URI,0,5)=='https'))

{

//kod strony

} else {

   $adres='https://'.$_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"];

   header('Location: '.$adres);

};
mund
Dokładnie o to mi chodziło smile.gif

niestety nie działa sad.gif

może dlatego, że na serwerze SSL jest uruchomione osobnym programem, a nie jako moduł Apache'a questionmark.gif

Na tym serwerze czy to po HTTPS czy po HTTP zawsze pokazuje port 80...(to specyfika zewnętrznego programu do SSL)

a zmiennej $SCRIPT_URI wogole nie pokazuje:(
zalezy to od wersji serwera www czy może od php??
na serwerze jest php 4.0.6 i Apache 1.3.22
Mac
Cytat
Najprościej sądze po porcie. SSL działa zwykle na porcie 443. Można też po adresie.
Kod
if (($SERVER_PORT==443)||(substr($SCRIPT_URI,0,5)=='https'))

{

//kod strony

} else {

   $adres='https://'.$_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"];

   header('Location: '.$adres);

};

Jeżeli o takie rozwiązanie chodziło to ten temat nie powinien być na forum php pro tylko na php smile.gif
smile.gif
mund
Może masz rację <<<<<przepraszam>>>>>

ale jak do tej pory nikt nie potrafił mi na to odpowiedzieć.....

:oops:
dragossani
Zgadzam się. Gdyby to ode mnie zależało to bym go tam przeniósł. Pytanie sprowadzało się do wykrycia czy połączenie jest szyfrowane - nie do końca zgodnie z tematem.
A inne protokoły? Nie wiem jakie autor pytania miał na myśli. Może ktoś rozwinie temat?
Officerrr
$_SERVER["SSL_VERSION_LIBRARY"]
$_SERVER["SSL_VERSION_INTERFACE"]
$_SERVER["SSL_PROTOCOL"]
mund
Cytat
$_SERVER["SSL_VERSION_LIBRARY"]
$_SERVER["SSL_VERSION_INTERFACE"]
$_SERVER["SSL_PROTOCOL"]


pewnie OK jeżeli masz SSL wkompilowane jako moduł do Apache'a smile.gif

jak napisałem u mnie nie można wykryć SSL za pomocą zmiennych serwera ponieważ obsługa szyfrowanych połączeń zajmuje się zewnętrzny program Stunel, konwertuje on każde zapytanie z portu 433 na 80 i dla serwera WWW jest to normalny HTTP.
Dlatego moje pytanie było o odczyt nagłówków, bo może tam są zapisywane jakieś dodatkowe informacje questionmark.gifquestionmark.gif

Poza tym zastanawiam się jak można odczytać informacje o nagłówkach, które już zostały wysłane?questionmark.gif
talee
Jezeli chodzi o odczyt naglowkow, to powinno pomoc:
getallheaders()
i w php 4.3
apache_request_headers()
apache_response_headers()
mund
jak na razie jedyne co udało mi sie zrobic:
znalazlem ze Stunel odwoluje sie do Apacha jako localhost, wiec blokada dla wszystkich oprócz Stunela przez localhost i jestem pewien ze zapytanie było po HTTPS.

Szkoda ze tak na okretke, ale admin powiedzial ze nie wkompiluje SSL do Apache'a sad.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.