Одесса: 7°С (вода 9°С)
Киев: 4°С
Львов: 9°С

Тема: Правка скрипта...

Ответить в теме
Показано с 1 по 15 из 15
  1. Вверх #1

    Post Правка скрипта...

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

    PHP код:

    <?php
    if (preg_match("/Opera\W*(\d+(:?\.\d+)?)/",@$_SERVER["HTTP_USER_AGENT"], $aMatch)) {
       
    if (@
    $aMatch[1] < 9) {
       
    $ver0 "opera8";
       
       }
    }
    if (
    $ver0) {
    echo 
    '<link rel="stylesheet" type="opera/css" href="/css/'.$ver0.'.css">';
    }
    else{
    if (@
    $aMatch[1] > 9) {
       
       
    $ver1 "opera";
       
       }
    if (
    $ver1) {
    echo 
    '<link rel="stylesheet" type="opera/css" href="/css/'.$ver1.'.css">';
    }
    }

    //****************************************************

    if (preg_match("/Firefox\W*(\d+(:?\.\d+)?)/",@$_SERVER["HTTP_USER_AGENT"], $aMatch)) {
       
    if (@
    $aMatch[1] == (2).(0)) {
       
    $ver2 "firefox20";
       
       }
    }
    if (
    $ver2) {
    echo 
    '<link rel="stylesheet" type="text/css" href="/css/'.$ver2.'.css">';
    }

    //************************************************************

    if (preg_match("/Konqueror\W*(\d+(:?\.\d+)?)/",@$_SERVER["HTTP_USER_AGENT"], $aMatch)) {
       
    if (@
    $aMatch[1] <= (3).(5)) {
       
    $ver3 "konqueror";
       
       }
    }
    if (
    $ver3) {
    echo 
    '<link rel="stylesheet" type="text/css" href="/css/'.$ver3.'.css">';
    }
    ?>
    www.lixme.ru - мой сайт.


  2. Вверх #2
    Постоялец форума Аватар для Илья Царюк
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    35
    Сообщений
    1,523
    Репутация
    694
    Записей в дневнике
    3
    Неужели все так плохо со стилями что надо делать четыре таблицы для разных браузеров? Какой тогда смысл в стандартах? Поставьте агентов и стили для них в массив. Сделайте одну функцию для определения агента и одну функцию для вывода нужной таблицы. А вообще конечно это глупый способ. Лучше писать стили так чтобы работало везде + хаки для IE.

  3. Вверх #3
    А вообще конечно это глупый способ.
    какие минусы в использовании подобного?

    Лучше писать стили так чтобы работало везде + хаки для IE.
    Я так и делаю, но остаются некоторые нюансы с версиями браузеров в которых то или иное свойство поддерживается немножко не так как в новых , вот и приходится сушить моск.
    www.lixme.ru - мой сайт.

  4. Вверх #4
    Постоялец форума Аватар для Илья Царюк
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    35
    Сообщений
    1,523
    Репутация
    694
    Записей в дневнике
    3
    А надо ли поддерживать все старые браузеры? Как гласит закон: делай под новые и только потом если понадобится - для старых. Необходимо знать аудиторию, с каких браузеров заходят. Может нет смысла делать под конкверор извращения, если заходы всего 1-2%. Лучше и проще найти вариант который будет работать везде. Да, для этого нужно идти на уступки и мириться с некоторыми недочетами в отображении. Зато у вас не будет потом путаницы: "Ой, забыл внести изменения в стили для оперы.". Всегда найдется способ который будет работать более менее нормально везде, а для IE всегда можно хак написать.

    А плох способ тем, что поддержка сайта с 4-5 стилями для разных сайтов усложняется в 2-3 раза.

  5. Вверх #5
    не правка не столь уж критичная и отнюдь не для многих версий, этих пару строчек с поправкой не сложно сделать, и потом приятнее смотреть на сайт когда все задуманные нюансы в дизайне правильно отображаются даже скажем в предыдущей версии браузера, которую еще многие пользуют.

    Спасибо за совет по скрипту, может сегодня возьмусь переделывать...
    www.lixme.ru - мой сайт.

  6. Вверх #6
    Постоялец форума Аватар для Илья Царюк
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    35
    Сообщений
    1,523
    Репутация
    694
    Записей в дневнике
    3
    На самом деле и в вашем варианте нет ничего плохого кроме возможности масштабирования, которой по сути нет вовсе.

  7. Вверх #7
    посмотри вот это:

    Определение типа браузера


    <?
    $agent=getenv("HTTP_USER_AGENT");
    if(strlen($agent)>2&&!strstr($agent,'MSIE'))
    {
    // Код для Netscape
    }
    else
    {
    // Код для IE

    }
    ?>

    Определение версии браузера
    <?
    $agent=getenv("HTTP_USER_AGENT");
    $ver4="4.";
    $ver5="5.";
    if(strstr($agent,$ver4)||strstr($agent,$ver5))
    {
    // Браузер версии 4.х или 5.х
    }
    else
    {
    // Браузер версии 3.х или младше
    }
    ?>


    Проверка ввода емайл
    Пригодится для проверки правильности ввода посетителем емайла в форме.

    <?
    if ($email != '' AND !eregi("^[_\.0-9a-z-][email protected]([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",$email))
    {
    // Код если не указан e-mail или имеет недопустимый формат ";
    } else {
    // Код если ОК
    }
    ?>

  8. Вверх #8
    На самом деле и в вашем варианте нет ничего плохого кроме возможности масштабирования, которой по сути нет вовсе.
    Какого масштабирования?
    www.lixme.ru - мой сайт.

  9. Вверх #9
    Постоялец форума Аватар для Илья Царюк
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    35
    Сообщений
    1,523
    Репутация
    694
    Записей в дневнике
    3
    Цитата Сообщение от Emm Посмотреть сообщение
    Какого масштабирования?
    ну тут я имею в виду легкое добавление новых юзерагентов и файов стилей без затрагивания логики

  10. Вверх #10
    cкажите, как определить точную версию юзерагента, дело в том, что
    исправление требуется исключительно для firefox 2.0 а сейчас 2.0.0.7 и когда задаю 2.0 то новые тоже считаются..
    www.lixme.ru - мой сайт.

  11. Вверх #11
    Постоялец форума Аватар для Илья Царюк
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    35
    Сообщений
    1,523
    Репутация
    694
    Записей в дневнике
    3
    Скачай версию 2.0.0.7 и посмотри какую строку юзер агента она передает. Но я думаю что там нет четкого указания версии, скорее всего именно 2.0 указано и все. Лучше будет написать этот вопрос в поддержку Firefox, может там есть в агенте какие-то идентификаторы. Я агенты лисы никогда не изучал, и уже не помню что там.

  12. Вверх #12
    ff вот такую..

    :::: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7

    соответственно 2.0

    Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1) Gecko/20061010 Firefox/2.0

    как их разделить-то по версии?
    www.lixme.ru - мой сайт.

  13. Вверх #13
    а, понял .. /Firefox\W*(\d+(:?\.\d+)$)/
    www.lixme.ru - мой сайт.

  14. Вверх #14
    Супер модератор
    Борец за справедливость
    Аватар для commando
    Пол
    Мужской
    Адрес
    Odessa, UA
    Сообщений
    3,122
    Репутация
    1538
    вот класс для подробного обнаружения браузера
    http://apptools.com/phptools/browser/source.php

    нашел за 1 минуту, может не самый лучший вариант. А вообще - "php detect browser" in google, смотри всегда как у других сделано если сомневаешься
    /dev/php

  15. Вверх #15
    Цитата Сообщение от Emm Посмотреть сообщение
    а, понял .. /Firefox\W*(\d+(:?\.\d+)$)/
    наф регулярка?


Ответить в теме

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения