Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Ważność cookie
Forum PHP.pl > Forum > Przedszkole
adrianozo
Witam.
Mam pytanie, czy da się sprawdzić ważność cookie?
MateuszS
W sensie czy istnieje? Takie coś powinno zadziałać.

  1. if(isset($_COOKIE["nazwa"])) {
  2. echo "istnieje";
  3. }
KeeL
Cytat(MateuszS @ 7.07.2010, 15:07:29 ) *
W sensie czy istnieje? Takie coś powinno zadziałać.

  1. if(isset($_COOKIE["nazwa"])) {
  2. echo "istnieje";
  3. }

Nie oto autorowi chodzi, chyba się nie da sprawdzić
adrianozo
W sensie, jak długo jeszcze będzie istniało... smile.gif
wookieb
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
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
time
setcookie
adrianozo
A mógłbym prosić o jakiś konkretny przykład, ponieważ jest to moje pierwsze używanie cookies w PHP?
Wicepsik
W manualu masz przykłady jak i w komentarzach.
wookieb
Ech... manuala też?

  1.  
  2. // wysylamy ciasteczko z data wygasniecia za godzine
  3. setcookie('test', 'wartosc', time() + 3600);
  4.  
  5. // w tym ciasteczku wiesz kiedy wysłałeś ciasteczko więc możesz policzyć kiedy wygasnie ciasteczko "test"
  6. setcookie('czas_ciasteczka', time(), time() + 3600);

adrianozo
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
Zapraszam do manuala time i dowiedz się co to jest za wartość zwracana przez funkcję time.
Ruio
podpowiem że musisz użyć funkcji : date()
Fifi209
Cytat(Ruio @ 7.07.2010, 15:52:22 ) *
podpowiem że musisz użyć funkcji : date()

To źle podpowiesz.
Ruio
fakt to mu zamieni nie na minuty tylko na normalny czas. Sorka za pomyłkę
adrianozo
Chwila bo już się pogubiłem...
Jak mam to sprawdzić?
wookieb
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
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ć".
Ruio
np tak: (time()+60-time())/60
Fifi209
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. winksmiley.jpg
Ruio
fifi prawda ale jak widze jak sobie nie radzi z manualem to mnie coś trafia tongue.gif
Fifi209
Cytat(Ruio @ 7.07.2010, 16:16:24 ) *
fifi prawda ale jak widze jak sobie nie radzi z manualem to mnie coś trafia tongue.gif

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 haha.gif)
Ruio
to mnie pytasz co tam jest trudnego questionmark.gif ja to wiem ty to wiesz ...
adrianozo
To raczej nie to... Cały czas otrzymuje wartość 1
Ruio
to był przykład.... podaj swoje wartości itp
adrianozo
  1. setcookie("kontakt", 1, time()+10*60);
  2. setcookie('waznosc_ciasteczka', time(), time()+10*60);
  3. $waznosc_ciasteczka = $_COOKIE['waznosc_ciasteczka'];
  4. 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>';
Ruio
Odejmij od $_COOKIE['waznosc_ciasteczka'] aktualny czas i podziel wynik przez 60 tak jak pokazałem na przykładzie
adrianozo
Takie coś?

$waznosc_ciasteczka = $_COOKIE['waznosc_ciasteczka']-time())/60;

Jeśli tak to wychodzą głupoty
Wicepsik
Znasz kolejność wykonywania działań? smile.gif
adrianozo
Tak...

Zabrakło nawiasu... Zaraz sprawdzę.

Po takim czymś

  1. $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 haha.gif

  1. $waznosc_ciasteczka = 10-(($_COOKIE['waznosc_ciasteczka']-time())/60)*(-1);
Fifi209
Dobra powiem Ci jak to zrobić...

Zapisujesz ciastko time() + 60 (przykładowo minuta)

Potem

  1.  
  2. if (time() - $_COOKIE['time'] >= 0){
  3.  
  4. }else{
  5. echo 'Poczekaj';
  6. }
adrianozo
A tak jak ja mam nie może być? Działać działa.

  1. $waznosc_ciasteczka = 10-(($_COOKIE['waznosc_ciasteczka']-time())/60)*(-1);
Fifi209
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
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
floor
Wicepsik
  1. if(!isset($_COOKIE['ciacho'])){
  2. setcookie('ciacho', time()+10*60,time()+10*60);
  3. }else{
  4. $ciacho = $_COOKIE['ciacho']-time();
  5. $minut = floor($ciacho/60);
  6. $sekund = $ciacho - $minut*60;
  7. echo 'Mozesz napisac za '.$minut.':'.$sekund;
  8. }
adrianozo
floor pomogło. Temat do zamknięcia smile.gif
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.