Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Setcokie в Javascript Нужна помошь Срочно =) (https://forum.antichat.xyz/showthread.php?t=129965)

Whois 15.07.2009 20:57

Setcokie в Javascript Нужна помошь Срочно =)
 
Всем привет, заранее буду признателен за помошь.

Вобщем мне нужно было задать временные куксы, для теста время жизни взял 10 секунд.
На php реализовал это следующим образом:
PHP код:

 setcookie("temporary","blablalbla",time()+10); 

Все хорошо, все работает. Но только в том случае!, КОгда Время на сервере такое е же как и у пользователя на компе. В противном случае будет задан пирожок с неправильным временем жизни.

Чтобы узнать время пользователя пришлось воспользовался javascript. В яваскрипте есть функция gettime - аналог time на php.
Передать переменную из явы в пхп можно (на сколько мне известно) 3 способами:
1. гет запрос
2 пост запрос
3 установить куки
Первые два варианта сразу отбрасываю, т к они требуют обновления страница, остается 3. Гораздо легче задать куки через яву. Собственно тут я и столкнулся спроблемой.
Ниже приведу код:


PHP код:


<SCRIPT LANGUAGE="JavaScript">
function 
setCookie (namevalueexpirespathdomainsecure) {
      
document.cookie name "=" escape(value) +
        ((
expires) ? "; expires=" expires "") +
        ((
path) ? "; path=" path "") +
        ((
domain) ? "; domain=" domain "") +
        ((
secure) ? "; secure" "");
}
</
SCRIPT>

<
SCRIPT LANGUAGE="JavaScript">
setCookie("foo""bar""Mon, 01-Jan-2010 00:00:00 GMT""/");
</
SCRIPT

В данном примере в переменной время (expires) нужно указать точное число, а мне же нужно чтобы куки устанавливалось на определенное колиичетсво секунд. Как это сделано в php time()+ секунды. В этом вся и загвостка. Моих знаний не хватает. Буду признателен за помош

Whois 15.07.2009 21:17

ап ап ап =(((

n0reply 15.07.2009 21:33

PHP код:

<html>
<
head></head>
<
body>
 <
SCRIPT LANGUAGE="JavaScript">
  var 
= new Date( (new Date()).getTime() + 10000 );
  
document.write(d.toString());
 </
SCRIPT>
</
body>
</
html

в d будет хранитсья текущая дата клиента + 10 секунд. (getTime() в милисекундах).

Whois 15.07.2009 21:56

А СПАСИБО ВЕРИ МАЧ =) ЩАС БУДУ ПРОБОВАТЬ

Whois 15.07.2009 22:27

чувствуя себя нубом, не могу все совсместить воедино... Нелюблю я яву...может кто поможет?

я делаю так:

PHP код:


 
<SCRIPT LANGUAGE="JavaScript">
function 
setCookie (namevalueexpirespathdomainsecure) {
      
document.cookie name "=" escape(value) +
        ((
expires) ? "; expires=" expires "") +
        ((
path) ? "; path=" path "") +
        ((
domain) ? "; domain=" domain "") +
        ((
secure) ? "; secure" "");
}
</
SCRIPT>

 <
SCRIPT LANGUAGE="JavaScript">
  var 
= new Date( (new Date()).getTime() + 10000 );
  
setCookie("test111""bar""d.toString()""/");
 </
SCRIPT


кукис задается но без времени

n0reply 15.07.2009 22:38

а так:
PHP код:

 <SCRIPT LANGUAGE="JavaScript">
function 
setCookie (namevalueexpirespathdomainsecure) {
      
document.cookie name "=" escape(value) +
        ((
expires) ? "; expires=" expires "") +
        ((
path) ? "; path=" path "") +
        ((
domain) ? "; domain=" domain "") +
        ((
secure) ? "; secure" "");
}
</
SCRIPT>

 <
SCRIPT LANGUAGE="JavaScript">
  var 
= new Date( (new Date()).getTime() + 10000 );
  
setCookie("test111""bar"d.toString(), "/");
 </
SCRIPT


Whois 15.07.2009 22:43

http://i043.radikal.ru/0907/1c/3bb54faaf3f0.jpg Аналагично, время не задается пачемуТО

FireFenix 15.07.2009 22:56

Цитата:

Чтобы узнать время пользователя пришлось воспользовался javascript. В яваскрипте есть функция gettime - аналог time на php.
Передать переменную из явы в пхп можно (на сколько мне известно) 3 способами:
1. гет запрос
2 пост запрос
3 установить куки
Первые два варианта сразу отбрасываю, т к они требуют обновления страница
AJAX не рулед?
JS выставлять куки - извращение

Whois 15.07.2009 22:59

рулед все.... покажите мне готовое решение... Я сам знаю много способов но силен только в php.... Так что обращаюсь за помощью к вам

n0reply 15.07.2009 23:00

d.toString() я тебе для примера сверху написал, чтобы просто на экран дату вывести, плюс ты ее в кавычки зачем-то заслал.

Видимо проблема с форматом даты в котором выводит ее toString(), возможно этот момент броузро-зависим, проверил щас твой код на FireFox'e, в линуксе, все работает и дата задается.

Попробуй поэксперементируй, вместо toString(): toGMTString(), toLocaleString(), toUTCString(). Вообще посравнивай как твоя опера дату распечатывает. Я так понял
"Mon, 01-Jan-2010 00:00:00 GMT"
с таким вариантом все работает, посмотри насколько toString() от него отличается? Возможно в разных броузерах и вывод будет разный (или даже в разны ОС), и возможно прибется форматировать эту строку вручную строковыми функциями.


Время: 07:34