#php #javascript #cookies
#php #javascript #файлы cookie
Вопрос:
Кто-нибудь может сказать мне, почему я продолжаю получать else
и alert
вообще не срабатывает? Файл cookie устанавливается только при открытом браузере.
<?php
$setcookie = setcookie('version', 'nova');
$browser = get_browser(null, true);
if(!isset($setcookie)){
if($browser["MSIE"] < 8.0){
// display message or alert!
echo "<script language="JavaScript">n";
echo 'alert("Please upgrade to version 8.0 in order to view this site.");';
echo "</script>";
}
}
else
{
echo "Browser is current:";
}
?>
Комментарии:
1. Это требует базовой отладки. Что
$browser
содержит? Выполнитеprint_r($browser);
и опубликуйте результаты здесь (если они еще не ответили на ваш вопрос)2. попробуйте использовать
< 8
вместо8.0
и выполните var_dump($browser) вместо print_r, чтобы увидеть, какой тип переменной он вернет.3. print_r ничего не возвращает. var_dump возвращает значение bool(false). Спасибо
Ответ №1:
Ваше if
условие неверно. Вы хотите проверить $_COOKIE
массив, а не возвращаемое значение setcookie
.
if(!isset($_COOKIE['version'])) {
...
}
Ответ №2:
Я не думаю, что get_browser()
возвращает то, что, по вашему мнению, возвращает? Смотрите руководство:http://php.net/manual/en/function.get-browser.php
Вы хотите взглянуть на поля [browser]
и [version]
.
Ответ №3:
Метод PHP get_browser() работает очень медленно. Лучше использовать что-то вроде
$useragent = $_SERVER['HTTP_USER_AGENT'];
затем вы можете выполнить некоторое preg_match, как показано ниже
if(preg_match('/MSIE/i',$useragent)){
//echo something here
}
else{
//do something else
}
Комментарии:
1. по-прежнему отображается текущий браузер. насколько сильно это может мигать. очевидно, что моя логика if где-то неверна, но я не могу ее увидеть. Спасибо
2. правильно ли это для версии браузера в вашем коде? if(preg_match(‘/MSIE 7.0/i’,$useragent)) спасибо
3. зависит от того, какой вывод выдает $ useragent. вам нужно будет экранировать пробел как MSIE 7.0
4. это то, что я использую. if(preg_match(‘/MSIE 7.0 /i’,$useragent)) есть ли способ протестировать разные версии. ie6 / 7 / 8 и т.д. спасибо
5. Протестируйте вывод $ useragent в разных браузерах, найдите шаблон ie6 / ie7 / ie8. Я уверен, что немного погуглив, вы получите то, что хотите.