🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.perl
Article #777

Re: Dwa proste (mam nadzieje) pytania

#777
From: Michał Mosiewicz
Date: Mon, 08 Dec 1997 18:54
59 lines
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
Technical Details
Message-ID: <348C4280.CB43B1BB@lodz.pdi.net>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!uw.edu.pl!mimo.lodz.pdi.net!not-for-mail
References: <348CBAD5.53A5@helion.com.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!uw.edu.pl!mimo.lodz.pdi.net!not-for-mail
From: Michał Mosiewicz <mimo@lodz.pdi.net>
Newsgroups: pl.comp.lang.perl
Subject: Re: Dwa proste (mam nadzieje) pytania
Date: Mon, 08 Dec 1997 19:54:56 +0100
Organization: (none)
Lines: 59
Message-ID: <348C4280.CB43B1BB@lodz.pdi.net>
References: <348CBAD5.53A5@helion.com.pl>
NNTP-Posting-Host: mimo.lodz.pdi.net
Mime-Version: 1.0
X-Mailer: Mozilla 4.04 [en] (X11; I; Linux 2.0.32 i586)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit