Ответы пользователя по тегу PHP
  • Безопасно ли хранить id пользователя из бд в сессии?

    @v__V__v
    Разработчик
    Если вы сами не вываливаете содержимое сессии в ответы сервера на пользовательские запросы, то хранение в ней чего угодно абсолютно безопасно - данные хранятся на стороне сервера и пользователям не видны. Так что смело сохраняйте в ней все, что вам нужно в ней сохранить, сессии для этого и придуманы.
    Ответ написан
    Комментировать
  • Как получить данные getContentsом через контраллер в Laravel 6?

    @v__V__v
    Разработчик
    Судя по всему, сервер не отдает никакого html, а отвечает просто набором заголовков:
    HTTP/1.1 503 Service Temporarily Unavailable
    Status: 503 Service Temporarily Unavailable
    Retry-After: 300
    Ответ написан
    Комментировать
  • Как исправить ошибку Warning: Undefined property: stdClass::$field?

    @v__V__v
    Разработчик
    Очевидно же, что где-то у вас $condition->field, а где-то - $condition->$field. В какой-то момент в $field оказывается имя поля, которого у объекта попросту нет, а вы его пытаетесь прочитать. В старых версиях php бы молча вернул null, а с 8.1 он ругается. Поищите у себя в коде '->$field'.
    Ответ написан
    Комментировать
  • Как переписать вот этот кусок кода под php?

    @v__V__v
    Разработчик
    Ошибка с кодом 400 - это неверный запрос. Сравните для начала, что именно приходит на сервер, когда запрос идет от js и от php. Если вы не можете посмотреть непосредственно на используемом сервере, измените queryUrl на любой полностью доступный вам сервер и посмотрите там. Возможно целевому серверу не нравится, что вы в json_encode закидываете массив, а не объект, а может то, что в CURLOPT_POSTFIELDS у вас безымянная строка неправильный структуры (правильно - 'postvar1=value1&postvar2=value2&postvar3=value3&postvar4=value4&...') вместо вызова http_build_query() с массивом в параметре.
    Ответ написан
    Комментировать
  • На странице с авторизацией пользователей выводит принт $user['BNB'] а на странице где должны отображаться эти данные-- нет?

    @v__V__v
    Разработчик
    session_start();
       $link = mysqli_connect('localhost', 'root', '12345678', 'register-bd');
        $query = 'SELECT FROM users WHERE BNB="'.$BNB.'",BUSD="'.$BUSD.'", TRX="'.$TRX.'", USDT="'.$USDT.'"';
        $result = mysqli_query($link,$query); //ответ базы запишем в переменную $result
        $user = mysqli_fetch_assoc($result);

    Звездочку после SELECT поставьте.
    $query = "SELECT * FROM `users` WHERE `BNB`='$BNB', `BUSD`='$BUSD',  `TRX`='$TRX',  `USDT`='$USDT'";
    Ответ написан
    Комментировать
  • Как сделать запрет неавторизованным пользователям заходить на страницу?

    @v__V__v
    Разработчик
    1. Чтобы проверить, авторизован ли пользователь, вам нужно проверять наличие $_COOKIE['user'] в тех скриптах, которые отдают закрытые страницы. Если его нет, то отдаете либо редирект куда-нибудь, либо страницу 403.
    2. В logincheck.php условие if(count($user) == 0) никогда не сработает, т.к. если пользователь не найден, то $mysql->query() вернет false, а вы получите ошибку "trying to get property of non-object" при вызове $result->fetch_assoc(). Чтобы этого не происходило, нужно использовать if($result) для проверки наличия такого пользователя.
    3. Условие if(count($user) == 1) сработает, внезапно, тогда, когда у вас пользователь найден. В результате вы его ни за что пошлете в пень.

    Правильно должно быть примерно вот так:
    if($result){
      // пользователь с таким логином и паролем есть, поехали
      $user = $result->fetch_assoc(); // Конвертируем в массив
      setcookie('user', $user['name'], time() + 3600, "/");
      $mysql->close();
      header('Location: news.php');
    }else{
      // нет такого пользователя
      exit("Логин или пароль введены неверно");
    }


    ЗЫ
    Хранить пароль в чистом виде - очень плохая идея, необходимо его хешировать, причем с солью.
    Ответ написан
    Комментировать
  • Как получить свежие данные из БД при включённом кэше второго уровня в Doctrine ORM?

    @v__V__v
    Разработчик
    Если такие запросы редки, то первое, что сходу приходит в голову - это перед такими запросами сбрасывать кэш для запрашиваемой сущности. Если все сильно запущено, то кэш целиком.
    Второе, что приходит в голову - найти в документации что-то, что позволит получать свежие данные. Беглый поиск показал, что есть некий Query::HINT_REFRESH, который, возможно, вам поможет.
    Третье - поискать возможные готовые решения или похожие случаи. Их не так, чтобы очень много, но они есть. Например, вот - https://www.gregfreeman.io/2012/invalidating-the-r...
    Ответ написан
    Комментировать
  • Как отправить post запрос redbean php с помощью ajax?

    @v__V__v
    Разработчик
    У вас не прерывается выполнение скрипта после обработки данных, поэтому форма выводится в любом случае. Поставьте хотя бы die после echo 'Вы успешно зарегистрированы!'. Или лучше выводите форму только в том случае, когда isset($data['do_signup']===false.
    Ответ написан
    Комментировать
  • Как передать через атрибут изображения?

    @v__V__v
    Разработчик
    Если нужен именно массив, то создать его в php, перевести в json и полученное представление поместить в атрибут, а по клику достать его оттуда, передать в JSON.parse() и работать с полученным результатом. Если нужно передавать элементы массива отдельно, то точно так же, как у вас уже сделано:
    <?php if (!empty($images)): ?>
              <?php foreach($images as $img): ?>
              <?php 
                $name = pathinfo($img['filename'], PATHINFO_FILENAME);
                $ext = pathinfo($img['filename'], PATHINFO_EXTENSION);
              ?>
              <a href="#modal-order" data-toggle="modal" data-img="/uploads/<?php echo $img['filename']; ?>" ></a>
              <?php endforeach; ?>
            <?php endif; ?>
    Ответ написан
  • Как в sphinx сначала выводить точно совпадающие значения?а уже потом вывести остальные?

    @v__V__v
    Разработчик
    Что-то мне подсказывает, что у вас включена сортировка найденного по алфавиту)
    Ответ написан
    Комментировать
  • Fatal error: Call to a member function fetch() on a non-object in?

    @v__V__v
    Разработчик
    Суть фатальной ошибки вам сообщает php, английским по белому)
    Смысл написанного - вы пытаетесь вызвать функцию-член класса у чего-то, что не является объектом. Посмотрите, что у вас возвращает $mUsers->message_count() в этих случаях, и тогда все станет ясно. Как-то так, например:
    $this->check=$mUsers->message_count();
    if(is_object($this->check))$this->check=$this->check->fetch();
    else{
      var_dump($this->check);
      die;
    }
    Ответ написан
    Комментировать
  • Ошибка при composer update?

    @v__V__v
    Разработчик
    Дополню, хоть и прошло много времени, кому-то может пригодится. Есть еще вариант, можно в composer.json дополнить требования к версиям php, чтобы принимались обе ветки:
    "require": {
       "php": "^7.2.5|^8.0",
    ...
    }
    Ответ написан
    Комментировать
  • Можно ли использовать токен пользователя как альтернативу токена от csrf атак?

    @v__V__v
    Разработчик
    Дополнительный динамический токен для защиты от csrf использовать не просто стоит, его нужно использовать обязательно (он так и называется csrf-токен) - токен пользователя используется только для аутентификации/авторизации или идентификации пользователя.
    Ответ написан
    Комментировать
  • Правильный ли вызов функции PHP из файла?

    @v__V__v
    Разработчик
    Судя по тому, что вы написали в комментариях к вопросу, у вас скорее всего не виден message.php. Поставьте require_once вместо include_once, и если это так, то получите фатальную ошибку, include_once отдает только предупреждение, которые часто подавляют по умолчанию.
    Ответ написан
    Комментировать
  • Как правильнее создавать EventSubscriber?

    @v__V__v
    Разработчик
    Все просто: если у вас только одно такое событие, то делается обработчик исключительно для него, если у вас есть группа схожих событий, то обработчик делается на всю группу. В вашем случае, если судить по названиям, приветствий по разным поводам будет много, так что логично сделать GreetingsMessageSubscriber. Более того, есть подозрение, что вам лучше вообще сделать MessageSubscriber, который будет ловить все события, требующие отправки сообщений в слак, т.к. действия будут одни и те же, разница только в уходящем тексте.
    Ответ написан
    Комментировать
  • Как работать с php frontend-разработчику?

    @v__V__v
    Разработчик
    Все, что вам нужно, скорее всего находится где-то внутри присланных вам файлов. Воспользуйтесь поиском по содержимому с ключевыми словами, например, div или style. Если не найдется, то либо вам заказчик не все скинул, либо скинул не то, что нужно.
    Ответ написан
    Комментировать
  • Как правильно составить условие на PHP?

    @v__V__v
    Разработчик
    Замените вложенные условия на одно:
    if (($a == 'aaa' || $b == 'bbb') && !($c && $d)){
      echo '';
    }
    Ответ написан
    Комментировать
  • Кнопка выхода с профиля?

    @v__V__v
    Разработчик
    У вас или где-то висит обработчик onclick, который подавляет реакцию на щелчок по ссылке, или где-то пропущен закрывающий (или открывающий) тег, который мешает браузеру правильно пострjить DOM. Посмотрите в отладчике браузера, что появляется в консоли по щелчку.
    Ответ написан
    Комментировать
  • Откуда брать текущую дату для SQL запроса - из php или mysql?

    @v__V__v
    Разработчик
    Если по скорости, то однозначно CURDATE()/NOW()/CURTIME() - в этом случае вы просто передаете строковую константу в запросе (кто скажет, что это не строковая константа - ничего не понимает в программировании), во втором - сначала создается объект со всеми накладными расходами, потом вызывается его метод, который возвращает результат, который помещается в переменную, который потом из нее извлекается и подставляется в запрос, который после кучи лишних телодвижений уходит наконец в СУБД. А php - это все-таки не бинарный код, несмотря на все ухищрения разработчиков. А в первом случае всего этого нет.
    Ответ написан
    Комментировать
  • Как вывести из текста определенные символы?

    @v__V__v
    Разработчик
    Судя по всему, речь идет о php. Все предельно просто:
    $p=explode('_', $p);
    $a=$p[0];
    $b=$p[1];
    $c=$p[2];

    Если содержимое переменной $p чем-то ценно для вас, то результат explode() пишите в другую переменную, например $tmp.
    Ответ написан
    Комментировать