![]() |
![]() |
![]()
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. |
|
|
![]() |
![]()
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 |
|
|
![]()
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. |
|
|
![]()
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 |
|
|
![]()
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;?
|
|
|
![]()
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 |
|
|
![]()
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. |
|
|
![]()
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. |
|
|
![]()
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
|
|
|
![]()
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] |
|
|
![]()
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 18:12 |