• Как сделать ссылку на 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; ?>

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

    Athanor
    @Athanor
    Лайк + Решение: не жмись, нажми
    Добрый час, M4xwell.

    Ваш $phone всегда нормирован?
    Телефон может записываться совершенно различными способами (+7926..., +7(926)..., 8926, 8(926), 8 926)

    Предположим, что да. В таком случае, $phone содержит 11 символов, начинающихся на "89".
    План прост:
    1. Формируем массив искомых значений (предполагаю, что все они по 4 символа).
    2. Выделяем из $phone первые четыре символа с помощью метода substr и записываем в $phoneCode
    3. Ищем совпадение $phoneCode в массиве искомых значений с помощью метода in_array.

    <?php
    $successCodes = ["8909", "8961", "8900"]; //Наполнить на свое усмотрение
    $phone = "89091234567" // Заполняется динамически, в соответствии с вашей логикой приемки параметров
    $phoneCode = substr($phone, 0, 4);
    if (in_array($phoneCode, $successCodes)) {
      echo "Успех";
    } else {
      echo "Неудача";
    }

    Вполне допускаю, что вам потребуется модифицировать перечень допустимых кодов.
    В этом случае, я рекомендовал бы вам положить значения в отдельную таблицу БД и искать уже в таблице БД совпадения с кодом.

    Если параметр $phone приходит от пользователя в произвольном виде, вам необходимо будет его нормализовать или валидировать.

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

    С уважением,
    Олег Раев
    CIO of Athanor
    Ответ написан
    5 комментариев
  • JS/JQUERY Калькулятор - как правильно работать с массивом?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Вместо переменных khabarovsk_moscow, spb_moscow и т.д. заведите один объект и просто выбирайте нужную цену из него
    prices = {
      khabarovsk: {
        moscow: 1000,
        spb: 1000
      },
      moscow: {
        khabarovsk: 1000,
        spb: 500
      },
      spb: {
        khabarowsk: 1000,
        moscow: 500
      }
    };
    $('.final_price').html(prices[$('#select1').val()][$('#select2').val()]);
    Ответ написан
    4 комментария