Problema con form per accesso area riservata ai soci

mediasteno

Utente Attivo
25 Gen 2010
120
0
0
Ho creato questo form per accedere ad un'area riservata solo ai soci
PHP:
    <h2>Area riservata ai soci</h2>

   <h3>Login:</h3>
       
<form id="contact" action="<?php echo $PHP_SELF;?>" method="post">
    <div class="form_settings">
      <p><span>Username:</span><input class="contact" type="text" name="user" value="<?php echo $user; ?>" /></p>
      <p><span>Password:</span><input class="contact" type="password" name="password" value="<?php echo $psw; ?>" /></p>
      <p style="padding-top: 15px"><span>&nbsp;</span><input class="submit" type="submit" name="login" value="login" /></p>
    </div>
</form>

<?php
     if((isset($_POST["user"])) &&  (isset($_POST["password"])))
            {
              $username = $_POST["user"];
              $password = sha1($_POST["password"]);

                    $textfile = fopen ("soci.txt", "r");
                    while ($rigafile = fgets($textfile,1024) ) {
                           $campiriga = explode("|",$rigafile);
                           $file_username = $campiriga[1];
                           $file_password = $campiriga[2];

             if (($file_username == $username) and ($file_password == $password))
                {
                  echo "<h3>Pagina Protetta</h3>";
                  break;
                }
             else  {echo "<div class='post'>La tua username  e password non &egrave; valida o non hai le credenziali per accedere all&acute;area riservata ai soci!</div>";}
                                                               }
               fclose($textfile);
             }
?>
 </div>

il problema che si presenta è che il codice fa il confronto di ogni file del database testuale e mi stampa a video l'alternativa
cioè ho questa situazione:
img.jpg

Io invece devo ottenere come risultato che fa il confronto della username e password inserita nel modulo con quelle del database testuale e se ci sono due dati identici mi stampa la pagina protetta, altrimenti mi stampa solo una volta la tua user e psw non sono corrette.
 
Lo avevo già fatto ed ora ho riprovato ma chiudendo il while prima del secondo if (dopo $file_password = $campiriga[2]:) ottengo che viene analizzata soltanto l'ultima riga del database testuale.
Cioè rimanda alla pagina protetta solo se user e password inseriti nel modulo corrispondono a quelli dell'ultima riga. Se inserisco user e password presenti ad esempio nella seconda riga, si ha il messaggio "User e password non validi".
Ho capito che è un problema del ciclo while ma non capisco come risolverlo
 

Discussioni simili