Как установить куки на 20 минут и проверить, не истек ли срок их действия - PullRequest
3 голосов
/ 21 декабря 2011

Я думал о системе, которая позволит пользователям публиковать только 1 статью за 20 минут.Я не пользуюсь системой-участником, поэтому я подумал, что могу установить cookie на 20 минут.И когда пользователь что-то публикует, проверьте, установлен ли cookie, если да, покажите сообщение типа «Разрешено только 1 сообщение за 20 минут», если оно не задано, чем поместите материал в базу данных.

Я относительно новичок в php и donНе знаю, как установить куки, я попытался посмотреть руководство по куки-файлам php.net, но оно меня слишком запутало.Так что вы можете показать, как установить безопасный cookie на 20 минут и проверить, установлен он или нет.Может быть, у вас есть лучшие предложения, которые будут работать вместо файлов cookie и т. Д.

Спасибо.

Ответы [ 4 ]

12 голосов
/ 21 декабря 2011

См. Эти функции:

Чтобы установить cookie на 20 минут, вы можете сделать это:

setcookie("postedArticle", true, time() + (60 * 20)); // 60 seconds ( 1 minute) * 20 = 20 minutes

Проверьте, установлен ли cookie:

if(isset($_COOKIE['postedArticle']) && $_COOKIE['postedArticle'] == true)
{ 
    // IS SET and has a true value
}    
2 голосов
/ 21 декабря 2011

Использование файлов cookie для этой цели не имеет смысла.
Если вы говорите о зарегистрированных пользователях, вы должны хранить такую ​​информацию на стороне сервера.
Но если это анонимные пользователи, вы не можете запретить им публиковать сообщения каждую секунду. Чтобы удалить куки из браузера, достаточно нажать одну кнопку.

1 голос
/ 21 декабря 2011

Как отмечают другие, метод cookie для такой работы бесполезен. Таким образом, шифрование также является пустой тратой ресурсов.

Вы должны вставить CAPTCHA подтверждение, если вы хотите предотвратить спам

То, что вы пытаетесь сделать, это готовый код.

Я включил шифрование значений cookie, чтобы никто не мог изменить значение cookie.

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

<?php
$cookiename="yourcookiename";
$mysalt="secret salt";
function encrypt($text, $salt) 
{ 
    return trim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $salt, $text, MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND)))); 
} 

function decrypt($text, $salt) 
{ 
    return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $salt, base64_decode($text), MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND))); 
}

$read="false";
if(isset($_COOKIE[$cookiename]))
    {$read=decrypt($_COOKIE[$cookiename], $mysalt);
    }
if($read=='true')
{
//your stuff
setcookie($cookiename, encrypt("true", $mysalt), time()+20*60);
}
else {
//can't post
}

?>
0 голосов
/ 21 декабря 2011

установить как

setcookie("TestCookie", $value, time()+1200);

проверить через 20 минут, истечет ли он, чем он работает, иначе нет ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...