HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 02.04.2021, 15:35
underpl1g
Познающий
Регистрация: 08.09.2020
Сообщений: 83
С нами: 2989121

Репутация: 13
По умолчанию

Как можно сделать срок действия ключа по дате/часам/минутам? То есть, я ввожу ключ(уже есть форма) и выбираю срок его действия, к примеру ключ будет работать о 05.04.2021, как это реализовать? Чтобы юзер потом не смог по нему авторизоваться...

Кто сможет - пишите в телеграмм/пм форума. Дам на чаек)
 
Ответить с цитированием

  #2  
Старый 02.04.2021, 16:22
Hatrig
Познающий
Регистрация: 23.05.2013
Сообщений: 38
С нами: 6826908

Репутация: 73
По умолчанию

Делаешь таблицу, например:

id | key | create_at | end_at

Дальше с формы отправляешь данные на функцию, которая заносит значения в базу данных, где ID - автоинкремент, key - твой ключ с формы, create_at - значение из php функции date() с типом timestamp, end_at - время из формы, которое ты указываешь вместе с ключем.

Там, где происходит авторизация, сверяешь текущее время и end_at из таблицы, если текущее больше - пишешь срок действия истек. Всё.
 
Ответить с цитированием

  #3  
Старый 02.04.2021, 20:52
underpl1g
Познающий
Регистрация: 08.09.2020
Сообщений: 83
С нами: 2989121

Репутация: 13
По умолчанию

Цитата:
Сообщение от Fermin  

Делаешь таблицу, например:

id | key | create_at | end_at

Дальше с формы отправляешь данные на функцию, которая заносит значения в базу данных, где ID - автоинкремент, key - твой ключ с формы, create_at - значение из php функции date() с типом timestamp, end_at - время из формы, которое ты указываешь вместе с ключем.

Там, где происходит авторизация, сверяешь текущее время и end_at из таблицы, если текущее больше - пишешь срок действия истек. Всё.
Кодом бы))
 
Ответить с цитированием

  #4  
Старый 03.04.2021, 02:50
underpl1g
Познающий
Регистрация: 08.09.2020
Сообщений: 83
С нами: 2989121

Репутация: 13
По умолчанию

Ап
 
Ответить с цитированием

  #5  
Старый 10.04.2021, 23:45
Livarka
Участник форума
Регистрация: 27.08.2017
Сообщений: 143
С нами: 4584912

Репутация: 83
По умолчанию

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

создание таблицы:





Код:
CREATE
TABLE
`
mpei
`
.
`
keys
`
(
`
id
`
INT
NOT
NULL
,
`
pName
`
VARCHAR
(
32
)
NOT
NULL
,
`
pKey
`
VARCHAR
(
32
)
NOT
NULL
,
`
pDateEnd
`
TIMESTAMP
NOT
NULL
)
ENGINE
=
InnoDB
;


pName ник или че хош вводи туда

pKey - сам ключ длинной 32 символа

pDateEnd время в Unix формате ( почитай че это)

DELETE WITH PDO:





Код:
function
connect
(
)
{
// коннект к твоей бд
$host
=
'127.0.0.1'
;
$db
=
'test'
;
$user
=
'root'
;
$pass
=
''
;
$port
=
"3306"
;
$charset
=
'utf8mb4'
;
$options
=
[
\
PDO
:
:
ATTR_ERRMODE
=
>
\
PDO
:
:
ERRMODE_EXCEPTION
,
\
PDO
:
:
ATTR_DEFAULT_FETCH_MODE
=
>
\
PDO
:
:
FETCH_ASSOC
,
\
PDO
:
:
ATTR_EMULATE_PREPARES
=
>
false
,
]
;
$dsn
=
"mysql:host=$host;dbname=$db;charset=$charset;port=$port"
;
try
{
return
new
\PDO
(
$dsn
,
$user
,
$pass
,
$options
)
;
}
catch
(
\
PDOException
$e
)
{
throw
new
\PDOException
(
$e
-
>
getMessage
(
)
,
(
int
)
$e
-
>
getCode
(
)
)
;
}
}
function
deleteOldKeys
(
)
{
$unixTimeNow
=
time
(
)
;
try
{
$con
=
$this
-
>
connect
(
)
;
$sql
=
"DELETE FROM keys WHERE pDateEnd 
prepare
(
$sql
)
;
$stmt
-
>
execute
(
[
$unixTimeNow
]
)
;
}
catch
(
Exception
$e
)
{
echo
$e
-
>
getMessage
(
)
;
}
}
deleteOldKeys
(
)
;
// ставишь в крон проверку каждую минуту и все


хз мог ошибиться где то, писал прям тут. А еще id надо AUTO INCREMENT присвоить - дерзай
 
Ответить с цитированием

  #6  
Старый 14.04.2021, 10:56
Quasper
Постоянный
Регистрация: 14.03.2015
Сообщений: 835
С нами: 5876832

Репутация: 118


По умолчанию

Самый легкий способ как по мне, поставить cron на выполнение скрипта каждые сутки который будет открывать базу, брать поле с сроком действия и вычитать единицу Вот бесплатный крон сервис
 
Ответить с цитированием

  #7  
Старый 14.04.2021, 11:53
Livarka
Участник форума
Регистрация: 27.08.2017
Сообщений: 143
С нами: 4584912

Репутация: 83
По умолчанию

Цитата:
Сообщение от Quasper  

Самый легкий способ как по мне, поставить cron на выполнение скрипта каждые сутки который будет открывать базу, брать поле с сроком действия и вычитать единицу Вот бесплатный крон сервис
ну я ему и кинул для крона метод
 
Ответить с цитированием

  #8  
Старый 14.04.2021, 12:05
Quasper
Постоянный
Регистрация: 14.03.2015
Сообщений: 835
С нами: 5876832

Репутация: 118


По умолчанию

Цитата:
Сообщение от Livarka  

ну я ему и кинул для крона метод
Ну твой способ будет с регулярным обновлением данных, что сказывается на трафике хоста, хотя он более оптимален но не так лёгок в понимании всего принципа. А я имел ввиду одну крон задачу в сутки которая просто вычитала бы единицу
 
Ответить с цитированием

  #9  
Старый 14.04.2021, 12:27
ImPasha
Познавший АНТИЧАТ
Регистрация: 28.10.2017
Сообщений: 1,778
С нами: 4495573

Репутация: 183


По умолчанию

Убиваем MySQL без регистрации и СМС с помощью кода, опубликованного выше. Всё, что вам понадобится - пара тройка запросов к скрипту и вот ваша база данных уже забита абсолютно бессмысленными операциями - добро пожаловать в мир сетевых пробок. Да и вообще, PDO для двух запросов, серьезно?
 
Ответить с цитированием

  #10  
Старый 14.04.2021, 12:37
ImPasha
Познавший АНТИЧАТ
Регистрация: 28.10.2017
Сообщений: 1,778
С нами: 4495573

Репутация: 183


По умолчанию

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



Время интервала можно отредактировать во второй строке. Это не даст слишком часто обращаться к базе данных из этого скрипта.
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.