Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak wykryć czy klient ma akceptuje cookie?
tomrak
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 4.01.2004
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Witajcie.
Piszę po raz pierwszy na tym forum.

Szukałem odpowiedzi na pytanie zadane w temacie, lecz nie znalazłem na tym forum. Jeśli temat był już poruszany to przepraszam i proszę o wskazówkę, odnośnik do tego miejsca.

Jeśli nie to pytam:

Jak wykryć czy klient akceptuje cookie?
Po co takie coś?

Przypuśćmy, że moje oprogramowanie prowadzące statystykę odwiedzin strony zapisuje na dysku serwera nr sesji kazdego z uzytkownikow, jednoczesnie zapisuje cookie u klienta, ktore zawiera ten nr sesji.

Jesli klient będzie miał wyłączoną obsługę cookie, przy następnym wejsciu
zostanie mu znów przydzielone nowe cookie - bo oprogamowniae sprawdza czy takowe jest zapisane u niego.

Powoduje to psucie statystyki - gdyż nabija to liczę indywidulanych użytkowników odwiedzających serwis.

Proszę o poradę.

Serdecznie pozdrawiam,
Tomek.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
cichy
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 197
Pomógł: 0
Dołączył: 9.09.2003
Skąd: z Marsa

Ostrzeżenie: (0%)
-----


na wstępie zrób coś takiego.
[php:1:27fc2cd432]<?php
if($_GET['check']=="cookie")
{
if(isset($_COOKIE['nazwa']))
{
//ma włączoną obsługe cookie
}
else
{
//nie ma obsługi cookie
}
}
else
{
setcookie("nazwa","jakaswartosc",time()+10000);
header(Location: http://www.twojastrona.pl/index.php?check=cookie);
}
?>[/php:1:27fc2cd432]

Powinno zadziałać.
Cytat
Przypuśćmy, że moje oprogramowanie prowadzące statystykę odwiedzin strony zapisuje na dysku serwera nr sesji kazdego z uzytkownikow, jednoczesnie zapisuje cookie u klienta, ktore zawiera ten nr sesji.

Co do tego to jeśli chodzi o sesje wbudowane w php to jeśli ciacho nie istnieje sesja jest przekazywana w URLu (chyba że w php.ini jest to wyłaczone)

Pozdrawiam

EDITED: właśnie zdałem sobie sprawe że to nie zabardzo będzie działać.
zaraz coś wykombinuje innego
Go to the top of the page
+Quote Post
tomrak
post
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 4.01.2004
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Dzięki za szybką odpowiedź - za raz wypróbuję.

Jeśli chodzi o sesje - zrobiłem swoją obsługę, która działa niezawodnie.
Miałem troszkę problemów z wbodowaną obsługą sesji.

PS.

Przy okazji - choć nie dotyczy to bezpośrednio php, czy należy użytkowników informować [polityka prywatności] o tym, że witryna korzysta z ciasteczek?
Wydaje mi się, że wszystkie te teksty bardziej straszą niż tłumaczą.

Dziękuję i pozdrawiam,

Tomek.
Go to the top of the page
+Quote Post
cichy
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 197
Pomógł: 0
Dołączył: 9.09.2003
Skąd: z Marsa

Ostrzeżenie: (0%)
-----


[php:1:6c8ffb4d58]<?php
$twoja_strona = "http://www.twojastrona.pl";

if($_SERVER['HTTP_REFERER']==$twoja_strona)
{
if(!isset($_COOKIE['nazwa'])
{
//nie ma obsługi ciastek
}
else
{
//ma obsługe ciastek
}
}
else
{
setcookie("nazwa","jakaswartosc",time()+10000);
header(Location: $twoja_strona);
}

?>[/php:1:6c8ffb4d58]
Ten kod powinien być lepszy.
Choć glowy sobie nie dam uciąć (ani niczego innego (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) )

Co do informowania ludności że Twoja strona działa na ciastkach to informuj ich wtedy gdy to ciastko musi zostać postawione.
W przeciwnym razie użytkownikowi wszystko jedno czy są ciastka czy nie ma.
Pozdro
Go to the top of the page
+Quote Post
tomrak
post
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 4.01.2004
Skąd: Tychy

Ostrzeżenie: (0%)
-----


A czy po header nie powinno być exit;?
Go to the top of the page
+Quote Post
cichy
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 197
Pomógł: 0
Dołączył: 9.09.2003
Skąd: z Marsa

Ostrzeżenie: (0%)
-----


W tym przypadku gdy przekierowujesz usera na inną strone to raczej nie ma znaczenia.
jeśli chcesz możesz umieścić exit(); po header ale nie jest to wymagane.
Przynajmniej takie jest moje zdanie.
Pozdro
Go to the top of the page
+Quote Post
bamboos
post
Post #7





Grupa: Zarejestrowani
Postów: 115
Pomógł: 0
Dołączył: 3.05.2003
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Witam!!
Informowanie użytkownika o coastkach według mnie nie ma większego sensu. Jak ktoś Bardzo nie chce ciastek, to używa przeglądarki, która ich nie obsługuje lub wyłącza je. Jednak większości inernautów (według mnie) "wisi" czy jakaś stronka zostawia ciastka czy nie. Podejżewam, że dużo osób nawet nie wie co to jest i jak to się je. Czyli wyrzucanie komunikatów itp. tylko utrudnia pracę, bo nagle coś wyskakuje... Ale umieszczenie informacji, np: w stopce stronki typu:
"Zostawiam po sobie ciasteczka" jest całkiem wskazana. To tak na mój gust.
Go to the top of the page
+Quote Post
tomrak
post
Post #8





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 4.01.2004
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Drugi przyklad wpada w jakas petle (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Jak podgladam katalog z cookisami to non stop miesza z tym jednym.

(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Sprawdze pierwszy.
Go to the top of the page
+Quote Post
bamboos
post
Post #9





Grupa: Zarejestrowani
Postów: 115
Pomógł: 0
Dołączył: 3.05.2003
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Witam!!
Bo w drugim przypadku $_SERVER['HTTP_REFERER'] może mieć wartość:
Kod
http://www.twojastrona.pl/
co już jest różne od:
Kod
http://www.twojastrona.pl
Go to the top of the page
+Quote Post
dob
post
Post #10





Grupa: Zarejestrowani
Postów: 166
Pomógł: 0
Dołączył: 30.01.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat
A czy po header nie powinno być exit;?

Lepiej dać, na wypadek nie wykonania sie nagłowka (jak nie przeniesie na inną stronę to zatrzyma dalesze działanie skryptu)

to coś
[php:1:d3b45592c0]<?php
header(Location: $twoja_strona);
?>[/php:1:d3b45592c0]
zmień na :
[php:1:d3b45592c0]<?php
header("Location: ".$twoja_strona);
?>[/php:1:d3b45592c0]
$_SERVER['HTTP_REFERER'] :
Cytat
The address of the page (if any) which referred the user agent to the current page. This is set by the user agent. Not all user agents will set this, and some provide the ability to modify HTTP_REFERER as a feature. In short, it cannot really be trusted


Najprostszy sposób na sprawdzenie czy klient akceptuje ciastka to :
strona a.php
[php:1:d3b45592c0]<?php
setcookie("ciastko", "wartosc", time()+3600);
header("location: b.php");
?>[/php:1:d3b45592c0]
strona b.php
[php:1:d3b45592c0]<?php
if($_COOKIE['ciastko']==wartosc){
echo "klient akceptuje ciastka";
}else{
echo "klient nie akceptuje ciastek";
}
?>[/php:1:d3b45592c0]


Tu masz jeszcze jeden kod
[php:1:d3b45592c0]<?php

if ($_GET['check']!=cookie){
setcookie("ciastko", "wartosc", time()+180);
header("location: ?check=cookie");
}else{
if($_COOKIE['ciastko']==wartosc){
echo "klient akceptuje ciastka";
}else{
echo "klient nie akceptuje ciastek";
}
}

?>[/php:1:d3b45592c0]
Go to the top of the page
+Quote Post
tomrak
post
Post #11





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 4.01.2004
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Dziękuję bardzo za pomoc.
Skrypt działa.

(IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Serdecznie pozdrawiam,
Tomek
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 18:12