Как я могу обнаружить IE9 или ниже, а затем выполнить PHP на основе результата?

Я знаю, как определить браузер, используя JavaScript, но как я могу передать эту информацию в PHP?

Как я могу сделать следующее:

  1. Javascript обнаруживает браузер, возвращает «да», если у пользователя IE 9 или ниже, и переходит к шагу 2.

  2. Javascript сообщает PHP «да» и переходит к шагу 3.

  3. PHP выполняет оператор if / else в зависимости от того, присутствует ли «да» из приведенного выше JavaScript.

0

Решение

Пользовательский агент не является надежным методом.
Лично я использую Agent Switcher, чтобы обманывать сайты довольно часто.
Этот метод не будет обманут.
Мой единственный вариант — отключить JavaScript.

Выберите инструкцию JS, которая работает в IE9 +, а не в предыдущих версиях

Вероятно, есть лучшая инструкция для использования, кроме getElementsByClassName но это демонстрирует концепцию.

Выберите инструкцию из тестовой страницы следующим образом:

Тесты возможностей браузера

Затем создайте тестовую страницу и протестируйте эту страницу на тестовом сайте Cross Browser.


Этот тест будет успешно пройден (ИСТИНА) или не пройден (ЛОЖЬ) на основе поддержки браузера для try{}catch{} в любом браузере, начиная с 1999 года:

  • Netscape 6.0
  • FireFox 1.0
  • IE 5.5

Это пройдет TRUE на:

  • Хром
  • FireFox 3.0+
  • IE9 +
  • опера
  • Сафари

Сбой (ЛОЖЬ) только на IE5.5 — IE8


HTML

<div class="test"></div>

JS

var checkIE = false;
try {
var el = document.getElementsByClassName('test');
checkIE9 = true;
}
catch(e)  {
checkIE9 = false;
}

Затем перенаправить на основе того, является ли checkIE9 истинным или ложным

Замените mozilla.org на страницу / скрипт IE9 и на microsoft.com страницу / скрипт старого стиля

if (checkIE9){
window.location = 'http://mozilla.org';
}
else{
window.location = 'http://www.microsoft.com';
}

Или отправьте форму основано на истинном или ложном.

HTML

<form action="true.php" method="get"><div>
<input type="hidden" name="chkIE" value="1"/>
<button id="t" type="submit"></button>
</div></form>

<form action="false.php" method="get"><div>
<input type="hidden" name="chkIE" value="2"/>
<button id="f" type="submit"></button>
</div></form>

НОТА: Да, это может быть одна форма с двумя кнопками, но формы дешевы, и мне нравится передавать значения скрытым вводом.

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

Нулевой контрольный код в test.php:

$chckIE9 = intval($_GET['chkIE9']);
if($chckIE9 == 0){
include('test.html');
exit;
}

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

<form action="test.php" method="get"><div>
<input type="hidden" name="chkIE" value="1"/>
<button id="t" type="submit"></button>
</div></form>

<form action="test.php" method="get"><div>
<input type="hidden" name="chkIE" value="2"/>
<button id="f" type="submit"></button>
</div></form>

PHP:

$chckIE9 = intval($_GET['chkIE9']);
if($chckIE9 == 1){
include('true.php');
}
elseif($chckIE9 == 2){
include('false.php');
}
else{
include('test.html');
}
exit;

JS
Здесь необходимо принять решение о том, какой путь по умолчанию.
Вы можете нажать «f», если (! CheckIE9)
Тогда по умолчанию будет IE9 +
Если есть необходимость в дефолте, вероятно, лучше по умолчанию использовать false

if (checkIE9){
document.getElementById('t').click();
}
else{
document.getElementById('f').click();
}

Snipppet

Этот фрагмент будет отображать либо «IE9 + Совместимо», либо «ОБНОВИТЬ ВАШ БРАУЗЕР»
Этот код протестирован с IE8, который выскакивает «ОБНОВИТЬ ВАШ БРАУЗЕР»

var checkIE = false;
try {
var el = document.getElementsByClassName('true');
checkIE9 = true;
}
catch(e)  {
checkIE9 = false;
}
if (checkIE9){
document.getElementById('t').style.display = 'block';
}
else{
document.getElementById('f').style.display = 'block';
} 
#t,#f,.hide{display:none;}
<!DOCTYPE html>
<html lang="en">
<head></head><body>
<div id="t" class="true"><h2>&#x2003;IE9+ Compatible</h2></div>
<div id="f"><h2>&#x2003;UPDATE YOUR BROWSER</h2></div>
</div>
<form action="test.php" method="get"><div><input type="hidden" name="chkIE" value="1"/><button class="hide" id="t" type="submit"></button></div></form>
<form action="test.php" method="get"><div><input type="hidden" name="chkIE" value="2"/><button class="hide" id="f" type="submit"></button></div></form>
</body></html>
1

Другие решения

$ _SERVER [ ‘HTTP_USER_AGENT’]

Содержимое User-Agent: заголовок текущего запроса, если есть
это один. Это строка, обозначающая пользовательский агент, который является
доступ к странице. Типичный пример: Mozilla / 4,5 [en] (X11; U;
Linux 2.2.9 i586). Среди прочего, вы можете использовать это значение с
get_browser (), чтобы адаптировать вывод вашей страницы к возможностям
пользовательский агент.

0

Вы не можете передавать информацию из Javascript в PHP без какого-либо взаимодействия с сервером, например. обновить страницу или ajax. Это потому, что JavaScript работает с контентом, созданным на PHP-сервере и отправленным в ответ браузеру. Если браузер получает ответ (контент), попробуйте его отредактировать, и тогда вы можете справиться с тем, что браузер делает через javascript. В настоящее время сервер PHP не знает, кто вы или что вы хотите делать дальше без какого-либо запроса.

Так что если вы хотите сделать с обновлением страницы, вы можете обрабатывать версию с помощью JavaScript и обновить страницу с обновленным URL.

Совет по использованию:

  • запрос клиента к -> серверу = я хочу нормальную страницу
  • ответ сервера на -> клиент = вот оно
  • разбор клиентского браузера = ha js подскажите какая версия браузера
  • JavaScript -> IE9, хорошо, так что обновите мой собственный параметр, добавьте в качестве параметра GET в URL
  • запрос клиента к -> server = ha дал мне страницу с param = IE9, генерирующую ..
  • ответ сервера на -> клиент = вот оно !!!
0
По вопросам рекламы [email protected]