-
Контакты

Наибольший вклад в теги

Все теги (10)

Лучшие ответы пользователя

Все ответы (10)
  • Смайлы не заходят в базу. Как исправить или убрать из текста?

    turintomsk
    @turintomsk
    developer
    Для того, что бы сохранить в БД, необходимо указать кодировку поля utf8mb4 и указать тип общения с БД не utf8, а именно utf8mb4.
    Иначе, на просторах интернета есть решения вида:
    preg_replace('/\xEE[\x80-\xBF][\x80-\xBF]|\xEF[\x81-\x83][\x80-\xBF]/', '', $text)
    Ответ написан
    Комментировать
  • Каптча. Ручное распознавание с помощью пользователя?

    turintomsk
    @turintomsk
    developer
    Капча обычно работает через установку куки на стороне пользователя, т.о. вам нужно обратиться за получением очередной картинки для текущего пользователя, и запомнить его сессию на стороне сервиса.
    Сделать это можно через curl запросы, используя соответствующие настройки.
    Смотреть в сторону curl_setopt: CURLOPT_COOKIEFILE, CURLOPT_COOKIEJAR.
    Учесть что:
    * пользователь может ошибаться;
    * пользователь может отказаться от ввода;
    * капча может устареть на стороннем сервисе;
    * для стороннего сервиса необходимо представляться браузером;
    * каждый CURLOPT_COOKIEJAR должен быть уникальным для текущей сессии пользователя.

    В данном конкретном примере придётся эмулировать AJAX-запрос.
    С этим придётся повозиться, но тоже возможно. Если коротко:
    1) запрашиваем страницу с пустыми куками
    2) формируем запрос через "ajax" с подменными headers.

    советую тестировать через vpn или динамический ip, иначе скоро попадёте в чёрный список.
    Ответ написан
    Комментировать
  • Репозиторий для поиска в БД?

    turintomsk
    @turintomsk
    developer
    Стандартно для подобных случаев реализуется класс (модель) с полным перечнем параметров для конструктора (возможно с default параметрами) и метод, создающий этот объект.
    Модель:
    class Post {
        private $id;
        private $title;
        private $description;
        /** ... etc ... */
    
        public function __construct($id, $title, $description) {
            $this->id = $id;
            $this->title = $title;
            $this->description = $description;
        }
    
        public function getId() {
            return $this->id;
        }
        public function getTitle() {
            return $this->title;
        }
        public function getDescription() {
            return $this->description;
        }
    }

    Методы класса:
    class PostProvider {
        public function getPostById($id) {
            $response = /** ... Получаем данные ...  */;
            if (!$response) {
                throw new Exception('Not found.');
            }
            return $this->createPost($response);
        }
        public function getPostsByTitle($id) {
            $result = [];
            $responses = /** ... Получаем данные ...  */;
            foreach ($responses as $response) {
                $result[] = $this->createPost($response);
            }
            return $result;
        }
    
        /**
         * Метод возвращает объект Post по переданному массиву данных
         * @return Post
         */
        private function createPost(array $response){
            return new Post($response['id'], $response['title'], $response['description']);
        }
    }
    Ответ написан
    1 комментарий
  • Можно как то одним запросом сделать это?

    turintomsk
    @turintomsk
    developer
    Если я верно понял...
    UPDATE `users` SET `password`=`temp_password` WHERE `code` = :code

    Зачем Вам старый пароль?
    Ответ написан
    3 комментария
  • Как при исполнении update сделать больше< или >меньше?

    turintomsk
    @turintomsk
    developer
    $this->db->query("
        update users
        set `noter_a` = `noter_a` + 1
        where 
          id = '".intval($get_o['user_id'])."' 
          AND `noter_a` != 0
    ");
    Ответ написан
    4 комментария