Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z zapisem cookies...
Forum PHP.pl > Forum > PHP
KIDek
Witam.

Mam pewien problem, otoz mam problem z zapisaniem cookie. Korzystam z nastepujacego kodu:

[php:1:6d91d37611]<?php
setcookie("phpPCountVisited", "1", time()+3600*3);
?>[/php:1:6d91d37611]

... ktory teoretycznie powinien zapisac na komputerze klienta ciacho ze zdefiniowana informacja. Problem w tym, ze przy probie odczytania takiego ciastka:

[php:1:6d91d37611]<?php
echo ($phpPCountVisited);
?>[/php:1:6d91d37611]

skrypt nie wyswietla nic, nawet zapisanej jedynki, przez co moj odporny na odswiezanie licznik odwiedzin nalicza mimo wszystko kazde odswiezenie strony.

Chce zaznaczyc, iz skrypt testuje na serwerze Apache 2 z zainstalowanym php 4.3.2. Skrypt probuje sprawdzic po wpisaniu do internet explorera (wersja z windowsa 2003 enterprise, chyba 6.0) http://127.0.0.1/index.php . Nie probowalem tego na innych komputerach. Prosze o pomoc, gdzie wlasciwie moze tkwic problem?

Z gory dziekuje.
harek
Bo robisz to tak wysyłasz cokie a puźniej :
[php:1:9e30d99b32]<?php
if($phpPCountVisited=="1"){
exit;
//nie zalicza odwiedziny i kończy skrypt
}
else{
setcookie("phpPCountVisited", "1", time()+3600*3);
$file=fopen("licznik.txt", "r");
$ile= fread ($file, 9999);
fclose($file);

$ile++;

$file1=fopen("licznik.txt", "r+");
fputs($file, $ile);
fclose($file1);
echo"Strone odwiedziło już $ile osób/osoby";
}
ob_end_flush();
?>[/php:1:9e30d99b32]

Powino działać i pamiętaj że cookie wysyłąmy zawsze przed nagłówkiem więc uzyj bufrowania wyjścia
czyli na samym początku strony daj to [php:1:9e30d99b32]<?php
ob_start();
?>[/php:1:9e30d99b32]
a na końcu skryptu dajesz to [php:1:9e30d99b32]<?php
ob_end_flush();
?>[/php:1:9e30d99b32] ale ja już to zrobiłęm za ciebie!
KIDek
Hmm, mimo wszystko nie dziala. To co napisales fakt - pomogloby mi - ale juz nie raz pisalem ten skrypt i za kazdym razem dzialal, wiec mysle ze jest tutaj wina konfiguracji servera. Robie to dokladnie tak:

Przed znacznikiem <head> wstawiam:

[php:1:232214a278]<?php
setcookie("phpPCountVisited", "1", time()+3600*3);
?>[/php:1:232214a278]

a potem w zrodle pliku, do wyswietlenia ilosci odwiedzin korzystam z tego:

[php:1:232214a278]<?php
if(file_exists("data/data_statistics/data_statistics_counter_persons.dat"))
{
$phpPCountFile=fopen("data/data_statistics/data_statistics_counter_persons.dat", "r");
flock($phpPCountFile, 1);

$phpPCountValue=fgets($phpPCountFile, 100);

flock($phpPCountFile, 3);
fclose($phpPCountFile);

if($phpPCountVisited!="1")
{
$phpPCountValue++;
}
}
else
{
$phpPCountValue=1;
}

$phpPCountFile=fopen("data/data_statistics/data_statistics_counter_persons.dat", "w");
flock($phpPCountFile, 2);

fwrite($phpPCountFile, $phpPCountValue);

flock($phpPCountFile, 3);
fclose($phpPCountFile);

echo($phpPCountValue);
?>[/php:1:232214a278]

Wiec wydaje mi sie, ze robie wszystko dobrze. A jednak... nie dziala...
spenalzo
Ciastka odczytuje sie tak:
[php:1:260e2040c7]<?php
$_COOKIE["nazwa"];
// lub w starszych werjsach
$HTTP_COOKIE_VARS["nazwa"];
?>[/php:1:260e2040c7]
KIDek
Ehh, a takie to proste winksmiley.jpg)) Bardzo dziekuje smile.gif
cahe
Jeśli chcesz po staremu ustaw w php.ini RegisterGlobals na On - ale nie polecam ;]
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.