• Можно ли объеденить эти два sql запроса в один?

    @res2001
    Developer, ex-admin
    Я бы сделал теоретически как-то так:
    1.Получаем рандомное число (rnd) от 1 до count(*)
    2.Выбираем из таблицы top rnd записей с обратной сортировкой по ID и берем из выборки первую запись, можно и прямую сортировку, но тогда берем последнюю запись:
    select top @rnd * from result order by ID desc

    С sqlite дела не имел, потому и "теоретически".
    Ответ написан
    1 комментарий
  • Как сверстать только средствами css эту картинку?

    IgorBee
    @IgorBee
    JS,VBS,3D.Web с 07.2015
    ща попробую сделать дать линк

    Верстка заняла 1,5 часа:
    CSS

    Векторизация заняла 3 минуты:
    Вектор

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

    kaiten
    @kaiten
    Архитектор ИС
    Плохая идея не пускать, вы ограничиваете пользователя. Человек зашёл на работе на сайт, дома уже не зайдёт...

    Адекватный вариант выкидывать пользователя в старых местах и пускать в новых.
    Ответ написан
    4 комментария
  • Можно ли требовать такую зарплату с таким портфолио?

    @wittyrider
    systemd есть людей
    ждал больше минуты но кроме лоадера ничего не увидел....
    п.с. современным программистам нужно ограничит скорость интернета до 128kbps
    Ответ написан
    1 комментарий
  • Насколько prepare и execute обеспечивают безопасность sql-запроса от инъекции?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Вообще, вопрос звучит довольно странно. "Можно ли применять автомобиль для езды?" "Годятся ли деньги для оплаты товаров?", "Безопасны ли подготовленные выражения с точки зрения защиты от инъекций?".
    Собственно, если это их основное предназначение - то наверное, не обеспечивай они защиту, то были бы бесполезны чуть более, чем полностью?

    Смысл подготовленных выражений в том, чтобы решить 3 задачи при формировании динамического запроса:
    1. чтобы вставляемый в запрос литерал был отформатирован корректно
    2. Чтобы форматирование было обязательным
    3. Чтобы оно производилось как можно ближе к фактическому исполнению запроса.

    Благодаря этим трем пунктам обеспечивается гарантированная защита даже с учетом человеческого фактора.

    Так что да - если ЛЮБАЯ переменная попадает в запрос только через плейсхолдер - этот запрос безопасен. Другое дело, что в реальной жизни так не выходит, и переменные в запрос добавлять приходится. Как поступать в таких случаях, я описал в специальной статье

    Ну и напоследок стоит упомянуть о том, что режимов работы у ПДО два: "настоящие" подготовленные выражения и эмуляция. В первом случае запрос исполняется в два этапа - сначала отправляется на серевер БД запрос с плейсхолдерами (знаками вопроса), а потом, следующим пакетом - данные для него. Этот режим также удобен если нам надо выполнить много однотипных запросов, позволяя сэкономить пару наносекунд. По умолчанию же ПДО только эмулирует этот режим, отправляя запрос в одну ходку, подставляя значения прямо в запрос. Но поскольку он форматирует их корректно, то никакой опасности опять же нету

    Ну и под конец можно упомянуть редчайший случай, раздуваемый истеричками типа Шифлетта или Феррары - если вы китаец, и используете кодировку GBK (или одну из пары других, столько же часто используемых), то надо не забыть выставить кодировку соединения именно в DSN и только в DSN. Потому что если использовать по привычке SET NAMES, то в режиме эмуляции инъекция будет возможна. То есть, ситуация, когда инъекция через ? плейсхолдер возможна - она существует. Но для этого должны совпасть три фактора:
    - вы должны быть китайцем и использовать кодировку GBK
    - кодировка должна быть задана не в DSN
    - режим эмуляции должен быть включён
    Ответ написан
    1 комментарий