Задать вопрос
  • PDO не добавляет запись с такими символами что делать?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    ;charset=utf8mb4 в DSN
    Ответ написан
    Комментировать
  • Можно ли индексировать varchar в mysql?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Можно
    Ответ написан
    Комментировать
  • Поиск строк в большом файле?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    В данном случае искать быстрейшее решение будет заведомо дольше, чем просто использовать самое простое. Пока будешь бегать по инету, оно уже 10 раз все найдет.

    Чем не устроило сделать просто в лоб grep -f search.txt gigaz.log ?
    Ответ написан
    Комментировать
  • Чистый php, если нет Бд, то можно ли её создать?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Можно, но код, который создает БД при ошибке - это глупость.
    Так не делают.

    Можно создать отдельный скрипт для настройки окружения, который создаст БД и таблицы например.
    В этом скрипте просто не указывать 4-й параметр в mysqli_connect.
    И дальше просто написать mysqli_query() c запросом создания таблицы.

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

    spoiler
    И отучайтесь уже писать этот говнокод, or die("Ошибка соединения с БД." . mysqli_error($link));
    он и так-то всегда был признаком профнепригодности, а в современном РНР уже и вовсе не имеет смысла
    Ответ написан
    5 комментариев
  • Как сделать безопасный "Запомнить меня" на сайте?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Сгенерировать сильно уникальный токен, что-нибудь вроде random_bytes(16), положить его в БД и в куки

    > Как предотвратить несанкционированную авторизацию на случи, если у пользователя украдут cookie?

    Никак. В принципе, вся безопасность современного веба завязана на предположении, что куки не украдут. В супер-важных приложениях, типа банковских, можно дополнительно проверять IP адрес, его подделать невозможно. И при смене адреса просить перелогиниться. Но в обычном приложении это будет скорее неудобством.

    > Как идентифицировать его, что куки используется не на другом устройстве?

    Ну можно по идее запоминать устройство, по user agent. Но это придется отдельно хранить авторизации на всех устройствах. Но если покрадут куки, то уведут и юзер агент.

    Причем все это относится и к обычной авторизации, без функции "Запомнить меня". Так что если эти вопросы до сих пор вас не волновали, то и сейчас по идее не должны.
    Ответ написан
    1 комментарий
  • В запросе SQL в php условия в кавычках как?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Никогда не понимал любителей ломать пальцы обо все эти точечки-кавычечки-запяточечки. Это же надо так запариться, старательно после каждого слова выписывая пунктуацию. Есть же нормальные двойные кавычки.
    "mysqldump -u$user -p$password --single-transaction --force --opt --where 'ENTITY_FIELD = STATUS_ID AND ASSIGNED_BY_ID >0' $database $table > relations.sql"
    Ответ написан
  • Как перейти на другой сайт с POST запросом?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Это называется Межсайтовая подделка запросов и ни один нормальный банк не даст ее сделать.
    А так -то отправлять форму яваскриптом, ничего экстраординарного.
    Ответ написан
  • Нужна ли математика Python,Java программисту?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Нужна ли математика Python,Java программисту?

    Сама по себе может не понадобиться, но тот факт что вы задаете этот вопрос, говорит о том что программист из вас скорее всего получится никудышный

    мелкий опыт в Питоне смогу ли я с такими стеком знаний получить работу Python или Java разработчик?

    Нет, разумеется
    Ответ написан
    Комментировать
  • В чем разница обычного импорта и обращение с косой чертой?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Комментировать
  • Как типизировать ключ и значение массива?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Типизировать ключи особого смысла нет, а для значений/структуры массива нативного решения нет, надо делать руками.
    Если под "типизацией ключей" имеется строго определенный набор ключей, то это называется DTO/ValueObject. То есть тупо вместо массива используется объект, в котором структура его свойств может быть четко определена.

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

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Я тоже долго тупил, но потом понял. Скорее всего, человеку требуется аналог fetch_assoc в РНР. То есть словарь, в котором уже есть имена полей, которые не нужно будет писать руками.
    sqlite_connection = sqlite3.connect('sqlite_python.db')
    sqlite_connection.row_factory = sqlite3.Row
    cursor = sqlite_connection.cursor()
    sqlite_select_query = """SELECT * from sqlitedb_developers"""
    cursor.execute(sqlite_select_query)
    records = cursor.fetchall()
    records = [dict(row) for row in records]
    print(records)

    В итоге получится это самое загадочное "все получить одним returnprint" без цикла.
    Ответ написан
  • Как отформатировать строку SQL запроса?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Проблема здесь не с форматированием.
    А со структурой БД.
    Подставлять имя таблицы в запрос требуется исключительно редко, и это, очевидно, не ваш случай.

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

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

    В вашем случае не должно быть зоопарка таблиц для каждого города. Таблица должна быть только одна. В которой есть поле city. Значение для которого подставляется стандартно во WHERE.
    Ответ написан
    1 комментарий
  • Как сгрупировать значения multiselect инпута в подмассивы если в форме несколько multiselect инпутов с одним названием tags[]?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Если в форме несколько multiselect инпутов с одним названием tags[], то, разумеется, никак.
    Чтобы при сохранении формы значения из отдельных инпутов были в подмассиве массива tags, надо добавить эти подмассивы. Л - Логика.
    tags[0][]=
    tags[1][]=
    и так далее
    Ответ написан
    9 комментариев
  • Как сделать так чтобы код был виден постоянно без скролинга?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Надо научиться писать код нормально и не городить огромные лестницы из условий.
    Во-первых, надо не ваять огромные простыни кода, а разбивать его на боле мелкие функции.
    Во-вторых, если какой-то код выполняется только при определенном условии, то надо сначала проверить условие, и если оно не выполнилось, то сразу завершить обработку. То есть
    if (something == false) {
        return
    }
    // дальнейший код
    if (something selse) {
    }

    вместо
    if (something == true) {
        // дальнейший код
        if (something selse) {
        }
    }


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

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Интересный вопрос.
    Как минимум есть неинтерактивный сервис, https://ell.stackexchange.com/, где можно задать этот вопрос в ручном режиме.

    А насчет автоматического ответа - ну, наверное, самый смешной вариант - это использовать всем известный сервис.

    То же самое касается и запроса
    ввести слово и приложение/сайт выдал контекст, в котором оно употребляется.
    Ответ написан
    Комментировать
  • Как добавить новую запись в существующую таблицу?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    В целом направление верное, надо только соблюдать верный синтаксис. То есть выбирать сущевтвующие поля по отдельности, а не склеивать их зачем-то в одно через CONCAT

    Плюс вы выполняете не тот запрос, который показываете, а какой-то, в котором iNSERT написано с маленькой буквы, и перед ним еще зачем-то болтается `goods_categories`
    Ответ написан
    Комментировать
  • Когда стоит начинать учить фреймворки?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Ну, по-хорошему, ещё рановато.
    Всё-таки, фреймворки служат для ускорения разработки веб-приложений, а не одностраничных черновиков.
    При чем это очень важный момент.
    Не использовав в своей работе всё, что требуется при разработке веб-приложения (в том числе безопасность, следование рекомендациям протокола НТТР, валидация данных, и примрно ещё десяток нужных вещей) - то не сможешь реально понять, как много фреймворк делает за тебя.
    Ответ написан
    Комментировать
  • Какой максимальный диапазон чисел в for i in range?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Господи, ну нельзя заниматься программированием с такими представлениями о логике.
    Причем не о какой-то там хитрой математической логике, а о логике своих действий.

    Неужели так трудно проверить свое собственное утверждение?
    for i in range(200000, 500000):
        if (i < 200005):
            print(i)
        if (i == 200005):
            print('...')
        if (i > 499995):
            print(i)


    Где здесь 0? Где здесь 208?
    С чего вы взяли, что эти цифры вообще берутся из этого цикла, а не откуда-то еще?

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

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    В таких условиях надо делать вытесняющий кэш.
    Если при запросе нового файла выясняется, что для него нет места, то удаляется самый старый файл.

    Хотя конечно непонятно, как это всё поможет в ситуации, когда заходят посмотреть сразу 20 разных событий.
    Ответ написан
    1 комментарий
  • Мощнее ли пароль, содержащий китайские иероглифы?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Осталось понять, чем иероглиф лучше английского слова.

    Для непонятливых могу пояснить:

    Всем хуже
    У английского слова устойчивость так же, но при этом нет проблем с вводом пароля с любого устройства или интерфейса.
    Ответ написан
    Комментировать