Задать вопрос
Ответы пользователя по тегу PHP
  • Как ОТВЕТИТЬ на письмо через PHPMailer?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Для этого в письмо-ответ надо добавить заголовок In-Reply-To с указанием значения заголовка Message-Id оригинального письма. В заголовок References ответа надо скопировать все ID из заголовка References оригинала и дописать после пробела значение заголовка Message-Id оригинального письма.

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Но при попытке запустить этот же скрипт из командной строки я получаю ошибку о том, что расширение pdo_mysql.so не может быть загружено.
    Для cli и для "веба" разные php.ini, в которых естественно включены разные расширения.

    php --ini для cli
    phpinfo() для веба
    Ответ написан
    5 комментариев
  • В чем ошибка SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) $params собственно нужен для биндинга, чтобы не вставлять данные прямо в запрос, так как это чревато инъекциями. По этому дебильный совет "просто поменяй на $stmt->execute();" желательно проигнорировать.

    2) Вместо переменных нужно вставить плейсхолдеры, именованные или безымянные не особо важно. Естественно количество плейсхолдеров должно совпадать с количеством элементов в массиве.

    3) Даже в таком виде как у вас запрос работать не будет, так как строковые переменные в рамках запроса должны быть в кавычках.

    4) WHERE $email что? Вы вообще понимаете что и для чего пишете? Просто переведя на русский "где емэйл" не кажется вам слегка странной конструкцией? Просто загляните в документацию SQL где описывается WHERE.
    Ответ написан
    Комментировать
  • Ошибка при вызове окна сохранения, как решить?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Судя по скрину, у вас сначала выводится дофига контента, а затем вы пытаетесь отправить файл. Так как все заголовки уже отправлены, естественно никакие данные в заголовок посреди вывода контента уже не добавятся (о чем собственно и написано в варнинге).
    Ответ написан
    Комментировать
  • Как сделать возможность добавления картинки товара, загружая её перед этим в БД?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Есть ли какие-нибудь хорошие файловые хранилище с которыми удобно и практично работать?
    Файловая система. Это самый удобный и практичный метод хранения мультимедийных файлов. В зависимости от ваших возможностей, компетенций и используемых технологий, вы можете использовать как локальную ФС, так и любое облачное хранилище через соответствующее АПИ, используя драйверы доступа к файлам, например как это реализовано в Ларавел.
    Ответ написан
    Комментировать
  • Почему при попытке получить xml данные через file_get_contents() получаю timeout?

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

    2) Проверить не слетели ли пермишны с файлов/папок (такое иногда бывает на хостинге) и условный пых теперь не имеет доступа к этому файлу. Тут может быть нюанс с настройкой сервера, когда локальный домен запрашивается по серому внутреннему айпи, опять же - надо смотреть настройки, например проверить лукап с сервера на домен, не выдает ли он что-то типа 192.168.10.55 .

    3) Проверить сам код, возможно он тупо зависает с каким-то бесконечным циклом и падает по таймауту... Можно вместо вывода в нем прям писать в файл и проверить все ли ок.
    Ответ написан
    Комментировать
  • Ошибки на странице после деплоя проекта на Laravel?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    {{isset($item->quantity) ? $item->quantity : '0'}}

    Единственное что могу предполагать это не совместимость версии и правил валидации кода PHP.

    APP_ENV=production 
    APP_DEBUG=false

    Плюс на локальной машине скорее всего отключен вывод варнингов.
    Ответ написан
    5 комментариев
  • Клики по динамически созданным кнопкам в форме ajax?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    делегирование.
    +$(".form-submit").on("click", ".product__add", function () {
    -$(".product__add").on("click", function () {
    Ответ написан
    Комментировать
  • Почему Laravel 8 перестал выводить ошибки?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Перестали выводится ошибки , только 500-я , в логах такие записи
    Скорее всего в .енв вы поменяли окружение с дев на прод. Соответственно ошибки только логируются.

    PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 266240 bytes) in /var/www/lobochkin28/data/www/lobochkin.ru/laravel-blog/vendor/laravel/framework... on line 215, referer: laravel-blog.lobochkin.ru/admin/category
    Скорее всего где-то у вас бесконечный цикл, или бооольшой массив. Смотрите что у вас там происходит.
    Ответ написан
  • Есть ли способ размещать публикации по APİ facebook без создания приложения?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) Руками, через форму на фейсбуке.
    2) Через сервисы у которых есть приложение, обычно стоит чуть денюжек.
    Ответ написан
    Комментировать
  • У меня php скрипт не обрабатывает до конца данные когда его веб-хук со стороннего ресурса повторно запускает, что сделать чтобы обрабатывал?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    В какую сторону копать?
    Очереди. Если хуки последовательные, а не дубли - заносите в очередь и на этом задача хука должна быть завершена, дальше должен работать механизм очереди, что там будет - раббитмкю или кафка или ларавель уже не суть важно.
    Ответ написан
    Комментировать
  • Как принять данные от JQuery.ajax на сервере php?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    На сервере пытаюсь принять так:
    Нет, ищите в $_POST

    header: 'Content-Type: application/json', а это лишнее.

    А вообще нужно уметь открыть инструменты хорма и посмотреть в нетворке что и как отправляется.

    Ну или если хочется отправить в боди, то сделать
    $.ajax({
        contentType: 'application/json',
        dataType: 'json',
        data: JSON.stringify({ some valid JSON})
    ...
    Ответ написан
  • Почему запрос возвращает пустоту?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    выводите свой запрос в строчку:
    $sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
    var_dump($sql); exit;
    $query = $this->db->query($sql);
    Идете в пхпмайадмин или консоль мускуля, вставляете и выполняете. Хотя для начала убедитесь что все вставленные значения хоть как-то похожи на правду.
    Смотрите что наотвечал вам сервер, если ответ вернул нифига - смотрите глазками что может быть не так с условиями в запросе, например какие из предоставленных данных точно отсутствуют в бд, или какие условия в энд противоречат друг другу... В конце концов начинайте удалять условия по одному, чтобы определить какое условие портит всю малину, затем думайте почему, есть ли данные удовлетворяющие этому условию в полученных результатах...
    Ответ написан
    Комментировать
  • Как внутри массива найти значения с разделителем и разбить эти строки?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    В цикле делать explode по разделителю, если полученный массив имеет длину более 1 - вложенный цикл, перебираете полученный массив, если длина = 1 то просто берете само значение.
    Ответ написан
  • Как на php окрашивать прямоугольник при наведении на него курсора?

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Для неоднородных сущностей с произвольными наборами свойств обычно используют EAV таблицы, что позволяет создать любой набор свойств для любого экземпляра сущности (например уникальные свойства для каждого товара).

    Минус - для поиска нужно строить достаточно объемные запросы, не помещающиеся в обычную логику по типу "селект вэа..." и требующие некоторого конструктора запросов. Так же, в большинстве случаев скорость запросов будет падать с ростом используемых атрибутов, но тут как раз нужно будет использовать фасетный поиск, то есть для группы товаров можно резко ограничить выборку через признак группы атрибутов, свойственные только этой группе, что сужает выборку и ускоряет поиск по тарибутам.
    Ответ написан
    2 комментария
  • Что не так в моем методе утаения товаров из корзины?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Начнем с того что роуты так не пишутся. А хелпер роута работает не так как у вас предполагается.
    //router 
    ...
    Route::post('/add/{productId}', [CartController::class, 'addToCart'])->name('add.product.toCart');
    Route::delete('/remove/{productId}', [CartController::class, 'remove'])->name('product.remove');
    ...
    
    //Controller
    public function remove($productId)
    {
    /* это вообще в мидлваре должно происходить, тут ему делать нечего, впишите роут в ауч группу...
        if (!Auth::check()) {
            return redirect()->route('login');
        }
    */
        $cart = Session::get('cart');
        if (array_key_exists($productId, $cart)) {
            unset($cart[$productId]);
            Session::put('cart', $cart);
        }
        return redirect()->route('cart.index');
    }
    ...
    //HTML
    <form action="{{ route('product.remove', ['productId'=>$productId]) }}" method="post">
    // читать как работает хелпер route, посмотреть какой урл он выдает у вас сейчас, плакать, править...


    на первом просто редиректит,
    Во первых - редирект куда? Во вторых, стоит заглянуть в сгенерированный хтмл и посмотреть какой там реальный урл формы. Так же при отправке посмотреть нетворк и посмотреть что и куда реально отправляется и с какими данными.
    Ответ написан
  • Как подсчитать и вывести количество совпадений значения в строке при запросе в MySQL?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    group by + count()
    или
    count(distinct())
    Ответ написан
  • Почему постраничный вывод данных из бд не работает?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    $count_m = "82;Тут очевидно синтаксическая ошибка сразу. Молчу про то, что числа намеренно передаются строками...

    if($this->page==1) {
    	$page = 1;
    }
    else {
    	$page = (int) $this->page;
    }
    Это что за магия? Что оно вообще делает? Что будет если единица ВНЕЗАПНО попадет в блок else??

    $start = ceil($count_m/$m_per_page);А теперь подумайте, как должна называться переменная, считающая общее количество страниц.

    суть в том, что когда формируется limit 72, 24, т.е 3 страница,
    Стоит пройти курс арифметики за 2 класс, и посчитать что 3 страница будет limit 48, 24.
    limit 24, 24 - вторая и limit 0, 24 - первая.
    Ответ написан
    1 комментарий
  • Проблемы с mail в php. Что я делаю не так?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    var_dump($_POST);

    PS: Ладно, ждать подробностей долго, по этому кратко по основам.
    mail() будет работать в случае если у вас, помимо прочего, настроена отправка почты через smtp сервер, который либо у вас установлен локально (в чем есть сомнения), либо вы запускаете скрипт в среде уже настроенной (например у хостера с поддержкой отправки почты). В противном случае эта функция просто бесполезна. Так же, mail() возвращает true не в случае отправки почты, а в случае успешной постановки в очередь отправки, что саму отправку совершенно не гарантирует.
    Ответ написан