Javascript / Cookies включены или отключены? - PullRequest
3 голосов
/ 23 июня 2009

Я ищу код, который вернет мне значения, если у пользователя включен или отключен JavaScript, а также файлы cookie.

Я знаю, что это, вероятно, легко сделать, но мои временные ограничения настолько жесткие, что это больно. Там должно быть что-то там, используя php, который делает это. В идеале я хотел бы найти код с настройкой страницы со всеми возможными значениями, которые могут повлиять на мои сценарии.

РЕДАКТИРОВАТЬ: Очевидно, JavaScript может быть отключен, но я надеюсь, что я могу найти что-то там, чтобы проверить два случая.

Мое решение

Для того, чтобы кто-то еще искал код, чтобы определить, включен ли у пользователя файл cookie или отключен, вот что я в итоге придумал из постов ниже ... вы можете просто оставить это в верхней части любой страницы, и это работает ...

<?php
// do a cookie test
if (!isset($_SESSION['cookie_check']))
{
    if (!isset($_GET['cc']))
    {
        // drop a cookie in their bag
        setcookie("cookiecheck", "ok", time()+3600);
        header("Location: ".$common->selfURL()."?cc=1");
        exit(0);
    }
    else
    {
        // do we have a problem?
        if (@$_COOKIE['cookiecheck'] != "ok")
        {
            // we have a problem
            header("Location: /site-diag.php");
            exit(0);
        }
        else
        {
            $_SESSION['cookie_check'] = true;
        }
    }
}
?>

Ответы [ 6 ]

2 голосов
/ 23 июня 2009

Для проверки Javascript, либо они есть, либо их нет. Если нет, то вы можете использовать теги <noscript> для отображения сообщения с просьбой включить его, поместить мета-перенаправление внутрь и т. Д. Это уровень ваших возможностей тестирования.

Что касается файлов cookie, попробуйте установить файл cookie, а затем прочитать его! Поскольку вы обеспокоены способностью Javascript обрабатывать файлы cookie, я предполагаю, что у вас уже есть используемая вами библиотека файлов cookie. Это означает, что вы можете просто использовать функцию set для тестового файла cookie, а затем функцию get, чтобы прочитать ее обратно. , Если тестовый файл cookie не может быть считан обратно, файлы cookie отключены.

2 голосов
/ 23 июня 2009

Вы могли бы использовать jQuery cookie плагин , чтобы написать куки, а затем посмотреть, сможете ли вы прочитать его снова. Это сообщит вам, были ли включены куки в браузере клиента или нет.

1 голос
/ 23 июня 2009

если javascript отключен, вы не можете использовать jquery или прототип.

написать функцию, которая пишет cookie, а затем пытается прочитать его.

и, во-вторых, выводит на экран некоторый js-код, который делает ajax-вызов базового сценария php.

вы можете использовать базу данных для установки логических результатов обоих тестов в таблице посетителя, если она есть.

1 голос
/ 23 июня 2009

Вот один для проверки куки

http://techpatterns.com/downloads/javascript_check_cookies.php

0 голосов
/ 09 августа 2012

Вот как я проверяю, включены ли файлы cookie и JavaScript:

if($_SESSION['JSexe']) { // 3rd check js
    if($_COOKIE['JS']) {
        setcookie('JS','JS',time()-1); // check on every page load
    }
    else {
        header('Location: js.html');
    }
}
// 2nd so far it's been server-side scripting. Client-side scripting must be executed once to set second cookie.
// Without JSexe, user with cookies and js enabled would be sent to js.html the first page load.
elseif($_COOKIE['PHP']) {
    $_SESSION['JSexe'] = true;
}
else { //1st check cookies
    if($_GET['cookie']) {
        header('Location: cookies.html');
    }
    else{
        setcookie('PHP','PHP');
        header('Location: '.$_SERVER['REQUEST_URI'].'?cookie=1');
    }
}

Подробно объяснено здесь: http://asdlog.com/Check_if_cookies_and_javascript_are_enable

0 голосов
/ 23 июня 2009

Во-первых, поймите, что вы не можете использовать JavaScript для проверки файлов cookie, если JavaScript отключен. Обычная проверка наличия файлов cookie - это написать один, а затем прочитать его.

Вам небезразличен случай, когда куки включены, но JavaScript выключен? Что вы собираетесь делать, основываясь на информации?

Я нашел этот код здесь для проверки файлов cookie через PHP. Не полагается на JavaScript. Является ли PHP вашим языком сервера?

<?php
class cookieCheck
{

    public function check()
    {
        if (setcookie("test", "test", time() + 100))
        {
            //COOKIE IS SET 
            if (isset ($_COOKIE['test']))
            {
                return "Cookies are enabled on your browser";
            }
            else
            {
                return "Cookies are <b>NOT</b> enabled on your browser";
            }
        }

    }
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...