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

    @SvizzZzy
    $_SERVER['REMOTE_ADDR'] может некорректно показать ip из за настроек самого сервера. Если например сервер находится в докер контейнере, то без дополнительных настроек, remote_addr покажет ip контейнера, не пользователя. Тоже самое если ваш сервер сидит за каким то натом, например nuxt фронтом и тд. Это тоже нужно учитывать. В интернете куча советов на тему "remote addr показывает неверный ip".
    Ответ написан
    2 комментария
  • Как создавать, принимать и обрабатывать socket?

    @SvizzZzy
    Я бы посоветовал использовать фреймворк php Laravel. Там из коробки есть возможность использовать сокеты. Почитайте документацию и посмотрите видео на ютубе: laravel pusher, laravel socket.io и тд.
    Ответ написан
  • Как использовать save model и transactions в laravel 5?

    @SvizzZzy Автор вопроса
    Оказалось, что в моем случае нужно было явно указать имя подключения к базе. И всё заработало нормально.
    ps: rollBack(); - не пригодился т.к наверное, если $cn->commit(); не срабатывает, то все запросы отменяются.

    Мой код:

    $cn = DB::connection('ИМЯ_подкл_к_базе'); //DB_CONNECTION из ENV
    $cn->beginTransaction();
      try{
    
      //Мои запросы типа Model::where, save() и тд...
      ...
      
      $cn->commit();
    
    } catch(\Exception $e){
    
      return 'error';
    
    }
    Ответ написан
    Комментировать
  • Почему не приходят в $request остальные значения кроме файлов?

    @SvizzZzy
    Можно так.

    Заменить:
    var data = new FormData();
    
                jQuery.each(jQuery('#uploadimage')[0].files, function(i, file) {
                    data.append('file-'+i, file);
                });


    На:
    var  data = $('#example-form').serializeArray(); 
    
                jQuery.each(jQuery('#uploadimage')[0].files, function(i, file) {
                    data.push('file-'+i, file);
                });
    Ответ написан
    Комментировать
  • Как правильно расставить кавычки?

    @SvizzZzy
    $sql = $db->query("UPDATE vt SET rc =". $js['rc']);

    или так:

    $sql = $db->query("UPDATE vt SET rc ='{$js['rc']}' ");
    Ответ написан
    Комментировать
  • Как сделать чтобы web уведомление после подписки поялялось 1 раз?

    @SvizzZzy
    Вариант с помощью cookies:
    <script>
    	
    var ok=true;	
    var notification_id='123123123123';
    var notification_check=readCookie("notification");
    if (notification_check==notification_id){ok=false;};
    
     function sendNotification(title, options) {
     //create cook
    createCookie("notification",notification_id,"1");
     if (ok){
    // Проверим, поддерживает ли браузер HTML5 Notifications
    if (!("Notification" in window)) {
    alert('Ваш браузер не поддерживает HTML Notifications, его необходимо обновить.');
    }
    
    // Проверим, есть ли права на отправку уведомлений
    else if (Notification.permission === "granted") {
    
    	
    // Если права есть, отправим уведомление
    var notification = new Notification(title, options);
    
    function clickFunc() {window.location.href = 'http://aviaciya.com/specpredlozheniya_aviakompanij/';}
    
    notification.onclick = clickFunc;
    }
    
    // Если прав нет, пытаемся их получить
    else if (Notification.permission !== 'denied') {
    Notification.requestPermission(function (permission) {
    // Если права успешно получены, отправляем уведомление
    if (permission === "granted") {
    var notification = new Notification(title, options);
     
    } else {
    alert('Вы запретили показывать уведомления'); // Юзер отклонил наш запрос на показ уведомлений
    }
    });
    } else {
    // Пользователь ранее отклонил наш запрос на показ уведомлений
    // В этом месте мы можем, но не будем его беспокоить. Уважайте решения своих пользователей.
    }
    
     
    
     }
    
    }
    
    
    //cookie
    function createCookie(name,value,days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime()+(days*24*60*60*1000));
            var expires = "; expires="+date.toGMTString();
        }
        else var expires = "";
        document.cookie = name+"="+value+expires+"; path=/";
    }
    function readCookie(name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for(var i=0;i < ca.length;i++) {
            var c = ca[i];
            while (c.charAt(0)==' ') c = c.substring(1,c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
        }
        return null;
    }
    
     
    
    
    </script>
    <script type="text/javascript" async>
    sendNotification('Зимние скидки на авиабилеты!', {
    body: 'Распродажа, сезонные скидки',
    icon: 'http://avia-avia.ru/image/samolet_p.png',
    dir: 'auto'
    });</script>


    Чтобы показать уведомление если оно изменилось, нужно менять значение notification_id
    Ответ написан
  • Как в robots.txt закрыть от индексации все ?get= запросы?

    @SvizzZzy Автор вопроса
    Так и не нашел инфу об этом...
    Но проверил эту опцию в гугл и яндекс вебмастерах - всё работает как надо.
    Вроде ок.
    Ответ написан
    4 комментария