Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Rozpoznawanie klientow nie akceptujacych cookies
Forum PHP.pl > Forum > Przedszkole
wshk
Witam

Mam potrzebe aby zablokowac klientow ktorzy nie akceptuja cookies. Nie zobacza nic i czesc.

Z tym ze chcialbym aby odbywalo sie to juz przy samym wejsciu na pierwsza strone - nie po pierwszym kliknieciu na niej.

Pytanie jak to zrobic?
DREEMus
Zapisz coś do cookies i spróbuj odczytać ...

potem IF ...
pi_wo
Cytat(DREEMus @ 21.04.2009, 14:17:04 ) *
Zapisz coś do cookies i spróbuj odczytać ...

potem IF ...


Hehe, takie oczywiste to nie jest jeżeli mówimy o pierwszym uruchomieniu strony.

Standardowym php problemu nie da się rozwiązać przy pierwszym uruchomieniu strony. setcookie() wykona się poprawnie po stronie serwera niezależnie od tego czy user ma włączone cookies czy nie. W grę wchodzi Ajax, ale de facto będzie to też powtórne wykonanie transakcji POST/GET, ten sam efekt co przy przeładowaniu strony. Dużo zależy od tego do czego potrzebujesz tej informacji. Jeżeli chcesz powiadomić user'a o tym, że strona wymaga COOKIES, aby działać poprawnie to możesz stworzyć posłużyć się wspomnianym AJAX'em bądź wykorzystać inną technologię (popularnie jest to JS, DTML), np.:

http://techpatterns.com/downloads/javascri...eck_cookies.php

http://www.zope.org/Members/kmcnamee/HowTo.2004-11-21.2043

Jeżeli przy pierwszym uruchomieniu strony próbujesz w php sprawdzać warunkowo czy cookie istnieje, lub odwoływać się do jego wartości to jest to zwykły błąd. Wartość cookie musi być przekazana do serwera php przez użytkownika strony, ale by ten mógl wykonać jakąś akcję najpierw musi załadować stronę ...

Jest jeszcze jedna możliwość, ale chyba niezbyt elegancka... Wyświetlenie pierwszej strony jak pustej z zaszytym setcooki i redirect do strony właściwej za pomocą meta.
wshk
Aktualanie uzywame tej drugiej-mniej eleganckiej mozliwosci.
Ci co nie lubia ciasteczek widza ciasteczowego potwora zamiast strony.
sowiq
Problem co jakiś czas pojawia się na forum. A sprowadza się i tak do jednego rozwiązania. Specyfikacja PHP, obsługa cookies przez przeglądarki czy nawet sama specyfikacja protokołu HTTP (nagłówki) sprawia, że niemożliwe jest wykrycie obsługi cookies za jednym tylko żądaniem.

Pomysł z użyciem AJAX'a jest moim zdaniem niezbyt trafiony. Bo czy ktoś, kto z nadwrażliwości na zachowanie prywatności wyłącza cookies, zostawi włączoną obsługę JS? Czy jakaś niszowa przeglądarka, która nie obsługuje cookies będzie obsługiwała JS?

http://forum.php.pl/index.php?showtopic=64...mp;#entry341835
http://forum.php.pl/index.php?showtopic=10...mp;#entry515076

[edit]
Bardzo dobrym rozwiązaniem jest np. ustawić ciastko przy wywołaniu strony głównej i sprawdzić je przy próbie wczytania jakiegoś obrazka czy arkusza styli (i np. arkusz styli zależny od obsługi cookies - dzięki temu już możesz pokazać/ukryć komunikat).
Przecież to dwa oddzielne żądania wywoływane jedno po drugim. Wtedy wszystko dzieje się 'za plecami' użytkownika, jest eleganckie, a działanie strony nie zmienia się.
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.