Контакты

Достижения

Все достижения (5)

Наибольший вклад в теги

Все теги (47)

Лучшие ответы пользователя

Все ответы (62)
  • Как идентифицировать устройство?

    ivan_zhuck
    @ivan_zhuck
    1. Если стоит задача получать уникальный идентификатор для каждого браузера/устройства, который обращается к сайту, то для этого хорошо подходит технология Web Fingerprint.

    Почитать о ней можно на вики.
    Готовая релизация на JS: https://github.com/Valve/fingerprintjs2

    2. Если нужно определять вид устройства с которого зашел пользователь (ПК, iPhone, смартфон на андроиде), то можно смотреть в user agent, как правило там есть информация о браузере пользователя и платформе, пример использования на JS.

    3. Если же речь в вопросе идет о хранении идентификатора сессии пользователя, то cookies или localStorage.
    Ответ написан
  • В чем отличие между двумя созданиями объекта?

    ivan_zhuck
    @ivan_zhuck
    В далеком 2010 году перед разработчиками PHP встала задача предоставить поддержку вызова методов и доступа к свойствам созданного объекта одной строкой, поскольку ранее этого делать было нельзя. Также было предложено два варианта синтаксиса new foo->bar() и (new foo())->bar(), из которых был был выбран второй и реализован в 2011 году в PHP 5.4.0. Так что это просто часть синтаксиса языка.

    Подробности: https://wiki.php.net/rfc/instance-method-call
    Ответ написан
  • Почему приходят порой пустые заявки?

    ivan_zhuck
    @ivan_zhuck
    Валидация должна быть не только на фронте, но и на беке. Поскольку POST запрос можно отправить не только через форму, но и напрямую, обратившить по адресу обработчика формы. Отправлять такой запрос могут спам-роботы, ушлые пользователи, которые ищут уязвимости и т.д. В самом примитивном случае можно сделать так:

    $name = !empty($_POST['name'])?$_POST['name']:false;
    $phone = !empty($_POST['phone'])?$_POST['phone']:false;
    
    if($name and $phone){
          //тут отправляем форму
    }else{
         //тут сообщаем об ошибке
    }


    В не примитивном случае, должна быть более строгая валидация и в клиентской части приложения и в серверной. Например: в имени могу быть только буквы,пробелы и дефисы, а строка номера телефона после очистки от прочих символов должна содержать 10 числел. Сама форма должна быть защищена от CSRF, XSS и прочих типовых уязвимостей. Если форма публичная (например форма контактов, как в вашем случае) должен присутствовать механизм от защиты отправки формы ботами, например reCAPTCHA.
    Ответ написан
  • Как убрать уведомление в PHP 7.1?

    ivan_zhuck
    @ivan_zhuck
    Правильно проверять переменные/ключи массивов/свойства объектов на существование с помощью isset() или empty() (если нужно еще и на пустое значение проверить):

    <?= (isset($_POST['user_name'])) ? $_POST['user_name'] : ""; ?>
    Ответ написан
  • Как лучше сохранять в базу данных номера телефонов?

    ivan_zhuck
    @ivan_zhuck
    В базе лучше всего хранить номера в международном формате, в виде 7XXXXXXXXXX (только цифры) в типе Decimal (если используется mysql). При таком подходе вы сможете сделать вывод номеров в любом месте вашего приложения в едином формате, а так же обеспечить корректный поиск и фильтрацию по номерам.
    Ответ написан

Лучшие вопросы пользователя

Все вопросы (2)