- Home
- Categorie
- Coding e Sistemistica
- PHP
- Area riservata - Limitazione tentativi inserimento
-
Area riservata - Limitazione tentativi inserimento
Ciao a tutti,
premetto che non sono molto pratico di Php, anzi direi quasi per niente, e per questo vi ringrazio tantissimo in anticipo dell'aiuto che potrete darmi.
Nel mio sito sto creando un'area riservata con un file login.php e utenti.php
i loro codici sono i seguenti:
Login.phpdiv align="center"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Area Riservata - Login</title> </head> <? function check($user,$password){ include("../pagine_riservate/utenti.php"); foreach($utenti as $user_ => $password_){ if (($user==$user_) AND ($password==$password_)) { return true; } } return false; } function form_login(){ ?> <p> </p> <body background="../../images/sfondi/sfondo_area_riservata/sfondotabella.jpg"> <table bgcolor="#CC9900"> <tr> <td style="border-style: double; border-width: 4px" bordercolor="#C0C0C0"> <form id="login" action="<?=$PHP_SELF?>" method="post" > <p align="center"> <br> <font color="#FFFFFF" face="Arial">User</font><font color="#FFFFFF" face="Andale Mono"> </font> <font face="Andale Mono"><input type="text" name="utente" size="20"> <br> <font color="#FFFFFF" face="Arial">Password</font><font color="#FFFFFF" face="Andale Mono"> </font> <input type="password" name="password" size="20"> <br> <input type="submit" value=" OK "> </p> </form> </td> </tr> </table> <? } if(isset($_POST["utente"])){ if (check($_POST["utente"],$_POST["password"])){ session_start(); $_SESSION["utente"] = $_POST["utente"]; $_SESSION["password"] = $_POST["password"]; if($_POST["utente"] == "pippo"){include("../pagine_riservate/pippo.php");} if($_POST["utente"] == "pepo"){include("../pagine_riservate/pepo.php");} }else{ form_login(); echo "<br>\n"; echo "User o Password errati"; echo "<br>\n"; echo "accesso non eseguito"; } }else{ form_login(); } ?> </body> </html> </div>
utenti.php
<? /* Per aggiungere un nuovo utente scrivere: $utenti["nome_utente"] = "password"; Ad esempio, se si vuole aggiungere l'utente mario con password rossi, scrivere: $utenti["mario"] = "rossi"; */ $utenti["pippo"] = "pippo"; $utenti["pepo"] = "pepo"; ?>
arrivo al dunque...
quello che non riesco proprio a fare è un controllo che mi permetta di limitare il numero di tentativi di accesso a 4-5 e quindi far scomparire la maschera di inserimento user e password al cui posto visualizzare un messaggio del tipo NUMERO MASSIMO DI TENTATIVI RAGGIUNTO.Qualcuno può gentilmente aiutarmi?
Grazie mille a tutti...
Kite
-
Ciao kitemm e benvenuto nel forum GT,prova così:
[php]<div align="center">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Area Riservata - Login</title>
</head>
<?function check($user,$password){
include("../pagine_riservate/utenti.php");
foreach($utenti as $user_ => $password_){
if (($user==$user_) AND ($password==$password_)) {
return true;
}
}
return false;
}function form_login(){
?>
<p> </p>
<body background="../../images/sfondi/sfondo_area_riservata/sfondotabella.jpg"><table bgcolor="#CC9900">
<tr>
<td style="border-style: double; border-width: 4px" bordercolor="#C0C0C0">
<form id="login" action="<?=$PHP_SELF?>" method="post" >
<p align="center">
<br>
<font color="#FFFFFF" face="Arial">User</font><font color="#FFFFFF" face="Andale Mono"> </font>
<font face="Andale Mono"><input type="text" name="utente" size="20"> <br>
<font color="#FFFFFF" face="Arial">Password</font><font color="#FFFFFF" face="Andale Mono"> </font>
<input type="password" name="password" size="20"> <br>
<input type="submit" value=" OK ">
</p>
</form></td>
</tr>
</table><? }
if(isset($_POST["utente"])){
if (check($_POST["utente"],$_POST["password"]) OR $_SESSION[tentativi] <= 5){
session_start();
$_SESSION["tentativi"] = 0;
$_SESSION["utente"] = $_POST["utente"];
$_SESSION["password"] = $_POST["password"];
if($_POST["utente"] == "pippo"){include("../pagine_riservate/pippo.php");}
if($_POST["utente"] == "pepo"){include("../pagine_riservate/pepo.php");}
}else{
$_SESSION[tentativi]++;
form_login();
echo "<br>\n";
echo "User o Password errati oppure hai esaurito il numero di tentativi a disposizione.<br />";
echo "Attualmente hai utilizzato <b>". $_SESSION[tentativi]."</b>tentativi dei 5 a disposizione";
echo "<br>\n";
echo "accesso non eseguito";
}}else{
form_login();}
?></body>
</html>
</div>[/php];)
Fammi sapere.
Ciao!
-
ciao Probid,
grazie mille per la risposta così tempestiva...
ho provato il codice che hai postato...non funziona..
ossia l'accesso all'area riservata lo esegue benessimo, ma quando provo ad inserire il primo user e password errati mi da una pagina completamente bianca senza niente dentro....
Poi volevo anche chiederti se un'area riservata fatta in questo modo, con apertura di pagine _blank tipo popup senza barre di navigazione e toolbar etc..è abbastanza sicura?
grazie mille
Kite
-
...ho provato a sostituire in questo punto..
if (check($_POST["utente"],$_POST["password"]) OR $_SESSION[tentativi] <= 5)
L'operatore Or con And...il risultato è che al primo tentativo errato esce scritto
User o Password errati oppure hai esaurito il numero di tentativi a disposizione.
Attualmente hai utilizzato 1tentativi dei 5 a disposizione
accesso non eseguitodopodiche provando a inserire nuovamente altri user e pass errati il risulatato è sempre uguale...il numero di tentativi non aumenta...è come se
$_SESSION[tentativi]
non aumenti con il comando
$_SESSION[tentativi]++
a dimenticavo...al''inizio del codice c'è anche questa stringa
<? if (isset($_COOKIE[session_name()])) setcookie(session_name(), '', time() - 90000); ?>
non so se possa influire....
grazie mille dell'aiuto che mi stai dando...
Kite
-
se ti può essere di aiuto ti posto l'indirizzo del sito dove sto provando l'area riservata:
parmarealestate.altervista.org
prova a cliccare su area riservata e vedi cosa succede...
ciao..
Kite