Autor | Zpráva | ||
---|---|---|---|
Flek Profil |
#1 · Zasláno: 14. 8. 2011, 17:56:22
Dobrý den,
řeším problém, tedy jde spíše o neznalost, ale proto se obracím na vás. Při neúspěšném přihlášení, ukládám pokus o přihlášení do databáze (id, time(timestamp), ip, email). A já potřebuji spočítat pokusy o přihlášení dejme tomu v rozmezí jedné hodiny. Děkuji za pomoc. |
||
joe Profil |
1. Patří to do databáze
Moderátor Chamurappi: Přesunuto. 2. Nedělej to, není to dobrý nápad, protože IP adresa není jedinečná.
|
||
php Profil |
#3 · Zasláno: 14. 8. 2011, 18:27:29 · Upravil/a: php
Jestli to chápu dobře, podle nadpisu, tak to potřebujete udělat proto, aby když budete mít v databázy třeba 1000 neúspěšných přihlášení, tak aby se změnila captcha, protože nějakej robot jí dokázal obejít?
Myslím, že by bylo lepší rovnou automaticky vybrat, při jakémkoliv zobrazení stránky, náhodnou captchu nebo místo captchy použít otázku - přes tu robot nedokáže projít, teda ještě sem se nesetkal s tím, že by nějaký prošel. Pak si můžu definovat víc otázek a náhodně je zobrazovat a dokuť člověk neodpoví správně na otázku, tak neodesílat formulář do DB. |
||
Flek Profil |
#4 · Zasláno: 14. 8. 2011, 18:37:16
joe:
1. - Omlouvám se, chtěl jsem to počítat pomocí PHP, poté mi došlo že to nejspíš pujde i pomocí MySQL a bude to nejspíš výhodnější. 2. - Vím že není jedinečná, mám tam ještě user_agent, jde o malinkou stránku. php: Ne, ta captcha tam defaultně není, zobrazí se až po 5 neúspěšných přihlášení. |
||
php Profil |
#5 · Zasláno: 14. 8. 2011, 18:44:29
joe:
„2. Nedělej to, není to dobrý nápad, protože IP adresa není jedinečná.“ K tomu bych jen doplnil, že ikdyž IP adresa není jedinečná, tak se dá snadno zjistit, u většiny případů, v jakým rozsahu IP adres se dotyčný může pohybovat, a dokut si nezmění poskytovatele internetu, tak můžu celý tenhle rozsah IP adres zakázat, dá se to ovšem použít jen ve specifických případech, tzn. že nemůžu zakázat rozsah IP adres, který popužívá třeba T-mobile pro ČR, pokud budu mít web určený český veřejnosti. A taky to není úplně šťastný řešení, už jen kvůli tomu, že IPv4 má až 4 228 250 625 kombinací nemluvě o IPv6, ta se ovšem zatím ještě moc nepoužívá, ale do blízké budoucnosti je nutností. |
||
Marek88 Profil |
#6 · Zasláno: 14. 8. 2011, 18:47:54 · Upravil/a: Marek88
A co kdybyste mu radši odpověděli na otázku...?!
[#1] Flek: Tedy máš dvě verze řešení pro dva druhy timestamp. Je to teda příklad na mazání starších než... Ty chceš vybrat (takže SELECT) novější než..., takže přehodíš znaménka neroznosti a upravíš si čas... EDIT: Do WHERE je ještě potřeba doplnit porovnání IP a emailu... Asi nějak takhle: SELECT count(*) as pocet FROM tabulka WHERE time > (UNIX_TIMESTAMP() - 3600) AND ip="$ip_uzivatele" AND email="$prihlasovaci_email"; SELECT count(*) as pocet FROM tabulka WHERE time > (NOW() - INTERVAL 60 MINUTE) AND ip="$ip_uzivatele" AND email="$prihlasovaci_email"; |
||
Flek Profil |
#7 · Zasláno: 14. 8. 2011, 19:12:30
Marek88:
Děkuji, druhý příklad se mi podařilo zprovoznit. SELECT count(*) as pocet FROM tabulka WHERE time > (NOW() - INTERVAL 60 MINUTE) AND ip="$ip_uzivatele" AND email="$prihlasovaci_email"; Ještě jednou díky. :) |
||
Časová prodleva: 14 let
|
0