Ответы пользователя по тегу PHP
  • Как брать только первую цифру ID категории?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Насколько я понял, вы храните список категорий в одном поле через запятую. Это изначально неверный подход, противоречащий 3 нормальной форме, кроме того больше приносящий вреда и гемора чем профита. Кажущаяся "простота" такого подхода (как видно из вашего примера) оборачивается проблемами как только нужно применить логику чуть сложнее "выбрал-показал". Скорее всего при такой структуре самым "хорошим" решением будут циклы с запросами, что само по себе уже кошмарный говнокод.

    Как вариант решения конкретно этой задачи - можно так:

    foreach ($posts as $post) {
        $postsCat[trim(explode(',', $post['category'])[0])][] = $post['alt_name'];
    }
    unset($posts);
    Ответ написан
    Комментировать
  • Не отображается изображения сгенерированный DOMPDF?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) Включите вывод ошибок и варнингов, будет хоть понятно что происходит
    2) Выведите var_dump($qr_image);, вполне возможно что там нифига нет.
    3) Вообще достаточно проверить есть ли файл который вы берете - file_exists($path_to_file);
    Ответ написан
  • Как загрузить файл и записать его имя в бд?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) $id видимо определен выше вызова функции, но как уже вам указали - область видимости внутри функции - локальная, все что не определено внутри тела функции для нее не существует, исключение - глобальные переменные.
    2) Научитесь пользоваться дебаггером, например xdebug, или хотя бы используйте var_dump().
    3) sql запросы СНАЧАЛА формируете в виде строки, затем передаете в вызов, тогда можно будет их вывести и посмотреть что с ними не так, подозреваю что в варианте который вы "поправили" проблема в отсутствии поля user_id которое скорее всего обязательное. Можно проверить напрямую введя этот запрос в консоль мускуля или через phpmyadmin.
    4) Код кошмарный, во-первых зачем-то засунут в функцию, хотя этот код вряд ли будет использоваться дважды, во-вторых функция использует внутри себя глобальные переменные, что плохо. Почитайте про чистые функции. Про метод "проверки" переменных вообще нет слов, сплошь междометия...
    Ответ написан
  • Стоит ли хранить зашифрованные данные пользователя в Local/Session Storage на клиенте?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Ахренеть, то есть если я, допустим, пользователя понизил в правах, то по вашей логике я должен лично к нему домой причапать и почистить куки/сторэйдж. Это гениальное решение, решающее несуществующую проблему! Браво!
    Ответ написан
    9 комментариев
  • Как сделать, чтобы число уменьшалось каждый день?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    JS: если не закрывать браузер в течении всего этого времени - достаточно по setInterval() декркментировать значение каждые 24 часа ( 24*60*60 секунд). Если браузер закрывается - соответственно хранить время начала отсчета в куках или локалстораже, и от него уже отнимать количество дней / секунд прошедших от старта.

    PHP: В принципе все то же самое, только хранение стартовой даты будет в базе, или другом серверсайд хранилище.
    Ответ написан
    Комментировать
  • Как скачать картинку, которая хранится в blob?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename=' . $fileData[0]['file_name']); 
    header('Content-Transfer-Encoding: binary');
    Ответ написан
    1 комментарий
  • Как загрузить файл и данные на сервер через AJAX?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) $data = $_POST; - тупая трата памяти.
    2)
    header('Content-Type: application/json; charset=utf-8');
    Вы еще ничего не сделали, и уже выводите заголовки. Зачем?
    3) if ($data) { если дата что? Всегда давайте осмысленные кодовые описания, например !empty()
    4) Проверяете переменные $_POST, но $_FILES не проверяете? Нааайс... Как то уже определитесь...
    5) Вишенка на торте - в инпутах имена nameInput и newsText, однако на сервере мы упорно ищем поля name и email (????).
    Ответ написан
    Комментировать
  • Как отправить файл из формы?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Комментировать
  • Как исправить ошибку: Too many connections в MySQL?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) Нет смысла руками рвать соединение, при завершении скрипта коннект закроется автоматически. В вашем же случае весьма вероятна ситуация что коннект порвали зря и скрипт еще не отработал до конца.
    2) Онлайн порядка 500-1000 чел.Для запаса я бы поднял количество соединений до 1/4 онлайна. Зависит конечно от специфики сайта, но иногда их реально не хватает если сервер с активным взаимодействием с бэкендом.
    3) Для драйвера бд пишется враппер, не по тому что это модно или прям необходимо для работы, а как раз на такие случаи, в логику врапера пишется опциональное логирование запросов и сразу видно "кто где срал", сколько реально запросов бегает и что вообще происходит. Тогда можно что-то решать на уровне много/мало и куда что крутить. В частности, может оказаться что коннект происходит чаще чем вы думаете и вовсе не там где задумывалось...
    Ответ написан
  • Библиотека для генерации PDF на PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    headless chrome, правда требует установки на хостинг собственно хрома, зато пдф генерирует - просто супер.
    Ответ написан
    3 комментария
  • Как получить значение input, если value пустой?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Скорее всего цифры туда попадают через яваскрипт, а не выводятся в валуе, естественно simple_html_dom получить их не может, так как не умеет воспроизводить яваскрипт. Ищите собственно сам скрипт который управляет содержимым данного инпута. Подозреваю что значение берется из скрытого span рядом.
    Ответ написан
  • Почему на одном сайте виден один и тот-же PHP-код, а на другом работает нормально?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Варианты:
    1) Короткие теги
    2) Файл имеет расширение не php
    Ответ написан
  • Как можно форму обратной связи отправить в html документе?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Во первых - отсутствует открывающий тег формы, в котором должно быть прописано куда отправляются данные, то есть какой файл будет их принимать, ну и метод отправки.
    Во вторых - если это html файл - весьма вероятно что в нем php код работать не будет, по умолчанию файлы html не обрабатываются интерпретатором, а выводятся "как есть", то есть все увидят ваш кусок кода как текст.

    Ну и так, по мелочам:
    - mail() не гарантирует отправку емэйла, только передает сообщение локальному smtp серверу, что будет дальше с сообщением абсолютно неизвестно. Для отправки почты есть более надежные скрипты, например phpMailer, нормально обрабатывающие все ошибки и способные работать с внешними smtp.
    - зачем админскую почту получать из формы - загадка, просто пропишите ее в скрипте как переменную или константу, светить ее всем подряд совершенно не обязательно
    -
    $method = $_SERVER['REQUEST_METHOD']; ... if ( $method === 'POST' ) {...
    зачем это переопределение из пустого в порожнее? Просто трата памяти.
    - else if ( $method === 'GET' ) {... тоже не сильно понятно зачем. Если не пост, то мало вероятно что метод будет delete или update, совершенно ненужная проверка, тем более что отправлять крупный массив данных методом гет (например из поля комментария) - плохая идея. Кроме того, если я просто открыл страничку - это тоже метод гет, но ваших переменных там не будет, просто в лог посыпятся варнинги об отсутствии переменных.
    - Код проверки переменных - отдельная грустная песня. Кроме того что есть filter_input, сама идея проверять переменные в цикле хреновая. Их у вас 4 штуки, все с разными требованиями, как по типам, так и по свойствам. Каждую надо проверить. Код станет длиннее, но гораздо более безопасным и читабельным.
    - <img src="img/aaa.png"... пути к ресурсам обычно пишутся от корня сайта, для того чтобы ресурсы не зависели от пути где лежит сам скрипт (<img src="/img/aaa.png"...).

    Самое главное вы так и не написали - что не работает то?
    Ответ написан
    Комментировать
  • В чем ошибка авторизации?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) Хранить пароли в открытом виде - полный ахтунг.
    2) Как уже указали - скобки в селекте не нужны
    3)
    выпадает ошибка ERROR 1 т.е. ошибка существования логина, хотя он есть
    "а вот тут ты не прав малой"(с), не ошибка существования логина, а пустой результат исполнения запроса. Что вызвано именно кривым запросом.
    Ответ написан
    1 комментарий
  • В каких случаях при разработке сайта на PHP лучше использовать не MVC (и его подобия), а какой-нибудь другой подход?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    сайт с одной формой и 3 статичными страничками вполне может обойтись без какой-либо архитектуры вообще. А так - любой подход оправдан только если удовлетворяет требованиям проекта, например практичнее разбить его на микросервисы, что впрочем не исключает MVC.
    Ответ написан
    Комментировать
  • Почему когда выполняю php код через консоль он выводит весь файл, а на код ему плевать?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    хм, короткие теги и незнание того что консольный конфиг - отдельный файл?
    Ответ написан
    1 комментарий
  • Php как лучше написать роуты в mvc?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    если уж совсем по уму -
    '/clients/message/send' => 'message/sendMessageToClients'
    или
    '/message/send/clients' => 'message/sendMessageToClients'
    , в зависимости от того что у вас первично - мессажи или клиенты / менеджеры
    Ответ написан
    2 комментария
  • Где найти простой скрипт авторизации PHP7+MySQL+SESSION+COOKIES?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Весь интернет перерыл в поисках простейшей авторизации на PHP7 и MySQL с сессиями и куками
    Ну, для начала, писать "скрипт" на 7 пыхе - явно изврат, ибо как то уже совсем уныло писать на лапшекоде и без архитектуры, ибо нормально это должно быть что-то типа:
    class UserController extend BaseController 
    {
    ....
    public function loginAction(){
        $user = $this->currentUser();
        $user->login($this->params->post('login'),$this->params->post('pass'));
        if($user->isLoggedIn()){
            redirect($someURL);
        }
        else{
             doErrorStuff();
        }
    }
    }
    Ответ написан
    Комментировать
  • Не получается реализовать форму обратной связи через php. В чем может быть ошибка?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) Оформите код нормально
    2)
    Письмо на почту не отправляется, форма не работает
    Так вы определитесь, форма не работает или письмо не отправляется?
    3) Форма волшебная ваша где? Код приводите полностью, иначе загадка что вы там наворотили.
    Ответ написан
    2 комментария
  • Как отправить данные в формате json,если приходит html?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Инструменты разработчика-> network->смотрите свой запрос, что там навозвращалось->думаете
    Ответ написан