• Почему у меня неправильно определяется IP пользователя?

    @rPman
    $_SERVER['REMOTE_ADDR'] устанавливает твой веб сервер, ему вы доверяете.
    Но, если пользователь заходит через прокси сервер - то тут будет выходной ip адрес этого прокси.

    Если прокси сервер не скрывает информацию о своих клиентах то
    $_SERVER['HTTP_X_FORWARDED_FOR'] и $_SERVER['HTTP_CLIENT_IP'] должны содержать ожидаемое, но это значит нужно доверять этому прокси серверу.

    Хочешь узнать реальный ip адрес, используй javascript в браузере пользователя (т.е. придется доверять уже пользователю в плане, а отреверсит ли он твой код и не подсунет что угодно).

    Cамый известный и достаточно надежный способ (его сразу отключают любые адекватные анонимизеры) - это WebRTC. Технология позволяет двум браузерам открывать прямое соединение (да еще и udp) друг с другом, а веб сервер только организует процесс. Т.е. подняв соответствующего клиента WebRTC (погугли, правда я для php с ходу готовой библиотеки не нашел) и организовав подключение клиента с этим твоим сервером, который представляется обычным веб клиентом), ты сможешь по тому, с какого ip адреса пришло соответствующее соединение, определить настоящий, даже если пользователь использует прокси.

    Это не защитит от vpn, тут никакими способами определить ip адрес пользователя не получится, потому что с точки зрения сетевых технологий, vpn - это как бы проводок пользовательского компьютера подключили к vpn-серверу, и никакие коммуникации не пойдут иначе, если пользователь не укажет иного (можно настроить маршрутизацию на выход через разные шлюзы в зависимости от геолокации, кстати этим можно воспользоваться, разместив кучу своих серверов в разных локациях и, обращаясь к ним из браузера клиента, сравнивать ip адреса)
    Ответ написан
    2 комментария
  • Почему не включается JIT?

    @DarkKefir Автор вопроса
    Проблема решилась тем, что в /etc/php/8.3/mods-available/opcache.iniнужно изменить opcache.jit=offна opcache.jit=tracing

    Ну и перезапустить PHP.

    Всем спасибо
    Ответ написан
    Комментировать
  • Проверка строки на присутствие кириллицы?

    @GreatRash
    $str = 'test string for cyrillic зюя';
    $contains_cyrillic = (bool) preg_match('/[\p{Cyrillic}]/u', $str);
    Ответ написан
    1 комментарий
  • Как убрать Яндекс с пустой страницы Google Chrome?

    @kr_ilya
    Потому что в браузере установлен поиск яндекса
    tsiik3q_wrsyyk7acxecj88spwk.png

    Если поставить гугл, будет главная гугловская
    Ответ написан
    3 комментария
  • Как сделать ссылку на Viber?

    Middle_Pudge
    @Middle_Pudge
    Дело в том что десктопное и мобильное приложение Viber открывается по разным ссылкам, что создает определенные сложности при добавлении такой ссылки на сайт. Поэтому потратьте 2 минуты чтобы прочитать и понять текст ниже) Для мобильных устройств используется такой подход формирования ссылки:
    <a href="viber://add?number=380950000000">Написать в Viber</a>

    Для ПК – такой:
    <a title="Должен быть установлен Viber для ПК" href="viber://chat?number=+380950000000">Написать в Viber</a>


    Для того, чтобы определить устройство при помощи PHP, в самом простейшем случае можно воспользоваться простейшей функцией, которая определяет USER_AGENT устройства, а затем, в зависимости от того, опередила ли функция устройство как мобильное или нет, показывать ту или иную ссылку.
    <?php function check_mobile_device() { 
        $mobile_agent_array = array('ipad', 'iphone', 'android', 'pocket', 'palm', 'windows ce', 'windowsce', 'cellphone', 'opera mobi', 'ipod', 'small', 'sharp', 'sonyericsson', 'symbian', 'opera mini', 'nokia', 'htc_', 'samsung', 'motorola', 'smartphone', 'blackberry', 'playstation portable', 'tablet browser');
        $agent = strtolower($_SERVER['HTTP_USER_AGENT']);    
        foreach ($mobile_agent_array as $value) {    
            if (strpos($agent, $value) !== false) return true;   
        };     
        return false; 
    };?>

    Расположить функцию, можно, например в самом начале страницы, перед 'doctype' или вынести в отдельный файл и там же подключить его.

    После этого, в месте где будет выводиться ссылка на Viber используйте такую проверку:
    <? if(check_mobile_device()) :?>
    	<a title="Viber" href="viber://add?number=79851198793"></a>              
    <? else : ?>
    	<a title="Viber" href="viber://chat?number=+79851198793"></a>
    <? endif; ?>

    Теперь, если человек зашел с ПК, то ему покажется ссылка для десктопного приложения, а если с мобильного устройства, то ссылка для смартфона или планшета.
    Ответ написан
    Комментировать
  • В чем разница = и == в php?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    = - присваивание
    == - сравнение с авто-приведением типов (таблицы)
    === - эквивалентное сравнение (типы переменных и их значения должны строго совпадать)
    Ответ написан
    Комментировать
  • Какое недорогое оборудование использовать "удлинения" городского телефона далеко, по IP?

    Bessome
    @Bessome
    Администратор Linux, Windows. 1С программист
    Ищите на яндекс.маркет шлюз сип fxo, шлюз sip fxs. Дома должен быть белый ip или все таки надо заводить через прокси sip. Возможно у оператора городского номера есть услуга по предоставлению этого же номера по sip.
    При установке любого сип клиента на смартфон будьте готовы к тому, что при звонке на мобильный номер разговор будет тут же прерываться (доже если трубку брать не планируете)
    Ответ написан
    5 комментариев
  • Какое недорогое оборудование использовать "удлинения" городского телефона далеко, по IP?

    gbg
    @gbg
    Любые ответы на любые вопросы
    1) Да, может. Два sip-устройства без проблем могут общаться между собой, без промежуточных посредников.
    2) Да, можно. Но клиенты не встроенные, а бесплатные, доступные в Маркете. Это CSipSimple и VoIP by AntiSIP. Есть всякие другие (Linphone), но приведенные два - самые стабильные.
    3) Подсказать SOHO-железо не могу, работал только с крупноофисным.
    Ответ написан
    Комментировать
  • Push-уведомления для Android с помощью Google Cloud Messaging?

    @samarjan
    www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-messaging-gcm-php-and-mysql/
    Ответ написан
    Комментировать