• Почему в базу данных попадает путь без слэшей?

    FanatPHP
    @FanatPHP
    Чебуратор тега PHP
    потому что данные в БД надо добавлять по-человечески, а не как пацаны в подворотне показали.

    Данные в БД надо всегда отправлять отдельно от самого запроса. Это непреложное правило, которое надо соблюдать всегда.
    Для этого надо
    • Заменить все переменные в запросе на специальные маркеры, которые называются плейсхолдеры или параметры, а по сути - просто знаки вопроса
    • Подготовить запрос к исполнению с помощью функции prepare(). Эта функция принимает строку запроса и возвращает экземпляр специального класса stmt, с которым в дальнейшем и производятся все манипуляции
    • Привязать переменные к запросу.
    • Выполнить подготовленный ранее запрос с помощью с помощью execute()

    В mysqli это будет так
    $sql = "INSERT INTO `events` (`title`, `discription`, `date`, `img`) VALUES (?,?,?,?)";
    $stmt = $link->prepare($sql);
    $stmt->bind_param("sssss", $title, $discription, $date, $path);
    $stmt->execute();

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

    Но по-хорошему для работы с БД в РНР лучше использовать PDO, Тем более что там колупаться с bind_param не нужно, а можно сразу отправить все данные в execute
    $sql = "INSERT INTO `events` (`title`, `discription`, `date`, `img`) VALUES (?,?,?,?)";
    $stmt = $link->prepare($sql);
    $stmt->execute([$title, $discription, $date, $path]);

    И скажи спасибо что у тебя просто слеши пропали, а не всю базу шутники удалили
    Ответ написан
  • Как правильно адаптировать сайт под мобильные устройства?

    @66demon666
    По навыкам джун - по факту безработный
    Если вы задаете этот вопрос - вы НЕ умеете работать с медиа-запросами
    Ответ написан
  • Почему возникает ошибка при ограничении доступа к профилю для незарегистрированных юзеров?

    FanatPHP
    @FanatPHP
    Чебуратор тега PHP
    Надо понимать что слово "ютубер" это синоним слова "криворукий идиот".
    И проблемы в этом коде куда более серьёзные, чем банальная ошибка, которая лечится с помощью isset()

    Куда важнее две ДЫРИЩИ в этом коде, при наличии которых что ограничивай - что не ограничивай, но по сайту будет ходить кто захочет и как захочет.

    Во-первых, этот код вообще ничего не ограничивает. Потому что после отправки заголовка Location надо всегда принудительно завершать работу скрипта. потому что сама по себе отправка заголовка это, разумеется, не делает. И клиент может тупо заголовок проигнорировать и вместо редиректа получить саму страницу.
    Во-вторых, разумеется банальнейшая SQL инъекция, с помощью которой кто угодно сможет залогиниться под кем угодно, вообще не зная ни одного пароля
    Ответ написан