Профиль пользователя заблокирован сроком с 10 апреля 2022 г. и навсегда по причине: систематические нарушения правил сервиса
Ответы пользователя по тегу Веб-разработка
  • Как эффективно хранить canvas попискельно в БД с последующим отображением?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ну как минимум за $table->string('color', 18); надо руки сразу отрывать
    То есть на координатах наэкономили, 4 байта в сумме, а потом хоба - в 4 раза больше на несчастный цвет. при том что цветов там явно не больше десятка. И это не говоря уже про нормализацию.

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

    Если подумать, то можно юзера сразу не передавать. Всех юзеров никто смотреть не будет, а при наведении можно и отдельный запрос послать. Тогда можно и BigInteger оставить.
    Получится всего 5 байт на пиксель, то есть 10 метров на всю карту. Дофига, но подъемно.

    По пагинации это дурь какая-то. Зачем "офсет-лимиты" если уже есть четкая разбивка.
    Кто мешает запрашивать тупо построчно? Скажем, по 100 строк картинки? 10 запросов по мегабайту.
    id в этой таблице по сути вообще не нужно, только если лара без него не сможет. Но по уму первичный ключ - это ху.

    Из БД получать 2 лимона строк конечно тоже не сахар
    Но можно наверное увеличить строки, хотя бы виртуально.
    Вью или процедура, которая комбинирует скажем сто строк в одну

    Насчет других хранилищ я не уверен. Там же наверняка нужна будет выборка обновлений, по таймстампу.
    Но в целом с Редисом поэкспериментировать можно.
    Ответ написан
    1 комментарий
  • Какие есть схемы аутентификации, не требующие ввода пароля на разных устройствах?

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

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Подсказка: на этот вопрос на этом сайте примерно 100500 ответов

    Конкретно по новостям никаких алиасов получать не надо.
    ссылка должна быть вида site.ru/news/12-istoriya-companii
    из нее надо получить только цифру 12
    Ответ написан
  • Не отправляются данные веденные из input в бд (Mysql, PHP)?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    И не будет никакой ошибки, потому что код взят из какого-то древнего руководства, написанного обезьяной.
    Меня вот поражает, ну ОТКУДА вы вы выкапываете это дерьмо мамонта? На каком ютуб канале, какой гамадрил вот это вот всё вещает?

    - print "Ошибка!: " . $e->getMessage() писал дебил, потому что специально выводить ошибки не нужно - РНР и так выведет ошибку, если его об этом попросить.
    - try {} catch (PDOException $e) { писал дважды дебил, потому что ПДО будет кидать исключения только если ему об этом сказать при соединении. А дебил об этом не сказал
    - try {} catch (PDOException $e) { писал трижды дебил, потому что см. выше. Не нужно ловить ошибку, чтобы её вывести.
    - VALUES ('{$name}', '{$surname}', '{$age}', '{$email}', '{$phone}', '{$index}'"); - а вот это уже, я думаю, не руководство, а самодеятельность автора кода. Даже в дебильном руководстве такое вряд ли можно увидеть.
    - enter' => $submit - это уже тоже автор кода, от излишнего усердия и ПОЛНОГО не понимания своих действий
    - ну и да, почему-то в списке полей id_user есть, а в VALUES внезапно нету. "Где логика, где разум?" (с)

    В общем учимся работать с БД в РНР заново
    .
    // Параметры для подключения
    $db_host = "localhost";
    $db_user = "root"; // Логин БД
    $db_password = "root"; // Пароль БД
    $db_base = 'test'; // Имя БД
    $db_encoding = "utf8mb4" // кодировка 
    
    // Подключение к базе данных
    $db = new PDO("mysql:host=$db_host;dbname=$db_base;charset=$db_encoding", $db_user, $db_password);
    // Просим ПДО сообщать об ошибках
    $db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    
    // Собираем данные для запроса
    $data = array( 'name' => $name, 'surname' => $surname, 'age' => $age, 'email' => $email, 'phone' => $phone, 'index' => $index);
    // Подготавливаем SQL-запрос
    $query = $db->prepare("INSERT INTO `users`(`user_name`, `user_surname`, `user_age`, `user_email`, `user_phone`, `user_index`) 
                         VALUES (:name, :surname, :age, :email, :phone, :index)");
    // Выполняем запрос с данными
    $query->execute($data);


    Хотя бы так
    Ответ написан
    6 комментариев
  • Как вставить метод POST в SQL запрос?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    https://qna.habr.com/q/918033#answer_1847841

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

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

    Нагрузок у него нет, веб-проекта, в котором будет функционал по типу как в Reddit - нет, пользователей нет, рассылок нет, нагрузки даже в 10 пользователей в сутки нет. Как и объяснения, почему пользователи вдруг повалят именно на этот проект.
    Но зато мы уже стррррашно озабочены проблемами с производительностью.
    Поэтому мы убьём в 10 раз больше времени, поднимая на каком-нибудь экзотическом языке прототип, чтобы убедиться что этот проект таки никому не нужен.
    Ответ написан
    4 комментария
  • Как правильно указать относительные и абсолютные пути?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Все твои проблемы из-за уродливого костыля в виде site. От него надо избавляться.
    Каждый виртуальный сервер должен быть в своей папке. Тогда ты сможешь писать везде нормальные абсолютные пути от корня сайта

    Подробнее про абсолютные и относительные пути, phpfaq.ru/newbie/paths
    Ответ написан
    Комментировать
  • Внедрение js-инъекции, это как? Я правильно понял?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Нет
    Ответ написан
    Комментировать
  • Электронный дневник для школы?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Сначала подучи русский, а потом берись за программирование.
    Не "два раза принимался писать блог, бросил на половине (на самом деле на 10%)", а садиться за учебники и учиться программировать
    Годика через два-три может быть потянешь электронный дневник.
    но судя по этому вопросу - скорее нет.
    Законченное функционаьное приложение может написать только человек, обладающий самостоятельностью.
    У тебя самостоятельности - ноль, тебе должен прийти дядя и все в ротик разжевать. С таким подходом весь дневник закончится разговорами о нем.
    Ответ написан
    Комментировать
  • В каком этапе обучения нужно беспокоиться о безопасности?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Начинать беспокоиться о безопасности надо ДО начала обучения. То есть сильно раньше, чем когда уже "написал блог".
    Хотя бы базовые принципы надо применять с самого начала
    Для запросов в бд использовать подготовленные выражения.
    Для вывода информации в html использовать htmlspecialchars
    Если не дай бог читаются какие-то указанные пользователем файлы - то basename()
    При заливке файлов проверять расширение и переименовывать файл.
    При выполнении пользователем каких-то действий, проверять имеет ли он на это право.
    Во все формы добавлять сохранённый в сессии токен, чтобы их не могли подделать
    Ответ написан
    1 комментарий
  • Хранение данных в бд в зашифрованном виде?

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

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    php html
    Ответ написан
    Комментировать
  • Как сделать редирект с интеравлом?

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

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

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

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

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

    Если задача какая-то другая, то надо родить нормальное описание.

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    1. Тебе надо разобраться с тем, как отправляются данные на бэкенд. Никаких токенов и контейнеров там нету. И "парсить" ничего не надо
    2. Тебе надо разобраться с тем, что такое база данных. И тогда вопроса "хранить через запятую" в принципе возникать не будет. В базе все хранят по отдельности. Тем более ключевые слова. Все ключевые слова хранятся в отдельной таблице. Для привязки к записям делается ещё одна таблица, с двумя колонками. Айди записи + айди ключевого слова
    Ответ написан
    Комментировать