Твърде много грешни опити, потребителят е заключен за 5 ми

nom3r1

Registered
Някой може ли дами даде читав код, с който да направя подобно кодче? :)

При 5 опита с грешна парола да изпише ->

- твърде много грешни опити, потребителят е заключен за 5 минути


Мисля си за следното ->

таблица
id | uid | date
1 | 2 | 22.04.2011 12:22
2 | 2 | 22.04.2011 12:22
3 | 2 | 22.04.2011 12:22
4 | 2 | 22.04.2011 12:22
5 | 2 | 22.04.2011 12:22


и потребител с ID номер 2 се заключва за 5 минути, тоест да не може да се впише дори и при правилна парола. Което най-вероятно ще стане с една заявка за проверка на записите в таблицата ->

$query = mysql_query("SELECT * FROM `tablica` WHERE uid='$uid' AND id = '5'");

или нещо от този вид, НО след т'ва как ще се изчиства таблицата, като минат петте минути? :)

Поздрави,
- nom3r1 :?:
 
е направи нещо с сесии бе... в една сесия да се увеличава бройката на опитите и ако е броя е 5 да прави бисквитка за 5 мин и с една проверка

PHP:
if(isset($_COOKIE['locked'])) {
mysql_query("UPDATE table SET locked='yes' WHERE name='$name'")or die(mysql_error());
}
else {
mysql_query("UPDATE table SET locked='no' WHERE name='$name'")or die(mysql_error());
session_destroy();
}


нещо подобно...
 
IzKuFeLiQqQqQ каза:
е направи нещо с сесии бе... в една сесия да се увеличава бройката на опитите и ако е броя е 5 да прави бисквитка за 5 мин и с една проверка

PHP:
if(isset($_COOKIE['locked'])) {
mysql_query("UPDATE table SET locked='yes' WHERE name='$name'")or die(mysql_error());
}
else {
mysql_query("UPDATE table SET locked='no' WHERE name='$name'")or die(mysql_error());
session_destroy();
}


нещо подобно...

Да, но така потребителя ще може просто да си delеte бизквитките и пак може да започне с логването.

Моето предложение е да брой с $_SESSION колко пъти има грешен вход и след това в специална таблица да вписваш, user_name с което се опитва да се логне човека, час и минути (когато става заключването) след което при логване просто да мине тази таблица и да провери дали са минали 5-10-15 минути от заключването и ако да , да изстрие записа от нея.
 
е аз г/д това казах бе... ти си заменил бисквитката ми с БД...

аз даже май измислих логиката(ще го направя с БД)
PHP:
<?
$username = $_POST['username'];
$_SESSION['gre6ki']=0;//начална стойност на сесията
$error = 1;//като има грешка $error да е 1(ти си го сложи на проверките)
if($error==1) {
$_SESSION['gre6ki']=$_SESSION['gre6ki']+1;
}
if($_SESSION['gre6ki']==5) {
$vreme = date("Y-m-d H:i:s",strtotime("+10 minutes"));
mysql_query("INSERT INTO gre6ki_logvane (username,vreme) VALUES($username,$vreme)")or die(mysql_error());
echo "blokiran za 10 min";
}
mysql_query("DELETE FROM gre6ki_logvane WHERE NOW()>vreme AND username=$username")or die(mysql_error());
?>

горе долу така ще е ... пооправи си го кода :P
 
Моето предложение си е през ДБ то че така блокажа за потребителя не зависи от компютъра.

просто слягаш едина проверка, за която ти трябват 2 полета в потребители ( брой грешни опити) и (последен грешен опит)

PHP:
$query = mysql_query("SELECT * FROM `tablica` WHERE uid='$uid'");
изваждаш бройката на грешните опити и с

if ($boikata > 5) { echo " Акаунта е блокиран за .... минути")
elseif ($curent_time < $last_break_time+minutite za 4akane){ echo " Акаунта е блокиран за .... минути")
else {
логин кода с две допълнения в часта за грешна парола ъпдеитваш бройката грешни опити както и времето на последната грешка . А в часта на успешен логин занулява полето с гршките }
 

Back
Горе