![]() |
Как можно сделать срок действия ключа по дате/часам/минутам? То есть, я ввожу ключ(уже есть форма) и выбираю срок его действия, к примеру ключ будет работать о 05.04.2021, как это реализовать? Чтобы юзер потом не смог по нему авторизоваться...
Кто сможет - пишите в телеграмм/пм форума. Дам на чаек) |
Делаешь таблицу, например:
id | key | create_at | end_at Дальше с формы отправляешь данные на функцию, которая заносит значения в базу данных, где ID - автоинкремент, key - твой ключ с формы, create_at - значение из php функции date() с типом timestamp, end_at - время из формы, которое ты указываешь вместе с ключем. Там, где происходит авторизация, сверяешь текущее время и end_at из таблицы, если текущее больше - пишешь срок действия истек. Всё. |
Цитата:
|
Ап
|
Можно было чуть логически подумать и сделать самому за это время
создание таблицы: Код:
CREATEpName ник или че хош вводи туда pKey - сам ключ длинной 32 символа pDateEnd время в Unix формате ( почитай че это) DELETE WITH PDO: Код:
functionхз мог ошибиться где то, писал прям тут. А еще id надо AUTO INCREMENT присвоить - дерзай |
Самый легкий способ как по мне, поставить cron на выполнение скрипта каждые сутки который будет открывать базу, брать поле с сроком действия и вычитать единицу Вот бесплатный крон сервис
|
Цитата:
|
Цитата:
|
Убиваем MySQL без регистрации и СМС с помощью кода, опубликованного выше. Всё, что вам понадобится - пара тройка запросов к скрипту и вот ваша база данных уже забита абсолютно бессмысленными операциями - добро пожаловать в мир сетевых пробок. Да и вообще, PDO для двух запросов, серьезно?
|
PHP:
[CODE] if ( ! file_exists ( 'last_executed' ) ) file_put_contents ( 'last_executed' , '0' ) ; $executed_time = intval ( file_get_contents ( 'last_executed' ) ) ; if ( time ( ) - $executed_time connect_error ) exit ( http_response_code ( 500 ) ) ; $db_handle - > query ( 'DELETE FROM keys WHERE pDateEnd Время интервала можно отредактировать во второй строке. Это не даст слишком часто обращаться к базе данных из этого скрипта. |
Цитата:
|
Цитата:
|
Цитата:
Ок юзает он mysqli и дойдет до того, что надо массив в запрос засунуть bind_param не принимает массивы при выполнении запроса, Именные плейсхолдеры и прочий синтаксический сахар для новичка самое то, Вставка объектов напрямую в базу данных более удобно чем разбивать данные на переменные. Твои слова про "убийство базы данных" ничем не доказаны. Максимум плюс твоего кода это подключение в 1 строку к базе данных. Мой же метод достаточно просто написать и забыть о коннекте раз и навсегда Да и прочитав твой код я не думаю, что он разберется что есть что. Интересно, где ты в запросе DELETE увидел какую-то проблему с производительностью? Он Enterprise проект писать собрался с таким вопросом? После выполнения скрипта у PDO запрос автоматически закрывается. Зачем твой высер с циклом DELETE если это можно делать в 1 строку? https://forum.antichat.xyz/attachments/27714705/ Сначала вытащить ID у которых дата окончания а потом в цикле по удалять строки где есть этот ID ты в своем уме чел? Ты ему полную ***ню посоветовал. С таким подходом тебе только вордпресс ковырять Не умеешь делать - не советуй |
Цитата:
Если редактировать мой код под твой SQL-запрос, то он станет ещё в два раза короче. Всё стало только лучше. |
Цитата:
Как драйвер для работы влияет на саму работу SQL запроса? ты на языке передаешь подготовленные данные для выполнения и уже сама база данных выполняет работу. Если mysqli быстрее на 0,00001 сек то есть ли смысл использовать его? Большинство PHP программистов рекомендуют PDO, он проще и понятнее. Да, коннект я предоставил не сильно легкий для новичка, но это всяко лучше чем делать 2 запроса *** пойми для чего селект вообще всрался там. Зачем выгребать id и потом удалять если можно просто удалить ? Ответь на вопрос |
Цитата:
Цитата:
К тому же, сильного доверия к PDO у меня нет: один мой знакомый разработчик однажды напоролся на ситуацию, когда в определенный момент PHP скрипт, работающий на основе PDO, не смог подключиться к базе данных по какой-то причине, в следствие чего выдал ошибку, в которой раскрыл аутентификационные данные от базы данных. MySQLi таким точно не занимается, в этом уж я уверен. Кто знает какое ещё чудо PDO подкинет мне завтра. |
Цитата:
Если ты не знал, то драйвер собирает тело запроса и запрос выполняет БАЗА ДАННЫХ, а не пхп скрипт. Но если у тебя пхп скрипт выполняет запрос - соболезную. По твоему решению этой проблемы не заметно, что занимаешься пхп с 2016 года. Процедурный стиль это начерта не плюс mysqi а скорее его болячка. Кто будет использовать процедурный стиль в большом проекте как ты сказал ? в пдо все переменный автоматически экранируются, именуемые параметры для работы с большими запросами и куча других фич. |
1) Хорошо, будем игнорировать тот факт, что расширение может в любой неподходящий момент показать пользователю всю необходимую для авторизации в твоей базе информацию. Думаю, хорошее начало дня у кого-то будет, если такое случится. Да, можно выключить отображение ошибок в браузере, но с каких пор это решает проблему, которая выражена в этой уязвимости?
2) Отлично, докопался до формулировки – поздравляю, ты гений. В следующий раз поведаешь мне, что запросы обрабатывает веб-сервер, а не скрипт? 3) Про решение я тебе уже третий раз пишу, не вижу смысла повторяться ещё раз. 4) У каждого свои предпочтения, это во-первых, проект маленький, а не большой, это во-вторых - я не говорил, что это большой проект. Не вижу смысла в продолжении этой дискуссии, по кой она пошла по кругу. Ни одного аргумента, кроме того, что решение было плохое (так и есть), я не увидел. Всё остальное - пустые слова, не имеющие под собой никакого основания. Особенно второй пункт - это уже верх идиотизма. |
Цитата:
|
Цитата:
|
| Время: 04:01 |