Ответы пользователя по тегу PHP
  • Ошибка: Uncaught exception 'mysqli_sql_exception' with message 'You have an error in your SQL syntax?

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

    Мелкие косяки и кривые имена переменных я в учет не беру.
    Ответ написан
    2 комментария
  • Почему json_decode не выполняется?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Он отправляется и помещается в $_POST, но при выполнении json_decode зашершается.
    Очевидно, что в $_POST ничего нет. В этом легко убедиться сделав var_dump($_POST) во втором файле.

    Что делать:
    Во первых не понятно зачем паковать в json? Чем не угодила уже имеющаяся строка?
    Во вторых - если пакуете в json, так уже и заголовок нужен соответствующий.
    Ну и в третьих, так как вы не задали передаваемые данные в формате ключ-значение, в $_POST они не попадут, их надо тащить из инпут потока.
    Ответ написан
  • Пытаюсь парсить товары с магазина ДНС, но почему получаю всё время array(0) PHP?

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    когда авторизируюсь не выводит имя пользователя, честно уже задолбался гуглить, норм ответа найти не могу никак) грубо говоря у меня тупо по кд кнопка логина висит и все
    Что делать в таких случаях? Во первых - сделать var_dump($_SESSION) и посмотреть что там лежит. Подозреваю что нужных ключей в этом массиве нет (или же они не там где вы их ищете, ну или называются иначе). Так же, неизвестно как вы делаете логин, и что при этом попадает в сессию (кстати - зачем хранить пароль в сессии - отдельная загадка). Рекомендую провернуть ту же операцию - проверить что в сессии после логина, ну и в коде логина убедиться что туда добавляются эти ключи.
    Ответ написан
  • Приходит файл 0 байт в yii2, почему?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Вы передаете урл, а нужен локальный путь:
    return \Yii::$app->response->sendFile(
            $_SERVER['DOCUMENT_ROOT'] . '/' . $file->getFilePath(false),
            $file->original_name . "." . $file->original_extension,
            ['mimeType'=>$file->mime_type, 'inline'=>false]
          );

    Разберитесь уже один раз в разнице между относительными путями, абсолютными и урл.
    Ответ написан
  • Почему php разработчики используют .htaccess как часть системы?

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

    Но .htaccess работает только с Apache.
    А так же его синтаксис понятен для большинства разработчиков и сисадминов, настройки из него легко портируются под любой современный вебсервер.

    Почему разработчики не пишут код, который был бы универсальным для всех веб серверов и не делегировал часть функций безопасности конфигурационному файлу конкретного веб сервера?
    по тому что единая точка входа не реализовывается программными средствами?
    Ответ написан
    Комментировать
  • Почему отправляется пустой запрос?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1)
    $number = filter_var(trim($_POST['cardNumber']),FILTER_SANITIZE_STRING);
    Не надо извращаться с непонятными (вам) функциями. filter_var тут не нужен.
    2) первым делом надо проверить что вообще в $_POST (используйте var_dump()).
    3) Четко знать какой запрос реально у вас создается. Сначала формируйте строку запроса, потом проверяйте что за строка получилась. А вообще нужно использовать подготовленные выражения, а не заниматься непонятной ерундой.
    4) Так же, у вас заглушены ошибки, вы просто не видите что за ошибки происходят.
    Ответ написан
    Комментировать
  • Как добавить запись к определенному пользователю Mysql через PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    для того чтобы что-то вводить в "данные пользователя", вы должны откуда-то знать что за пользователь вводит эти данные. Если у вас есть эта информация (ну например случайно оказалась записанной в сессию), берете id пользователя, и пишете запрос:
    Апдейт юзерс
    сет текст = "какой-то текст пришел из формы"
    вэа айди = юзерайди_полученный_допустим_из_сессии
    Ответ написан
  • Как вывести данные mysql для конкретного пользователя PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) Читаем документацию:
    The enctype attribute can be used only if method="post".

    2) Файлы не передаются методом get
    3) Делаем выводы из 1 и 2.
    4) if(isset($_REQUEST['submit'])) - плохая проверка, начиная с того что я могу отправить форму не нажимая кнопку субмит, и заканчивая тем что такой проверкой вы не знаете какой запрос придет с клиента и что в нем будет (то есть вообще ничего кроме этой сомнительной переменной не проверяете).
    5) В данной структуре данных вы никак не можете привязать посты к пользователям. Либо нужно добавить поле, определяющее владельца поста, либо делать пивот таблицу, где записывать соответствия пар юзер-пост.
    6) Кроме того - у вас в коде отсутствует какое-либо понятие идентификации пользователей, то есть вы не знаете какой пользователь добавляет или запрашивает данные, что делает бесполезным само понятие принадлежности.
    Ответ написан
    Комментировать
  • Не могу сделать чтоб обновлять количество товара в корзине?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) id="btncontcall" у вас повторяется в каждом выведенном элементе. По стандарту (да и чисто по логике), id - уникальный идентификатор (где уникальный - ключевое слово). На странице должен быть только один элемент с таким значением. Что легко проверить, заглянув в консоль и увидев кучу предупреждений о дублирующихся идентификаторах.
    2) Не надо вешать обработчик на кнопку, вешайте на форм.субмит. Естественно айди формы тоже должно быть уникальным. Хотя в вашем случае айди вообще использовать не нужно, используйте либо класс, либо, что в данном случае гораздо логичнее, собственно тег form - $('form').on('submit', function(e){...});, в этом контексте this внутри функции будет сразу целевой формой, не надо выкрутасов с поиском текущей формы.

    Тем более что ищете вы всегда первую, даже в неправильном коде: var form = $('#callbacks')[0]; всегда вернет первый элемент из списка форм, даже если там все будет правильно выбираться по идентификаторам.
    Ответ написан
    Комментировать
  • Нужно вместо хэша возвращать имя файла, при это сохранять файлы как хэш на сервере?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    так как мне передать это имя пользователю
    Из всего диалога в комментариях должен быть вывод:
    1) урл файла для скачивания может быть любым, его трогать не надо.
    2) Чтобы файл скачался под нужным именем, в заголовки нужно добавить принудительное переименование на клиенте
    header('Content-Disposition: attachment; filename="' . $meta['name'] . '";', false);
    , где $meta['name'] - имя под которым должно сохраниться у пользователя.
    Ответ написан
  • Как сделать привязку данных таблицы к тому юзеру у которого открыта сессия на сайте(он авторизовался) привязка по типу id==userid?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    если решение наколеночное, не фреймворк, то в сессию пишется что-то типа $_SESSION['user']['loggedIn'] = true; По вкусу можно держать там же айди юзера, и например никнейм, чтобы два раза не бегать... Или взять движок типа лары и использовать что есть из коробки...
    Ответ написан
    Комментировать
  • Почему рабочий php код не работает?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    При попытке сделать var_dump($result); я получаю NULL
    Заменить file_get_contents на curl, в курле включить verbose (гуглить curl verbose php). Скорее всего лажа с серитфикатами. Можно поставить настройку игнорить сертификат, но сервер может просто не принимать ваши запросы. В любом случае нет смысла гадать, надо смотреть отчет курл по соединению.
    Ответ написан
    Комментировать
  • Форма отправки методом POST?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Если используется движок - скорее всего он перебивает пост данные и имеет свою обертку для доступа к пост данным. Судя по скринам, вы вызываете не один конкретный файл, а целую цепочку, от индекса через какое-то ядро и до шаблона, что там происходит - загадка. Читайте доку к фреймворку. В остальных случаях - все должно работать, единственно что проверки по типу if(isset ($_POST ) && $_POST)тупость, хоть и простительная новичку, но все равно непонятно зачем вообще это.
    Ответ написан
  • Временная страница сайта?

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Мне нужно сделать вывод информации о карточке в модальном окне, для этого я решил использовать связку jquery and php, данные получаем из базы данных и выводим циклом в карточки, но если нажать на карточку, то открывается подробное описание.

    1) ничего не мешает при формировании страницы сразу добавить всю информацию в готовые шаблоны, а по нажатию делать их видимыми. Собственно чаще всего так и делают.
    2) Аякс - запросы без перезагрузки страницы, позволяющие получить данные с бэкенда "скрытым" запросом. Отправляете ваш айди аяксом на заранее подготовленный урл, который обратно отдает данные карточки.
    Ответ написан
    2 комментария
  • Как передать данные формы на другой сайт и вернуть результат?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Можно ли сделать таким образом, чтобы указанные данные передавались в форму на сайте B сумбитили ее и возвращали обратно результат то есть редириктели на полученную ссылку, но надо сделать так, чтобы этот процесс проходил быстро и не перенаправлял пользователя на сайт B, а возвращал уже результат.
    Нет, если вы не можете модифицировать код сайта В. Единственное что можно сделать - субмитить форму на свой сайт А, на сервере принимать эти данные и с сервера А на сервер В отправлять запрос с этими данными (нарпример через CURL), получать ответ, обрабатывать и возвращать нужные данные на фронтенд.
    Ответ написан
    Комментировать
  • Как ускорить выполнение скрипта?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    // вычисляем номер последней записи
    Вы напишите нормально какую задачу то решаете? А то как-то не соответствует код комментариям... вы перебираете ВЕСЬ массив, и вычисляете минимальное число. Зачем? Вы что, каждый раз перенумеровываете все записи при добавлении новой???
    Ответ написан
  • Как объедеить запросы и выполнить один SQL запрос и затем получить результат в виде значений переменных PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    SELECT v.product, , v.link FROM v_product v WHERE v.id = 5463 ORDER BY v.product ASC;
    SELECT i.id as info_id, i.link_to_site FROM infograph v WHERE id = 5463;
    SELECT i.info, description, title, price, first_letter FROM baseinfo v WHERE id = 5463;

    Во первых - куда делся префикс алиаса в условии во втором запросе и почему сам алиас как в первом, хотя используется какой-то i? И тот же вопрос про третий запрос. Еще и в первом 2 раза выбран v.link... Короче бардак с самими запросами для начала пофиксить бы...
    Во вторых - почему у вас айди в 3 разных таблицах один и тот же? Может это не первичный индекс, а внешний ключ, тогда он должен иначе называться. И где тогда сам первичный ключ?
    В третьих - сделать нормальную структуру, ну и тогда можно объединить их через внешний ключ, с указанием что один из них (базовый) равен 5463.

    Похоже что сам синтаксис вам предельно незнаком, и вы просто пишете рандомные строки...
    Ответ написан
    5 комментариев