Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

Maxim 3 incercari
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Incepători
Subiectul anterior :: Subiectul următor  
Autor Mesaj
vlivius1



Data înscrierii: 12/Aug/2007
Mesaje: 219
Locație: Bucuresti

Trimis: Sâm Iun 07, 2008 5:56 pm    Titlul subiectului: Maxim 3 incercari  

Am citit in tutorialul lui oriceon despre contorizarea incercarilor de logare cu ajutorul sesiunilor. Daca o persoana incerca sa le se logheze si nu stie parola sau userul la a 3-ia incercare sa-i dea eroare.

Doresc cateva informatii despre logica cum ar trebui sa lucreze scriptul cu sesiunea pentru a face contorizare.
Sus  
tanatos



Data înscrierii: 06/Iun/2008
Mesaje: 62
Locație: Iasi

Trimis: Sâm Iun 07, 2008 6:37 pm    Titlul subiectului:  

pai eu zic k e simplu ... salvezi intro variabila $_SESSION['nrincercari'] si cresti variabila aia la fiecare incercare nereusita.Verifici la inceputul paginii la fiecare reload daca variabila este == cu 3 si daca da afisezi mesajul.Best regards
Sus  
vlivius1



Data înscrierii: 12/Aug/2007
Mesaje: 219
Locație: Bucuresti

Trimis: Sâm Iun 07, 2008 7:53 pm    Titlul subiectului:  

M-am blocat la incrementarea $_session['incerci']

...
if(mysql_num_rows($rezultat) == 1){

$_SESSION['logat'] = 'Da';
echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL=admin/indexs.php">';

}else{

$_SESSION['logat'] = 'Nu';
if($_SESSION['logat']) { $nr = $_SESSION['incercari'] = '1';



}



}
...



Daca fac cu cookie, nu este mai bine ca imi este mai usor?
Sus  
tanatos



Data înscrierii: 06/Iun/2008
Mesaje: 62
Locație: Iasi

Trimis: Sâm Iun 07, 2008 8:11 pm    Titlul subiectului:  

din cate spune lumea cookie-urile sunt mai vulnerabile...deci foloseste session daca tot ai inceput cu asta
Sus  
tanatos



Data înscrierii: 06/Iun/2008
Mesaje: 62
Locație: Iasi

Trimis: Sâm Iun 07, 2008 8:11 pm    Titlul subiectului:  

sa nu uiti sa cresti numarul de incercari daca nu s-a logat ... k nu am vazut prin codul tau asta
Sus  
olympia



Data înscrierii: 26/Mai/2008
Mesaje: 151

Trimis: Dum Iun 08, 2008 1:03 am    Titlul subiectului:  

ideea ar fi cam asta:

Cod:
session_start(); // nu uita sa pornesti sesiunea
if(mysql_num_rows($rezultat) == 1 && $_SESSION['logat'] != 'banat') {
$_SESSION['logat'] = 'Da';
header('Location: admin/index.php');
}else{
if (!isset($count))
         {
          $count = 0;
         }
$_SESSION['logat'] = 'Nu';
     }
if($_SESSION['logat'] != 'Da') {
$count++;
}

if ($count>2)
{
echo "ce vrei tu";
$_SESSION['logat'] = 'banat'; //il trimiti la o sesiune noua sau ce vrei
exit;
//sau header (Location: etc.
}



am mers pe ideea ta, desi modul asta de autentificare e putin complicat. e suficient sa inregistrezi sesiunile si sa le verifici ulterior fara $_SESSION['logat'] = 'Nu' (mai simplu $_SESSION['logat'] != 'Da'). indicat e sa mai inregistrezi in sesiuni si niste kestii encriptate in cazul unei autentificari reusite, dupa parerea mea.

nu e rau sa bagi si limit 1 in query.

ps in functie de mecansimul de autentificare pe care l-ai proiectat, nu uita sa reincarci formularul dupa fiecare incercare nereusita, dar nu cu header(Location:... , dk ai php_self in form. dk nu merge, il mai adaptezi si tu :D
Sus  
vlivius1



Data înscrierii: 12/Aug/2007
Mesaje: 219
Locație: Bucuresti

Trimis: Dum Iun 08, 2008 12:49 pm    Titlul subiectului:  

Din cauza ca eu defineam $nr = 0 nu imi functiona incrementarea pentru ca la fiecare accesare a scriptului imi lua mereu valoarea 0 si mai incrementa cu 1.

Asa ca am facut asa : $nr = $_session['nr'];


....
if(mysql_num_rows($rezultat) == 1){

$_SESSION['logat'] = 'Da';
echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL=admin/indexs.php">';

}else{

$nr = $_SESSION['nr'];

if($_SESSION['logat'] != 'Da') { $nr++; }

$_SESSION['nr'] = $nr;
if($nr > 2) {echo 'BANAT';}

echo $nr;

function redirect() {
echo "<meta http-equiv=\"refresh\" content=\"1;URL=test.php\">\n";
exit();
}
redirect();


}
Sus  
alexandru_24



Data înscrierii: 11/Iul/2006
Mesaje: 95

Trimis: Dum Iun 08, 2008 1:18 pm    Titlul subiectului:  

Si daca un user da delete la sessiuni (cookie etc...)? O poate lua de la cap, corect?
Eu as merge pe versiune severa, adica as face un tabel, as contoriza acolo numarul de incercari, si in fiecare zi la ora x cu un cron job, as sterge intrarile din acel tabel, stiu ca e mai complicat, dar este varianta cea mai securizata ;)
Sus  
vlivius1



Data înscrierii: 12/Aug/2007
Mesaje: 219
Locație: Bucuresti

Trimis: Dum Iun 08, 2008 1:36 pm    Titlul subiectului:  

Daca ii inregistrezi ip-ul in baza de date pentru verificare el poate sa folseasca proxy. Dar este putin mai complicat.

Oricum este mai bine asa decat cum incerc eu sa fac, momentan sunt incepator mai tarziu o sa fiu si eu mai avansat :D
Sus  
alexandru_24



Data înscrierii: 11/Iul/2006
Mesaje: 95

Trimis: Dum Iun 08, 2008 1:40 pm    Titlul subiectului:  

Fa cu tabel cum spun eu, o sa fii multumit. ;)
Sus  
olympia



Data înscrierii: 26/Mai/2008
Mesaje: 151

Trimis: Dum Iun 08, 2008 2:09 pm    Titlul subiectului:  

deci, de acord cu Alexandru - si lucrul cu sesiuni e mai sigur in DB. La un moment dat, orice webmaster va ajunge sa faca tabele cu suspectii care dau tarcoale saiturilor sale, si va inregistra nu doar ip-uri in db.

noi am discutat problema la nivelul la care a fost pusa. in exemplul pe care l-am dat io, lipseste tocmai inregistrarea sesiunii, pentru ca acolo sunt niste nuante, in functie de cum e apelat scriptul, cu php_self sau in fisier diferit. dk e cu php_self, nici macar nu mai e nevoie de sesiune, altfel sesiunea count s-ar incrementa in loop la "n" si ar da ban dupa prima ratare. apoi, dupa 2-3 incercari, mai bine bagi un captcha de inca 2-3 ori inainte sa ii dai ban, dupa parerea mea.

cu cron job-urile ce faci daca ai un hosting najpa? tre' sa folosesti pseudo-cron-uri.

si toate astea trebuie corelate cu masuri de securitate cel putin la fel de importante, cum ar fi blocarea accesului direct la scriptul care proceseaza logarea. pentru ca vine un bot care nu stie js :D si iti injecteaza mai stiu io ce pe acolo, de aceea si limit 1 in select la autentificare ar trebui pus by default.
Sus  
vlivius1



Data înscrierii: 12/Aug/2007
Mesaje: 219
Locație: Bucuresti

Trimis: Dum Iun 08, 2008 2:25 pm    Titlul subiectului:  

OK am inteles, thks pentru sfaturi.
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Incepători
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community