Задать вопрос
  • Как дописать условие?

    Compolomus
    @Compolomus Куратор тега PHP
    Комполом-быдлокодер
    Это не спасёт вас от того же пользователя который сидит через впн. Как вариант слать на апи whois и смотреть откуда пользователь
    Ну или какой либо
    GeoIp
    Ответ написан
    7 комментариев
  • Как сделать доступ для регистрации пользователей только из определенной страны?

    TTATPuOT
    @TTATPuOT
    https://code.patriotovsky.ru/
    Читаете мою статью про определение геопозиции пользователя. От этого и танцуете.
    Оба способа у вас применимы, что на JS, что на PHP. Но вы должны понимать, что никакой гарантии 100% определения страны пользователя нет.
    Ответ написан
    Комментировать
  • Количество выполненных перевозок на сайте. Как будет логичнее генерировать?

    mahmudchon
    @mahmudchon
    Компания же реальная? Узнать у них средние значения заказов в каких-то временных рамках. Мб временные рамки работы. Чтобы счетчик не крутить в часы за пределами рабочего графика. В формулу можно занести также прогрессивный рост, основываясь на данных динамики роста и развития компании или наоборот. Если ежедневно будет выполняться по 100 заказов - не обязательно распределять их равномерно на 24 часа. Например, в зависимости от времени суток может быть увеличенный спрос и тп. Как то это обыграть. Все еще скучно?
    А обновлять это дело по cron, как уже отметили, с частотой, выбранной вами.
    Ответ написан
    1 комментарий
  • Метод toArray возвращает лишь первый уровень вложенности?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега Laravel
    Потому что сериализуется то, что в $this->attributes и в $this->relations*. Про то, что вы какое-то там свойство добавили классу, Laravel ничего не знает и хотите вы его сериализовывать или нет - тоже. Кроме исходников, полезно ещё читать документацию.

    P.S. children, не childs.

    * на самом деле логика сложнее.
    Ответ написан
    3 комментария
  • Как отключить слежку Google?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    То есть, Вы реально думаете, что Яндекс не собирает о нас никакой информации и не передает ее куда надо?))) Слив подобной инфы - это "бонус" интернетов. Не нравится - не пользуйтесь интернетом, компьютером, смартфоном, телевизором и вообще электронными устройствами. Уезжайте из города в деревню, топите печку дровами, выращивайте картошку и пусть эти всякие Гуглы удавятся - не получат ни байта Вашей личной информации!
    Ответ написан
    21 комментарий
  • Как правильно администрировать VPS?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Ни в коем случае не ставить никаких ISP Manager / Vesta / CPanel, иначе никогда не научитесь тому, чему хотите научиться. Кроме того, они жрут ресурсы. Даже Vesta, которая самая легкая, их жрет прилично, а я сильно сомневаюсь, что у вас VPS c 8+ Gb памяти.

    Изучать надо по урокам и статьям, читая мануалы и best practices по каждому package. Порядок, плюс-минус, таков:

    - развернули ось
    - сделали сразу апдейты
    - создали и настроили swap
    - поменяли пароль рута на что-нибудь супер-мега-сложное (его мы использовать все равно не будем)
    - создали себе обычного юзера с паролем нормальной сложности (он будет использоваться для sudo)
    - дали юзеру права sudo
    - закрутили гайки по SSH - сменили порт, запретили вход руту и вход по паролю (только по ssh-ключам), разрешили вход только одному своему новому логину
    - настроили UFW - простой, но эффективный firewall на основе iptables - default deny, allow http, https, свой кастомный ssh-порт. Если логиниться будете только из нескольких мест (офис, дом) - можно вообще ssh разрешить только на эти IP.
    - sudo dpkg-reconfigure tzdata чтобы установить свою временную зону, так логи потом легче читать и понимать
    - настроили logrotate
    - настроили logwatch
    - настроили Postfix, чтобы сервер вам письма мог слать (мы его настраиваем на внешний мейлер, например Mandrill, чтобы все письма точно в спам не падали)
    - настроили fail2ban (потом, после установки и настройки веб-сервера и сайтов, в fail2ban можно дополнения писать, например мы на WordPress-сайтах мониторим попытки авторизации в админку и блочим тем же fail2ban)
    - дальше ставим все что нужно - Git, Nginx, HHVM, PHP5-FPM, MariaDB, Memcached/Redis и так далее.

    Регулярно заходите на сервер, делайте apt-get update && apt-get dist-upgrade.

    p.s.: это по ubuntu/debian, для других систем все то же самое, но packages и команды могут немного отличаться
    Ответ написан
    26 комментариев
  • Почасовая работа: уволить фрилансера или оставить и провести разъяснительные беседы?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    А с чего вы взяли, что вам лучше знать, как ему продуктивнее работать? У меня есть кодер, который колбасит свою работу и параллельно смотрит сериалы в оригинале на английском - учит язык. У него в углу экрана поверх всего маленькое окошко с видео. На скорость и качество его работы вообще никак не влияет. Ему так комфортно. С чего я должен ему что-то запрещать? Кто-то параллельно с работой будет слушать музыку. Кто-то на планшете какую-то игрулю будет проверять каждые 30 минут - вы этого всего не отследите, да и зачем? Не надо драконить людей, вы что, рабовладелец?

    UPD: По большому счету, вот эти ваши придирки и разборки как раз и снижают продуктивность. Вы сами себе вредите. Как правильно коллеги пишут - гнать в шею такого заказчика :)
    Ответ написан
    5 комментариев
  • Как исправить эту ошибку?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Проблема в области видимости - переменная $mysqli недоступна в функции fakePayout(). Решается одним из способов:

    1. Явной передачей переменной внутрь функции function fakePayout($mysqli, ...) {
    2. Корректным доступом к данной переменной, поместив ее в свойство класса, содержащего функцию fakePayout():
    class SomeClass 
    {
        private $mysqli;
    
        public function __construct(DataBase $mysqli)
        {
            $this->mysqli = $mysqli;
        }
    
        public function fakePayout($user, $amount, $time)
        {
            // Теперь можно использовать
            $this->mysqli->query()
        }
    }

    3. Вариации #2 с dependency injection контейнерами, фасадами и прочее.

    ЗЫ: Можно еще внутри самой функции создавать соединение, или хранить его в глобальной переменной / синглтоне - но это уже совсем дичь.
    Ответ написан
    24 комментария
  • Как исправить эту ошибку?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    1. Выкинуть класс DataBase на помойку, он здесь явно лишний.
    2. создать файл engine/что-нибудь/mysqli.php и записать в него код отсюда
    3. Добавить а параметрам функции $mysqli
    function fakePayout ($mysqli, $user, $amount, $time) {

    4. Переписать код запросов на подготовленные выражения
    function fakePayout ($mysqli, $user, $amount, $time) {
       $referer = 'P'.rand(4, 6).rand(1, 0).rand(000000, 999999);
       $refererIncome = $amount/100*150;
       $stmt = $mysqli->prepare("INSERT INTO `deposits` (`user`, `amount`, `time`, `type`, `fake`) VALUES (?,?,?, '1', '1')");
        $stmt->bind_param("sss", $user, $amount, $time);
        $stmt->execute();
        $stmt = $mysqli->prepare("INSERT INTO `deposits` (`user`, `amount`, `time`, `type`, `fake`) VALUES (?,?,?, '2', '1')");
        $stmt->bind_param("sss", $referer, $refererIncome, $time);
        $stmt->execute();
    }

    5. Вызывать как обычно
    include_once(dirname(__FILE__).'/engine/что-нибудь/mysqli.php');
    fakePayout ($mysqli,$user, $amount, $time);
    Ответ написан
    Комментировать
  • Как обрезать строку php до нужного символа?

    bitniks
    @bitniks
    Go/PHP/Symfony developer
    $str = '1.2019-10-25 10:33:19';
    $result = explode('.', $str);
    echo $result[1];

    sandbox.onlinephpfunctions.com/code/dd05d36013cafe...
    Ответ написан
    Комментировать
  • Что делают на Go Hugo?

    @OlegPyatakov
    pyatakov.com
    Сайты на Hugo и других генераторах делают для того, чтобы на выходе получить технически простой сайт. Такой сайт легче хостить и обслуживать: нет исполняемого бэкенда, нет БД, нет проблем с безопасностью.
    Плата за это - невозможность использовать динамические функции, привязанные к пользователям, например личный кабинет или свои комментарии (приходится использовать стороннюю систему комментариев). Для блогов, а именно это - основной кейс использования генераторов, подобные ограничения не являются критичными. Могу поделиться более подробной заметкой про свой опыт использования Hugo.

    По конкретным вопросам:

    как сделать счетчик просмотров постов и на базе этой информации выводить самые просматриваемые

    Сомневаюсь, что такое можно сделать на генераторе статических сайтов.

    какую прикрутить систему коментариев, так чтобы можно было сделать блок самых обсуждаемых материалов, по аналогии с просмотрами

    В Disqus - есть блок auto-discovery других комментируемых постов на сайте.
    В Cackle - есть дополнительные виджеты, в том числе рейтинг самых обсуждаемых статей. Я сам не пользовался, но видел на сайтах с комментами Cackle такие блоки.
    Ответ написан
    Комментировать
  • Почему не работает форма обратной связи?

    @Snatch87
    Битриксоид по принуждению
    Если Вы работаете на виртуальном хостинге, возможно, что хостер выключил Вам использование функции mail()
    попробуйте вместо нее использовать imap_mail()
    А лучше пользуйтесь библиотекой PHPMailer или им подобными
    Ответ написан
    Комментировать
  • Как разбить текст по BB тегу и переносу строки одновременно?

    Oldshelf
    @Oldshelf
    Неидеально, но кажется работает:

    $text='Какой-то текст [IMG=3902565d3789b88c50b.jpg] Текст после картинки без переноса[IMG=3902565d3789b88c50b.jpg][IMG=3902565d3789b88c50b.jpg]
    
    Текст после изображения с переносом
    
    Обычный абзац
    
    Текст перед картинкой вконце всего текста [IMG=3902565d3789b88c50b.jpg].';
    
    $split="SPLIT";
    
    $text=preg_replace ("#(.*)(\[IMG\=.+\])(.*)#Uisu", $split."$1".$split."$2".$split."$3", $text);
    
    $t_arr=explode ($split, $text);
    foreach ($t_arr as $k=>$v)
     if ($v!="") $arr []=trim ($v);
    
    print_r ($arr);


    Array
    (
        [0] => Какой-то текст
        [1] => [IMG=3902565d3789b88c50b.jpg]
        [2] => Текст после картинки без переноса
        [3] => [IMG=3902565d3789b88c50b.jpg]
        [4] => [IMG=3902565d3789b88c50b.jpg]
        [5] => Текст после изображения с переносом
    
    Обычный абзац
    
    Текст перед картинкой вконце всего текста
        [6] => [IMG=3902565d3789b88c50b.jpg]
        [7] => .
    )
    Ответ написан
    1 комментарий
  • Почему: Cannot modify header information?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Потому что сообщения об ошибках надо читать.
    Читать надо сообщения об ошибках.
    И только потом бежать что-то делать.

    output started at /home/s/sofuwa/beta.sofuwa.ru/public_html/wp-includes/functions.php:4231

    Никаким BOM в таком месте даже и не пахнет.
    Вместо "массовых преобразований" надо открыть конкретный файл, на конкретной строке, и смотреть что там вылезает

    phpfaq.ru/newbie/headers
    Ответ написан
    2 комментария
  • Как максимально обезопасить сайт на html(включая защиту от wget скачивания)?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Не выкладывать его в Интернет.
    Ответ написан
    Комментировать
  • Зачем долбить главную страницу?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Научитесь защищать сайт не плагинами, а правильной настройкой среды окружения (триггеры на сетевую активность).
    (и таких вопросов вообще больше не будет у Вас)
    Ответ написан
    2 комментария
  • Как из callback функции вернуть данные?

    DevMan
    @DevMan
    заведите переменную снаружи и прокиньте ее в колбэк через юз.
    https://ideone.com/5NxwXT
    Ответ написан
    1 комментарий
  • Как отправлять сообщения в вк с помощью php?

    @MrFeaf
    PHP-developer
    В этой статье (и в документации в целом) есть ответ на Ваш вопрос: https://vk.com/dev/messages.send
    Ответ написан
    Комментировать