Ответы пользователя по тегу PHP
  • Как правильно добавить и вывести категории с БД + фотография?

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

    Фотографию категорий я не хочу записывать в базу.
    Почему? Лень? Религия? Звезды не сошлись?

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    str_replace("\n",'',$body); ну и/или регулярками пробельные символы погрохать.
    Ответ написан
    Комментировать
  • Почему данные не добавляются в БД?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Охохохооо, по новой....
    1) проверьте var_dump($login) и var_dump($password), есть ли там что-то
    2) сначала "руками" проверьте вставляется ли ваш запрос в бд, идете в пхпмайадмин и выполняете INSERT INTO users (login,password) VALUES('aa', 'bb');
    3) Смотрите на ошибки, если имеются, потом думаете...

    на будущее делайте проверку
    try {
                $result2->execute();
            }
            catch(PDOException $e) {
                echo $e->getMessage();
            }


    UPD: Как заметил Лентюй, новичкам не совсем очевидно что пдо нужно настроить перед использованием, в частности вывод ошибок нужно выставить через
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    Ответ написан
  • Как получить аттрибуты тегов?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Подскажите, что я делаю не так?
    Не читаешь доку?
    во первых, вам надо получить children от вашего offer[6] а не param, который первый из.
    во вторых уже проитерировать:
    https://www.php.net/manual/ru/simplexmlelement.att...
    Замечание: SimpleXML содержит правило добавления итеративных свойств к большинству методов. Они не могут быть просмотрены с использованием var_dump() или каких-либо других средств анализа объектов.
    Ответ написан
  • Как добавить ссылку на файл?

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

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

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

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

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

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    session_start не требует проверки на существование чего-либо. Его просто надо вызывать в начале и все.

    все эти проверки ип и клиента - больше паранойя, угон сессии конечно вещь возможная, но вам я думаю рановато об этом беспокоиться. Тем более что я могу с мобильного зайти, мне каждый раз как я сменил вышку и получил новый айпи нужно будет логиниться? Нааайс...

    в сессии лучше всего хранить отдельно флаг логина $_SESSION['is_logged']; и отдельно массив $_SESSION['user']; где часто используемые данные юзера. Или внутри юзера: $_SESSION['user']['is_logged'];
    Ответ написан
    24 комментария
  • Не записываются данные в таблицу Mysql, как исправить?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    тут только один запрос на вставку, зачем тут 3 запроса?

    В логах сервера ошибок нет.
    Это говорит только о том что логирование не настроено

    if ($aff_id && $parent_aff_id){
            global $wpdb; 
            $table = $wpdb->prefix . 'uap_relations';
            $sql = "INSERT INTO $table VALUES(NULL, %d, %d)";
    var_dump([$aff_id, $parent_aff_id]);
    var_dump($sql); exit(); //тут смотреть и думать
            $q = $wpdb->prepare($sql, [$aff_id, $parent_aff_id]); //здесь вроде массив должен быть
            $wpdb->query($q);
          }

    Во первых посмотреть что в переменных, для этого есть вар_дамп.
    Во вторых, если переменные не пустые, взять запрос, подставить руками значения и выполнить запрос из пхпмайадмин или из оболочки напрямую. Скорее всего какое-то поле является обязательным, но не входит в ваш запрос, либо первое поле (id?) не автоинкремент... В любом случае вы увидите ошибку.
    Ответ написан
    5 комментариев
  • Как отправлять ajax, если .htaccess меняет расширение .php на ничего?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    во первых определитесь ДЛЯ ЧЕГО в хтаксессе такие правила, иначе там какой-то бред. Обычно нечто подобное делают для переадресации на единую точку входа, в вашем случае я вообще не понимаю зачем такие правила.
    во вторых (когда вы разберетесь с первым) либо исключите из правил пхп файлы, либо вы придете к нормальному роутингу, мвц и объектам и вопрос отпадет сам собой.
    Ответ написан
    Комментировать
  • Как текст с БД вывести в html тег img?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Не хочется писать "а я говорил"...
    1) НЕ ХРАНИТЕ В БАЗЕ ПУТИ, храните только имена файлов.
    2) Не путайте (а вы я вижу серьезно запутались) абсолютные пути (они только для работы с файлами на сервере) и относительные пути (для отображения путей относительно сервера). В хтмл ВСЕГДА выносятся относительные пути. И относительный путь должен начинаться с / (корень сайта). У вас он начинается с имени папки. Слеш добавьте короче, а то он считает папку, добавляя эту строку к текущему урл.
    3) Что, кстати возвращает нас к п.1, не надо хранить пути в базе.
    4) Впереди вас ждет много интересного, так как рано или поздно у вас все равно вася пупкин и вася губкин зальют картинку с одним и тем же именем и у обоих будет одна аватарка на двоих, как этого избежать я уже писал.
    Ответ написан
    1 комментарий
  • Почему после прохождения капчи не происходит переадресация?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    хеадеры отправляются ДО вывода ЛЮБОГО символа, который не относится к заголовкам. Если вы потрудитесь выставить уровень ошибок E_ALL и заглянете в логи, увидите предупреждение о том что заголовки уже ушли и поздно пить боржоми.
    Ответ написан
    Комментировать
  • Как реализовать добавление фотографий пользователей с папки в MySQL?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    нарабоки класс, осталось мелочи:
    0) проверить что это картинка
    1) проверить что имя картинки уникальное, а то у сотен юзеров будет аватар untitled.jpg последнего загрузившего фото юзера (хинт: лучше не брать то которое дал юзер, а формировать свое гарантировано уникальное, например от логина пользователя)
    2) Указать в запросе условие where, в котором привязать каритнку к конкретному пользователю, а не всем сразу
    Ответ написан
  • Как правильно организовать получения схемы?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    есть ли другой способ это сделать?
    Есть конечно, но так норм, так как все равно вам как то нужно получить содержимое файла.
    так как я думаю что getByName не должен знать о каких либо путях итд
    Не то что бы не должен, просто здесь это не нужно. Просто нужен чейнинг: гетолл сетит внутреннее свойство $this->schemes и возвращает $this, а гетбайнэйм берет по имени из $this->schemes.
    Ответ написан
    Комментировать
  • Как ускорить чат?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Для начала - данный сервис немного не про это.
    Во первых вам надо разобраться где конкретно у вас тормоза, за вас этим тут никто не займется, а по коду это понять практически невозможно
    Во вторых (но после первого) уже конкретизировать вопрос: "медленно выполняется это: [3-4 строчки кода, ну 10-15 если это реально нужно], что можно сделать?".

    А так у вас вопрос из разряда "Дорогие ученые, у меня в подвале подземный стук, объясните как он происходит?".

    UPD:
    как сделать так чтобы они вызывались только когда нужно не знаю
    так как у вас это "такой себе" чат - сильно что-то исправить не получится, для этого нужно переписать как серверный, так и браузерный код, используя сокеты или хотя бы лонг поллинг.
    В вашем случае - во первых сократить количество запросов к серверу - поставьте интервал хотя бы секунд 10 вместо 1.
    Во вторых проверять бан можно не по интервалу, а только когда юзер что-то пришет в чат, тогда и проверять и возвращать ответ сервера с флагом бана.
    Ну и хз как у вас там работает сам чат на сервере, я бы посмотрел как быстро выполняются запросы к бд и насколько быстро вообще код исполняется на сервере.
    Ответ написан
    5 комментариев
  • Как заблокировать повторное выполнение PHP скрипта?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Ваши попытки напоминают операцию по удалению гланд через уретру, так как пациент отказался открыть рот. Вам абсолютно верно посоветовали СТАНДАРТНЫЕ методы работы с формой,
    1) Заблокировать кнопку субмита или задать всему блоку pointer-events: none; user-select: none;, что отключит интерактивность формы.
    2) После субмита, на стороне сервера делать редирект на какую-то страницу суксесс заказа, для предотвращения повторной отправки рефрешем.
    3) Можно извратиться на стороне сервера и проверять был ли добавлен от этого клиента заказ в течение последних ЭН минут, но обычно после первых двух вариантов это не нужно.
    Ответ написан
    Комментировать