adrianozo
7.07.2010, 13:09:49
Witam.
Mam pytanie, czy da się sprawdzić ważność cookie?
MateuszS
7.07.2010, 14:07:29
W sensie czy istnieje? Takie coś powinno zadziałać.
if(isset($_COOKIE["nazwa"])) { }
Cytat(MateuszS @ 7.07.2010, 15:07:29 )

W sensie czy istnieje? Takie coś powinno zadziałać.
if(isset($_COOKIE["nazwa"])) { }
Nie oto autorowi chodzi, chyba się nie da sprawdzić
adrianozo
7.07.2010, 14:15:13
W sensie, jak długo jeszcze będzie istniało...
wookieb
7.07.2010, 14:17:20
Nie ma takiej możliwości ani z poziomu javascript ani php. Po prostu takie dane nie są wysyłane przez przeglądarke. Ona sama wie kiedy wyłączyć ciasteczko. Dlatego opcją jest żeby wraz z ciasteczkiem wysłać drugie z wartością znacznika czasowego oznaczającego kiedy zostało wysłane.
adrianozo
7.07.2010, 14:22:58
Cytat(wookieb @ 7.07.2010, 15:17:20 )

Dlatego opcją jest żeby wraz z ciasteczkiem wysłać drugie z wartością znacznika czasowego oznaczającego kiedy zostało wysłane.
Czyli jakby miało to wyglądać?
wookieb
7.07.2010, 14:24:32
adrianozo
7.07.2010, 14:29:17
A mógłbym prosić o jakiś konkretny przykład, ponieważ jest to moje pierwsze używanie cookies w PHP?
Wicepsik
7.07.2010, 14:33:00
W manualu masz przykłady jak i w komentarzach.
wookieb
7.07.2010, 14:36:00
Ech... manuala też?
// wysylamy ciasteczko z data wygasniecia za godzine
// w tym ciasteczku wiesz kiedy wysłałeś ciasteczko więc możesz policzyć kiedy wygasnie ciasteczko "test"
adrianozo
7.07.2010, 14:44:26
Tak... Zrobiłem takie coś:
setcookie("kontakt", 1, time()+10*60);
setcookie('waznosc_ciasteczka', time(), time()+10*60);
$waznosc_ciasteczka = $_COOKIE['waznosc_ciasteczka'];
echo 'Prosimy spróbować za '.$waznosc_ciasteczka.' minut.';
I otrzymałem
Prosimy spróbować za 1278510114 minut.
Chcę to przeliczyć na minuty.
wookieb
7.07.2010, 14:47:47
Zapraszam do manuala
time i dowiedz się co to jest za wartość zwracana przez funkcję time.
podpowiem że musisz użyć funkcji :
date()
Fifi209
7.07.2010, 14:53:58
Cytat(Ruio @ 7.07.2010, 15:52:22 )

podpowiem że musisz użyć funkcji :
date()To źle podpowiesz.
fakt to mu zamieni nie na minuty tylko na normalny czas. Sorka za pomyłkę
adrianozo
7.07.2010, 15:08:43
Chwila bo już się pogubiłem...
Jak mam to sprawdzić?
wookieb
7.07.2010, 15:10:27
Cytat(wookieb @ 7.07.2010, 15:47:47 )

Zapraszam do manuala
time i dowiedz się co to jest za wartość zwracana przez funkcję time.
Fifi209
7.07.2010, 15:11:04
Cytat(adrianozo @ 7.07.2010, 16:08:43 )

Chwila bo już się pogubiłem...
Jak mam to sprawdzić?
time czytasz co zwraca ta funkcja, wtedy będziesz mógł sobie na minuty "przerobić".
np tak: (time()+60-time())/60
Fifi209
7.07.2010, 15:15:06
Cytat(Ruio @ 7.07.2010, 16:12:29 )

np tak: (time()+60-time())/60
W ten sposób się nie nauczy, póki sam nie sprawdzi nie zapamięta.
fifi prawda ale jak widze jak sobie nie radzi z manualem to mnie coś trafia
Fifi209
7.07.2010, 15:17:45
Cytat(Ruio @ 7.07.2010, 16:16:24 )

fifi prawda ale jak widze jak sobie nie radzi z manualem to mnie coś trafia

A co tam jest do radzenia sobie?
Cytat
Zwraca aktualny czas, podawany jako liczba sekund, które upłynęły od uniksowej Epoki (1 stycznia 1970 00:00:00 GMT).
Jest napisane po POLSKU i WYRAŹNIE (czcionka

)
to mnie pytasz co tam jest trudnego

ja to wiem ty to wiesz ...
adrianozo
7.07.2010, 15:42:06
To raczej nie to... Cały czas otrzymuje wartość 1
to był przykład.... podaj swoje wartości itp
adrianozo
7.07.2010, 16:23:32
$waznosc_ciasteczka = $_COOKIE['waznosc_ciasteczka'];
echo '<div align="center"><font color="green"><br /><b>Nie można wysłać ponownie wiadomości.<br />Prosimy spróbować za '.$waznosc_ciasteczka.' minut.</b></font></div>';
Odejmij od $_COOKIE['waznosc_ciasteczka'] aktualny czas i podziel wynik przez 60 tak jak pokazałem na przykładzie
adrianozo
7.07.2010, 17:31:31
Takie coś?
$waznosc_ciasteczka = $_COOKIE['waznosc_ciasteczka']-time())/60;
Jeśli tak to wychodzą głupoty
Wicepsik
7.07.2010, 17:32:42
Znasz kolejność wykonywania działań?
adrianozo
7.07.2010, 18:09:51
Tak...
Zabrakło nawiasu... Zaraz sprawdzę.
Po takim czymś
$waznosc_ciasteczka = ($_COOKIE['waznosc_ciasteczka']-time())/60;
Otrzymuje
Kod
Nie można wysłać ponownie wiadomości.
Prosimy spróbować za -0.66666666666667 minut.
I coraz niżej czyli po odświeżeniu
Kod
Nie można wysłać ponownie wiadomości.
Prosimy spróbować za -1.1833333333333 minut.
Może trochę przesadziłem, ale zrobiłem takie działanie

$waznosc_ciasteczka = 10
-(($_COOKIE['waznosc_ciasteczka']-time())/60
)*(-1
);
Fifi209
7.07.2010, 18:17:49
Dobra powiem Ci jak to zrobić...
Zapisujesz ciastko time() + 60 (przykładowo minuta)
Potem
if (time() - $_COOKIE['time'] >= 0
){
}else{
}
adrianozo
7.07.2010, 18:34:36
A tak jak ja mam nie może być? Działać działa.
$waznosc_ciasteczka = 10
-(($_COOKIE['waznosc_ciasteczka']-time())/60
)*(-1
);
Fifi209
7.07.2010, 18:41:32
Matematyka to logiczne myślenie.
Do ciastka zapisujesz aktualny czas + czas który musi czekać
Przy sprawdzaniu odejmujesz aktualny od zapisanego w ciastku jeżeli różnica jest >= zero wtedy może znów pisać w przeciwnym wypadku nie.
adrianozo
7.07.2010, 19:01:34
O tym kiedy może pisać to ja już dawno zrobiłem, ale chodziło o to, że chcę wyświetlić czas za ile może napisać kolejny raz i zrobiłem to tym swoim kodem teraz chcę to tylko zaokrąglić co do minuty...
Fifi209
7.07.2010, 19:05:15
Wicepsik
7.07.2010, 19:10:10
if(!isset($_COOKIE['ciacho'])){ }else{
$ciacho = $_COOKIE['ciacho']-time(); $minut = floor($ciacho/60
); $sekund = $ciacho - $minut*60;
echo 'Mozesz napisac za '.$minut.':'.$sekund; }
adrianozo
7.07.2010, 19:24:44
floor pomogło. Temat do zamknięcia
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.