Thread View: pl.comp.lang.perl
2 messages
2 total messages
Started by Andrzej Kierzkowski
Tue, 09 Dec 1997 03:28
Dwa proste (mam nadzieje) pytania
Author: Andrzej Kierzkowski
Date: Tue, 09 Dec 1997 03:28
Date: Tue, 09 Dec 1997 03:28
33 lines
2035 bytes
2035 bytes
Witam,
Mam dwa (jak pisalem) mam nadzieje ze trywialne pytania.
1. Czy zakladajac, ze interesuja mnie wywolania skryptu cgi
bedacego ma moim serwerze wylacznie z moich stron (w sensie:
tez siedzacych u mnie na serwerze), zmienna $ENV{'HTTP_REFERER'}
zawsze zwroci mi poprawna wartosc - adres strony, z ktorej
wolano skrypt? Wydaje sie, ze jest OK, ale cos slyszalem o
przypadkach, ze wartosc zmiennej moze nie byc ustawiona.
2. Mam taki problem. Jest skrypt, ktorego szkic jest nastepujacy:
a) Sprawdza, czy jest cookie I. Jezeli jest, to go
inkrementuje, jezeli nie, to ustawia wartosc na 1.
b) Wysyla: "Content-type: text/html\n";
c) Wysyla "ciasteczko"
d) Wysyla "/n"
e) Wysyla jakas-tam strone <HTML> ...... </HTML>
No i jezeli w tresci tej strony znajduje sie definicja strony
kodowej (<meta http-equiv="content-type" content="text/html;
charset=iso-8859-2">) to (tylko przy pierwszym wywolaniu skryptu)
ciasteczko jest wysylane 2 razy (raz z wartoscia 1 a drugi raz - 2).
Kolejne wywolania nie powoduja juz takiego efektu.
Jezeli wyrzucam <meta...>, wszystko dziala w najwiekszym porzadku.
Czy ktos wie dlaczego tak sie dzieje (w szczegolnosci - tylko
przy pierwszym wywolaniu skryptu?) i jak rozwiazac ten problem
(a wiec ciasteczko wyslac tylko raz i poprawnie
zdefiniowac znaki)?
Z gory dziekuje wszystkim za odpowidz i pomoc.
Andrzej Kierzkowski
aki@helion.com.pl
Re: Dwa proste (mam nadzieje) pytania
Author: Michał Mosiewicz
Date: Mon, 08 Dec 1997 18:54
Date: Mon, 08 Dec 1997 18:54
59 lines
3428 bytes
3428 bytes
Andrzej Kierzkowski wrote:
>
> Witam,
>
> Mam dwa (jak pisalem) mam nadzieje ze trywialne pytania.
>
> 1. Czy zakladajac, ze interesuja mnie wywolania skryptu cgi
> bedacego ma moim serwerze wylacznie z moich stron (w sensie:
> tez siedzacych u mnie na serwerze), zmienna $ENV{'HTTP_REFERER'}
> zawsze zwroci mi poprawna wartosc - adres strony, z ktorej
> wolano skrypt? Wydaje sie, ze jest OK, ale cos slyszalem o
> przypadkach, ze wartosc zmiennej moze nie byc ustawiona.
To pytanie bardziej dotyczy HTTP niż perl'a. Zmienna ta na pewno będzie
zawierała to zostało wysłane w zapytaniu w nagłówku 'referer'. Natomiast
jest już zupełnie inna sprawa, czy przeglądarka zawsze zechce 'referera'
wysłać. RFC dopuszcza przypadki, gdy na przykład użytkownik specjalnie
skonfiguruje swój browser tak, żeby referera nie wysyłał.
Zarówno w przypadku MSIE jak i NS jest bardzo wiele takich przypadków,
gdy o tym zapominają.
> 2. Mam taki problem. Jest skrypt, ktorego szkic jest nastepujacy:
> a) Sprawdza, czy jest cookie I. Jezeli jest, to go
> inkrementuje, jezeli nie, to ustawia wartosc na 1.
> b) Wysyla: "Content-type: text/html\n";
> c) Wysyla "ciasteczko"
> d) Wysyla "/n"
> e) Wysyla jakas-tam strone <HTML> ...... </HTML>
> No i jezeli w tresci tej strony znajduje sie definicja strony
> kodowej (<meta http-equiv="content-type" content="text/html;
> charset=iso-8859-2">) to (tylko przy pierwszym wywolaniu skryptu)
> ciasteczko jest wysylane 2 razy (raz z wartoscia 1 a drugi raz - 2).
> Kolejne wywolania nie powoduja juz takiego efektu.
> Jezeli wyrzucam <meta...>, wszystko dziala w najwiekszym porzadku.
> Czy ktos wie dlaczego tak sie dzieje (w szczegolnosci - tylko
> przy pierwszym wywolaniu skryptu?) i jak rozwiazac ten problem
> (a wiec ciasteczko wyslac tylko raz i poprawnie
> zdefiniowac znaki)?
To zależy co się chce liczyć. Jeśli chcesz liczyć załadowania, to
faktycznie taka strona jest ładowana przez NS 2 razy (no może nie do
końca ładowana, ale wysyłane są dwa requesty). Dlatego skrypt rejestruje
dwa załadowania, nie to żeby ciacho tak samo z siebie...
Wydaje mi się, że wysyłanie charsetu od razu w nagłówku trochę pomaga
(tzn. nie w meta). Ja tak przynajmniej robię i nie mam zbyt wielkich
problemów z podwójnym ładowaniem (pojawia się naprawdę sporadycznie).
Jeśli chcesz wyeliminować tę sytuację absolutnie do końca, to najproście
dołożyć do cookie aktualny czas i sprawdzić czy minęło przynajmniej
kilka minut od poprzedniego requestu. W przeciwnym razie uznajesz to za
przeładowanie i nie inkrementujesz licznika.
Michał
--
WWW: http://www.lodz.pdi.net/~mimo tel: Int. Acc. Code + 48 42 148340
add: Michal Mosiewicz * Bugaj 66 m.54 * 95-200 Pabianice * POLAND
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads