• User

    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.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(){
    ?>
    &nbsp;<p>&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </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">&nbsp; </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


  • Super User

    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!


  • User

    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


  • User

    ...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 eseguito

    dopodiche 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


  • User

    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