Определение девайса

997
.
Virtuozzo
Добавлено: 30.09.2017 / 10:03
Потому что переменная смотрит на твой девайс, а не на девайс юзера.

Добавлено: 30.09.2017 / 10:06
Ей надо работать с юзер_агент пользователя, а не смотреть на твой девайс.
.

Дело в том что я сижу через телефон

.

Iron_Man, В любом случаи она должна работать с юзер_агентом пользователя.

.
__________________________________________________

В Гугле все есть.
---------
http://mobiledetect.net

.

Iron_Man, набросал такой вариант: скрипт парсит сайт с названиями мобильных браузеров, и в зависимости от браузера зашедшего на страницу пользователя, отображает соответствующую картинку(mobile-phone.jpg -- это для мобильных устройств, а computer-icon.jpg -- для десктопных). Вместо mobile-phone.jpg и computer-icon.jpg тебе надо прописать адреса твоих соответствующих картинок.

* (+/-)
<?php

echo identify_device($_SERVER['HTTP_USER_AGENT']);


function identify_device($device) {
    $url = 'http://www.useragentstring.com/pages/'.
        'useragentstring.php?typ=Mobile%20Browser';
    $page = file_get_contents($url);
    preg_match_all('~<li><a[^>]*>([^<]+)</a></li>~', $page, $devices);
    $img = in_array($device, $devices[1]) ? 'mobile-phone.jpg' : 'computer-icon.jpg';
    
    return '<img src="'. $img .'" width="25" height="25" alt="" />';
}
.

Не выводит картинку, прописал свой путь

.
ДоХтор
Добавлено: 30.09.2017 / 20:42
# Iron_Man (30.09.2017 / 20:17)
Не выводит картинку, прописал свой путь
Криво прописал.

Добавлено: 30.09.2017 / 22:47
Я решил немного изменить логику скрипта, чтобы он парсил сайт-донор только один раз, при первом его запуске. По сути, набор браузеров мобильных устройств не так уж часто там обновляется, и поэтому нет необходимости в регулярном скачивании массива с удалённого сервера.

Теперь при первом старте скрипт скачает набор юзер-агентов, и запишет их в текстовый файл. А при всех последующих запусках скрипт будет работать уже с текст. файлом. Выгода очевидна - прирост производительности =)
* (+/-)
<?php

// Иконка телефона
$phone = 'https://icon-icons.com/icons2/984/PNG/512/Untitled-1-06_icon-icons.com_75119.png';
// Иконка ПК
$pc = 'http://s1.iconbird.com/ico/2014/1/620/w512h5121390853998notebook512.png';

// Отображение иконки (телефон или пк)
echo show_device($phone, $pc);


function logging_device($base, &$devices) {
    $url = 'http://www.useragentstring.com/pages/'.
        'useragentstring.php?typ=Mobile%20Browser';
    $page = file_get_contents($url);
    preg_match_all('~<li><a[^>]*>([^<]+)</a></li>~', $page, $devices);
    $devices = $devices[1];
    file_put_contents($base, join(PHP_EOL, array_map('md5', $devices)), LOCK_EX);
}

function show_device($phone, $pc) {
    $base = 'devices.txt';
    $devices = file_exists($base) ? file($base, FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES) : [];
    // Если файл пуст, запишем в него массив агентов
    !empty($devices) ?: logging_device($base, $devices);
    $img = in_array(md5($_SERVER['HTTP_USER_AGENT']), $devices) ? $phone : $pc;
    
    return '<img src="'. $img .'" width="35" height="35" alt="" />';
}
Для наглядности добавил пару переменных, в которых прописал по умолчанию адреса иконок.

UPD: Добавил шифрование элементов массива, чтобы текст файл не сильно увеличивался в объёме.
.
# ДоХтор (30.09.2017 / 22:47)
Криво прописал.


Я решил немного изменить логику скрипта, чтобы он парсил сайт-донор только один раз, при первом его запуске. По сути, набор браузеров мобильных устройств не так уж часто там обнов
Картинку показывает только одну, я сейчас через телефон, а показывает ноут
.
# Iron_Man (01.10.2017 / 00:17)
Картинку показывает только одну, я сейчас через телефон, а показывает ноут
Сохрани и запусти этот код:
echo md5($_SERVER['HTTP_USER_AGENT']);
а его результат в точности скопируй сюда.
.
# ДоХтор (01.10.2017 / 00:19)
Сохрани и запусти этот код:echo md5($_SERVER['HTTP_USER_AGENT']); а его результат в точности скопируй сюда.
Вот сохранил код в отдельном файле и перешёл по ссылке
9dd7bc67866ae56575e3ebde5cfd5c52
Всего: 37