Ответы пользователя по тегу PHP
  • Как сделать теги(метки) на сайт через php?

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    для того чтобы удалить конкретный комментарий, нужно передавать его id, ну и тогда запрос будет:
    DELETE FROM `comments` 
    WHERE `user_id` = :user_id 
    and `id` = :comment_id

    Кроме того, в куках держать айди пользователя нельзя (я спокойно могу напихать в свои куки любой айди и рулить всеми доступами рандомного пользователя). Для этого есть сессии. Так же, для удаления комментариев лучше использовать специальное поле, отвечающее за статус комментария, меняя его на (условно) "удален".

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    У меня вот такой вопрос, как и где мне практиковать php?
    Как и все выучившие основы - пиши соц. сеть.

    (например скрип авторизации и регистрации)
    Не бывает скрипов авторизации и регистрации. Есть система, компонентами которой будут авторизация и регистрация. В отрыве от общей схемы (архитектуры) эта работа будет абсолютно бесполезной. Да и сама регистрация и авторизация не является простейшим компонентом, а значит требует разбивки на более мелкие задачи - называется декомпозировать задачу (например, для начала надо продумать структуру таблиц в бд, где будут храниться пользователи, предусмотреть как их создавать, менять и удалять, а уже затем писать код, затем решить какие поля будут приходить с фронта, написать их там, как они будут проверяться на бэке, какие ошибки могут быть, что с ними делать и в конце как это сохранять).
    Ответ написан
    Комментировать
  • Как сделать чтобы пользователь мог управлять только собственными комментариями?

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Чет вообще пошли вопросы уровня третьеклассников...
    $faucet_arr['status'] = 'ok';
    echo json_encode($faucet_arr);
    Ответ написан
    Комментировать
  • Не редактируется БД через PHP. Что делать?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    $id = $_GET['id'];
    $_id = mysqli_real_escape_string($link, $id);
    Ок, то что мы не умеем в подготовленные выражения вместо бредового "экранирования" пол беды, и даже не страшно что операцию так то можно в 1 строку прописать, но далее
    $name = $_POST['name'];
    $age = $_POST['age'];
    $salary = $_POST['salary'];
    Ну типа, ид мы проверили, на этом наши полномочия все...

    Файл Update.php не выдает никаких ошибок после введения формы, но при этом данные не вносятся.

    Во первых - перестаньте называть файлы в разном регистре, если это не классы!!!
    Во вторых - смотрим доку по mysqli, в частности рекомендуемая процедура подключения:
    <?php
    /* Вы должны включить отчёт об ошибках для mysqli, прежде чем пытаться установить соединение */
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');
    /* Установите желаемую кодировку после установления соединения */
    mysqli_set_charset($mysqli, 'utf8mb4');
    printf("Успешно... %s\n", mysqli_get_host_info($mysqli));
    После этого уже можно что-то смотреть, например что вернул print_r ($check);...
    Ответ написан
    2 комментария
  • Почему выдает ошибку: Сайт выполнил переадресацию слишком много раз, когда ввожу header(Location: /)?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) зачем require 'config.php'; в обоих файлах?
    2) судя по всему, код первого файла должен выполняться только при субмите формы, соответственно весь код должен быть обернут в проверку метода запроса, смотрите $_SERVER['REQUEST_METHOD'].
    Ответ написан
    6 комментариев
  • Как вывести значения из базы даных?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Значения из бд выводятся если вывести их print_rом но в нужных местах они не отображаются. echo data['price'] к примеру не отображается, title тоже
    Это трындеж. Если выводятся через print_r, то и через ечо должны выводится.

    Судя по коду, дело в лени (ну и настройках шорт тега).
    пишите нормальный открывающий пхп тэг, или пользуйтесь шорт ечо: <?=

    PS: и да, с выборкой разберитесь, или форич резалта, или вайл и фетч_ассок...
    Ответ написан
  • Как правильно выставлять кодировку в бд?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Искал решение, почти везде писалось одно и тоже - нужно выставить кодировку при создании базы, нужно вставить команды в конфиг mysql и тому подобное. Всё это у меня стоит, но помогло ток одно решение, а именно - выставлять кодировку при подключение к бд.
    Кодировку абсолютно правильно сказано - надо выставлять везде, так как во первых при переносе или изменении конфигурации софта все съедет на дефолтные настройки, которые везде разные. По этому и есть конфиги и настроечные переменные. Единственно кодировку соединения лучше поставить utf8mb4, так как это более современный и обратно совместимый формат.

    UTF-8, выставляю с помощью - header('Content-Type: text/html; charset=UTF-8');
    Это можно спокойно вынести в конфиг php.ini, или добавить более универсальный код, не требующий руками каждый раз заголовки править: ini_set('default_charset', 'utf-8');
    Ответ написан
    Комментировать
  • В чем проблема с нахождением елемента формы в post?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Во первых
    require_once 'controllers/authController.php';
    require 'templates/header.php';
    здесь отсутствует закрывающий тег пхп, после которого идет хтмл. Подозреваю что там и открывающего нет (в коде вы его не привели).
    Во вторых button type="sumbit" не является инпутом, и передаваться как значение пост не будет.
    В третьих в форме указан signup.php, а выше вы приводите "файл auth". Определитесь, или там переименуйте или тут.

    Ну и первое что нужно сделать - включить вывод ошибок, или смотреть логи, а не тыкать пальцем в небо.
    ini_set('error_reporting',E_ALL);
    ini_set('display_errors', 1);
    session_start();
    ...
    Ответ написан
    3 комментария
  • Появляется новая страница с кодом php что делать?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    var forms = document.querySelectorAll(".form")
    Чет я не увидел в коде ни одного элемента с классом form... Если предполагалось выбрать формы, то все таки стоит вешать слушатель на субмит, а не на клик...

    А страница появляется по тому что превентДефаулт на форму не вешается и просто форма уходит обычным постом.
    Ответ написан
    2 комментария
  • Как повторять ajax post-запрос до определенного значения ответа или как выполнять php-функцию и возвращать промежуточные результат юзеру?

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Как написать код один раз, чтоб он выводил все id на неё, в цене я просто как-то указывал, что вот тут такой-то id и он подставляет цену.
    Если вам нужны именно ВСЕ записи на одной странице - просто не указывайте условие по ид, тогда вам выдаст все что есть. Получаете список и в цикле while прогоняете ваш mysqli_fetch_assoc($product);. Другой вопрос что страница с условно 5000 наименованиями, мягко говоря не очень читабельна. Но это уже отдельный вопрос.
    Ответ написан
  • Почему я не могу получить новые значения $_GET в AJAX+PHP, кто-то может помочь?

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

    1) Внятно опишите чего вы хотите добиться, а то код у вас сплошная мешанина хтмл, жс и пхп, а сама цель вообще не ясна.
    2) Проверьте консоль браузера на ошибки, они там наверняка есть
    3) Проверьте нетворк, посмотрите что возвращает ваш аякс запрос (хинт - в основном мусор), подумайте почему.

    По мне при вводе в текстовое поле должен быть GET запрос, и формируется $sql переменный и получаются данные.
    Скорее всего все так и происходит, только данные заговнячены, запрос гоняется 2 раза просто так, а с полученными данными все равно ничего не делается...

    PS:
    запросы всегда нужно делать через подготовленные выражения,
    пхп код ВЕСЬ выносится ДО хтмл. В нужных местах в хтмл вы просто выводите заранее полученные значения.
    Ответ написан
  • Сделать option в input?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    подозреваю что вам нужно что-то типа
    <input type="submit" name="rating" value="Замечательное">
    <input type="submit" name="rating" value="Положительное">
    ...
    но проверять соответственно нужно будет текст, а не цифры.

    PS: код просто кошмар...
    Ответ написан
  • Как на php отрисовать динамическую картинку?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    рассматривал реализацию через GD библиотеку, но как то сложновато и громоздко получается,
    Ничего особо сложного, просто много кода. Это нормально. Берутся готовые блоки, выстраиваются в структуру, рисуются на холсте и выводятся. Не нравится гд - возьми имажик.
    Ответ написан
    2 комментария
  • Как спарсить ozon средствами PHP?

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

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

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

    Между полными датами с помощью date_diff получается все посчитать
    Что логично, единственное что не понятно - зачем считать обрезанные даты?
    Ответ написан
  • Как сгруппировать массив из базы по повторяющимся значениям?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    group by question_ и groupconcat
    Ответ написан