Могу ли я создать переменную с JavaScript, которую может распознавать PHP? - PullRequest
2 голосов
/ 02 апреля 2010

У меня есть ряд операторов PHP, которые я хочу выполнять, только если включен javaScript.

if($js_enabled == 'yes') {
   //Run a series of PHP statements
}

Моя проблема в том, что я хочу создать эту переменную $ js_enabled с помощью javaScript. Поэтому, если включен javaScript, будет создана переменная и будут выполняться операторы PHP, но если javaScript не включен, переменная никогда не будет создана и операторы PHP не будут выполняться.

Как я могу создать переменную с JavaScript, которую может распознавать PHP?

Ответы [ 5 ]

6 голосов
/ 02 апреля 2010

Вы можете сделать

$browser = get_browser();
if ($browser['javascript'] == 1) {
    // your code here
}

Пожалуйста, прочитайте документацию для get_browser для предостережений, особенно

Примечание. Чтобы это работало, настройки конфигурации browscap в php.ini должны указывать на правильное расположение файла browscap.ini в вашей системе. browscap.ini не поставляется с PHP, но вы можете найти актуальный файл »php_browscap.ini здесь. Хотя browscap.ini содержит информацию о многих браузерах, он поддерживает обновления пользователей для поддержания актуальности базы данных. Формат файла довольно понятен.

Также проверьте ссылку, приведенную в комментариях к get_browser:


РЕДАКТИРОВАТЬ Как вы правильно указали в комментариях, вышеизложенное не скажет вам, включен ли JavaScript , а только о том, поддерживает ли браузер . Это. Узнать о клиентской стороне со стороны сервера невозможно, потому что серверная сторона запускается первой. Если что, сообщите серверу после , когда страница была обслужена, например, вроде @ mck89 предложил или просто установите cookie, который вы можете прочитать при каждом последующем запросе

Но, вообще говоря, если ваш сайт требует JavaScript, вы должны просто добавить сообщение, чтобы проинформировать пользователя об этом требовании, например ::

<noscript>This page requires JavaScript to run properly</noscript>

Другими словами, не проверяйте из PHP. Просто установите все переменные, которые браузер может использовать, , если JavaScript включен, и рассмотрите возможность использования постепенного ухудшения или прогрессивного улучшения .

2 голосов
/ 02 апреля 2010

Почему бы вам не просто запрос ajax? Если javascript отключен, ajax-запрос не может быть выполнен, поэтому скрипт PHP не будет выполнен, если javascript включен, ajax-запрос запускает выполнение PHP-скрипта.

1 голос
/ 02 апреля 2010

Если бы мне это понадобилось так сильно, я бы использовал JavaScript для установки переменной формы (предпочтительно скрытой) на странице раньше, а затем проверял бы ее при обработке формы .. В противном случае я бы заставил мои страницы работать без JS ...

1 голос
/ 02 апреля 2010

Вы можете сохранить это значение в скрытом поле. и проверьте это на стороне сервера.

0 голосов
/ 02 апреля 2010

Этого нельзя сделать. PHP на стороне сервера, в то время как javascript интерпретируется только после интерпретация php уже выполнена, а код уже находится в браузере пользователя. Попробуйте обходной путь, используя ajax. если javascript_enabled -> вызвать с ajax некоторую страницу php.

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