Задать вопрос
Профиль пользователя заблокирован сроком с 10 апреля 2022 г. и навсегда по причине: систематические нарушения правил сервиса
  • Как запретить доступ к сайту с других стран?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    > Этот вопрос уже задавался, но у меня маленько другая ситуация.

    Ситуация та же самая, можно использовать любой ответ на этот вопрос

    > Не повлияет ли это на работу Гугл Аналитики, Пикселя Фейсбук и Метрики?

    Поскольку Гугл Аналитика, Пиксель Фейсбук и Метрика не расположжены на вашем сервере, то на их работу это не повлияет.
    Ответ написан
  • Как сделать редирект с интеравлом?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Никогда не надо делать редирект с интервалом. Это глупо само по себе и неудобно для пользователя.
    Текст надо записать в сессию, сделать редирект, и показать во всплывающем сообщении. Гугли flash messages
    Ответ написан
    Комментировать
  • Почему не работает на сервере, а на логкалке работает?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Нажимаем в браузере кнопочку Фэ12, выбираем вкладку "Сеть", выбираем мышкой свой запрос и смотрим ЧТО вернул сервер вместо валидного джейсон.
    Если ошибку, то читаем что там написано
    Если ничего - то идем в логи сервера и читаем там.
    Ответ написан
  • Переписал код с книги, но выдает ошибку, в чем может быть проблема?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Тебе надо бросить всё, и учиться пользоваться поиском.
    Код к книжкам всегда есть в интернете. И к этой книжке тоже.
    И если уметь пользоваться поиском, то не придётся страдая и потея перепечатывать кривой код из книжки, теряя при этом скобки.

    Ошибка синтаксиса чаще всего означает что ты потерял скобку. Ищи, где открыл и не закрыл
    Ответ написан
    1 комментарий
  • Перенаправление при ошибке?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Никак.
    При ошибке надо выдавать НТТР код ошибки, а не перенаправления.
    Если хочется показать определенную страницу, то её и показать, сразу на месте, без перенаправления.
    Сделать это можно при помощи обработчика ошибок
    Ответ написан
    Комментировать
  • Насколько защищена представленная конструкция php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Пароль никогда не следует хранить в открытом виде.
    Сгенерировать его через password_hash, вписать в скрипт и проверять через password_verify.
    Помимо прочего это еще и затруднит подбор перебором.

    Также код можно сильно сократить. Уже сто лет как в РНР есть сокращенный вариант проверки на isset, плюс можно сразу прервать выполнение, и не делать лишнюю вложенность
    <?php
    
    $login = $_POST['login'] ?? '';
    $password = $_POST['password'] ?? '';
    $hash = '$2y$10$e6RRGG8zFvsE6Bl7at/Vx./igFslOmnLo6poA6N1QoNWrgrkedHqO';
    
    if ($login !== 'login' || !password_verify($password, $hash)) {
        die('Неверный логин');
    }
    echo 'рендер кода страницы с формами для создания новых файлов на сервере';


    Закрывающий тег тоже не нужен
    Ответ написан
    Комментировать
  • Как найти продукт по цветам Mysql?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Не должно быть поля " котором пишу так black,yellow,green ".
    Должна быть отдельная таблица, в которой id записи и цвет
    тогда поиск делается простым джойном.
    Ответ написан
    4 комментария
  • На каком уровне нужно знать php, чтобы изучить wordpress?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Чтобы делать сайты на вордресс, вообще ничего знать не нужно. Надо только уметь кнопочки нажимать в админке.
    Ответ написан
    1 комментарий
  • Как исправить проблему с include php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Пути всегда должны быть абсолютными.

    Как к файлам, так и к http ресурсам.
    У тебя в шапке во всех урлах те же самые точечки. А должен быть абсолютный путь от корня сайта. То есть не
    <img src="../images/lame.jpg">, а <img src="/images/lame.jpg">
    , только чтобы это был реально существующий путь.

    И прочесть целком phpfaq.ru/newbie/paths
    Ответ написан
    Комментировать
  • Правильно ли вставлять include() в цикл 50x и чем это чревато?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    На хайлоаде за такое будут бить ногами.
    Для домашней странички с котиками, но потом ты сам проклянешь тот день, когда решил что 100500 маленьких файликов с шаблончиками - это хорошая идея.

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Судя по коду, у тебя здесь три вопроса.
    1. Как вывести форму?
    2. У меня есть форма, как передать ее содержимое на сервер аяксом и получить значения в РНР ?
    3. У меня есть несколько переменных в РНР, как их записать в БД
    Никогда больше так не делай.
    Первые два вопроса не имеют никакого отношения к третьему и засорять свой вопрос ими не надо.

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

    Код соединения никогда не пишем как есть, а инклюдим, чтобы не повторяться повторяться.
    Код соединения должен быть нормальный, со всеми необходимыми параметрами, и без дурацких echo. Берем здесь.
    Сами переменные в запрос не пихаем, а передаем отдельно

    <?php
    require 'mysqli.php';
    $query = "INSERT INTO message (name, email, phone, message) VALUES(?,?,?,?)";
    $stmt = $mysqli->prepare($query);
    $stmt->bind_param("ssss", $name, $email, $phone, $message);
    $stmt->execute();
    echo "Запись добавлена!";

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Не очень понятно что нужно но как-то так

    $i = 0;
    while (true) {
        foreach ($array as $row) {
            if ($i++ == $max) {
                break 2;
            }
            // делаешь что тебе надо
        }
    }
    Ответ написан
  • Как отправить массив обьектов класса std на mysql с php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Судя по коду должно работать, за исключением того что за записывание таких массивов в бд надо бить по пальцам ногами в армейскиих ботинках, чтобы потом даже краешка мысли такой не возникало.

    > Подскажите пожалуйста что делать???

    Описывать свои проблемы внятным русским языком.
    "Отправляется" только гарри поттер в хогвартс, а в базу данных что-то записывается.
    Вот и надо четко написать, что конкретно в итоге оказывается в базе данных и как ты об этом узнал.
    Ответ написан
  • Реализация правильной опции "запомнить меня" и завершение сеансов удаленно?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Генеришь токен из random_bytes() (ну или UUID) и кладешь его в куки и в базу.
    Соответственно получаешь токен из куки и по базе находишь юзера.
    Если надо разлогинить, то генеришь новый токен.

    Использовать ли при этом сессию - вопрос вкуса, и в общем-то второстепенный. Можно использовать, можно не использовать
    Ответ написан
    Комментировать
  • Может ли запрос SELECT приводить к удалению данных?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    склоняюсь к мнению, что это глюк на самом сервере SQL.

    всякий раз, когда ты склоняешься к такому мнению, это значит что глюк 100% в твоем собственном коде.

    Учитывая весь этот адов винегрет, от которого глаза начинают кровоточить, удивительно что оно вообще хоть как-то работает.

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    require_once ('../DropCases/MySql/Connection.php'); // подключаем скрипт
    
    $sql = " SELECT * FROM `doka 2`";
    $data = $mysqli->query($sql)->fetch_all(MYSQLI_ASSOC);
    echo json_encode($data);


    В Connection.php положить то что написао здесь
    Ответ написан
    Комментировать
  • Что не так с кодировкой?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Пособие "гуголь для самых маленьких": если попку уже самостоятельно научился вытирать, а нос - ещё нет, то самое время учиться поиску в интернете : черные ромбы

    Скажи своему Sublime Text 3 чтобы сохранял файлы в нужной тебе кодировке
    Ответ написан
    Комментировать
  • Как проверить наличие записей в таблице MySQL через PHP?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    if ($result = $connection->query($checkUserQuery)) {

    Это очень распространенная ошибка.
    И очень нелогичная.

    Ты, когда запрашиваешь выписку в банке чтобы узнать, есть ли у тебя деньги, на что смотришь? Просто на то пришла ли выписка, или нет? Серьёзно? Или все-таки смотришь в саму выписку, какие там цифры?

    query() возвращает результат запроса. Результат с нулем строк - это тоже результат. Сами строки ты получаешь другими функциями.

    Чтобы узнать, еслть ли в таблице данные, нельзя запрашивать все строки. А представь что ты наконец освоишь программирование и на твоем сайте будет миллион пользователей. Будешь всех запрашивать в РНР чтобы узнать, есть ли хоть один?

    Если надо узнать, есть ли в базе хоть один пользователь, надо и запрашивать одного. Л - логика.

    function usersTableNotEmpty($connection)
    {
        $checkUserQuery = 'SELECT 1 FROM users LIMIT 1';
        $result = $connection->query($checkUserQuery);
        $row = $result->fetch_row();
        return (bool) $row;
    }


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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Очень смешной топик.
    Сразу видно что почти никто из советчиков никогда с реальным интернет-магазином не работал.

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

    Ну и третье, уже специально для автора вопроса, а не только для всех юных писателей крупных интернет-магазинов - сначала, перед тем как приступать к написанию крупных интернет магазинов, следует изучить букварь по веб-разработке. И открыть для себя, что у любого интернет-магазина, даже некрупного, есть back-end. В котором, в общем-то, вся логика работы с товарами, заказами и корзиной и реализуется. И которое к "SPA на реакте" не имеет ни малейшего отношения. И чтобы написать которое, надо учить основы баз данных, SQL и какой-нибудь серверный язык программирования. Ну и ещё примерно 20 дисциплин.
    Ответ написан
    3 комментария