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

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

FireFenix 15.07.2009 23:04

К примеру так

Вызов на странице функции test
Код:

function Inint_AJAX()

  try { return new ActiveXObject("Msxml2.XMLHTTP");    } catch(e) {} //IE
  try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {} //IE
  try { return new XMLHttpRequest();                  } catch(e) {} //Native Javascript
  alert("XMLHttpRequest not supported");
  return null;
}

function test(параметры)
{
  var type = document.getElementById("type");
  var url = 'modules/test.php?what=' + type.value;

  var req = Inint_AJAX();

  req.onreadystatechange = function ()
  {
    if (req.readyState == 4)
    {
      if (req.status == 200)
      {
        var text = req.responseText.toString(); //return value
        //Выполнение действия с результатом php ответа text
      }
    }
  };
 

  req.open('GET', url, true); //make connection
  req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=cp1251'); // set Header
  req.send(null); //send value
}

test.php
Код:

<?php

If ($_GET['type'])
}
  echo($_GET['type']); //Отправка AJAX'у ответ
}
?>


Whois 15.07.2009 23:05

n0reply - спасибо что не поленился все рассказать буду эксперементировать. Хотя уже понимаю из вышесказанного что этот способ будет не оптимальным, а мне нужна хотябы 99% работоспособность.
PS Если ктонибудь знает еще способы по заданию кукисов с использованием реального форматама времени пользователя + добавление секунд жизни, пожалуйста отписывайтесь здесь.

Whois 15.07.2009 23:11

Спасибо за помошь. Всем по Плюсику.

n0reply в опере заработала используя toGMTString() , щас попробую метод Феникса. Думаю пост можно закрывать.

FireFenix 15.07.2009 23:15

Я думаю догодаешься адаптировать
Код:

  var type = document.getElementById("type");
  var url = 'modules/test.php?what=' + type.value;

под свои нужды =)

P.S. Если нужно, вот нарыл у себя готовый пример - http://rapidshare.com/files/25620184...-ajax.zip.html

n0reply 15.07.2009 23:43

Проверил твой JS вариант (с toGMTString() ) на FireFox'e (в линухе), тоже все работает, скорее всего просто FF по умолчанию время выводит в GMT формате, наверное и в других броузерах будет работать, если ты в винде, то на IE проверить не долго.

n0reply 15.07.2009 23:56

Как еще один вариант, попробуй обойтись вообще без JS, чистым пхп, примерно так:
PHP код:

<?php
function set_cookie($Name$Value ''$MaxAge 0$Path ''$Domain ''$Secure false$HTTPOnly false) {
  
header('Set-Cookie: ' rawurlencode($Name) . '=' rawurlencode($Value)
                        . (empty(
$MaxAge) ? '' '; Max-Age=' $MaxAge)
                        . (empty(
$Path)   ? '' '; path=' $Path)
                        . (empty(
$Domain) ? '' '; domain=' $Domain)
                        . (!
$Secure       '' '; secure')
                        . (!
$HTTPOnly     '' '; HttpOnly'), false);
}

# examples:
set_cookie("test111""bar"10);  /* через 10 секунд  кончитсья */
set_cookie("TestCookie""value"3600"/~rasmus/"".example.com"1);
?>

по http://www.faqs.org/rfcs/rfc2109.html у Set-Cookie (заголовка) есть параметр Max-Age=delta-seconds. Который задает интервал жизни куки в секундах.

Whois 16.07.2009 18:09

Цитата:

Сообщение от n0reply
Как еще один вариант, попробуй обойтись вообще без JS, чистым пхп, примерно так:
PHP код:

<?php
function set_cookie($Name$Value ''$MaxAge 0$Path ''$Domain ''$Secure false$HTTPOnly false) {
  
header('Set-Cookie: ' rawurlencode($Name) . '=' rawurlencode($Value)
                        . (empty(
$MaxAge) ? '' '; Max-Age=' $MaxAge)
                        . (empty(
$Path)   ? '' '; path=' $Path)
                        . (empty(
$Domain) ? '' '; domain=' $Domain)
                        . (!
$Secure       '' '; secure')
                        . (!
$HTTPOnly     '' '; HttpOnly'), false);
}

# examples:
set_cookie("test111""bar"10);  /* через 10 секунд  кончитсья */
set_cookie("TestCookie""value"3600"/~rasmus/"".example.com"1);
?>

по http://www.faqs.org/rfcs/rfc2109.html у Set-Cookie (заголовка) есть параметр Max-Age=delta-seconds. Который задает интервал жизни куки в секундах.

Отлично =) Думаю самый лучший вариант, $MaxAge - решение всех проблем, никогда не слышал о нем раньше


Время: 21:16