Form Autenticazione

toposauro

Nuovo Utente
12 Apr 2007
9
0
0
Ciao ragazzi,

sono un principiante di Php e ho un problema che non riesco a risolvere e cioè:

devo consentire di raggiungere una determinata pagina per il download solo ad utenti registrati che hanno nome utente e password.

Queste informazioni (utente e password) sono scritte in un file di testo e sono separate dal carattere ":", per es. tizio:caio per nome utente e password;

Ho pensato di leggere il file di testo delle password e di mettere le righe in un array in questomodo:

$script = explode("\n", file_get_contents("/path/filepassword"));

se questo fosse corretto come devo fare per ciclare nell'array e verificare ad ogni ciclo se il nome utente e la password digitata dall'utente esiste all'interno del file?

Poi vorrei che il numero di tentativi non fosse superiore a 3 e nel caso di 3 tentativi non riusciti che mi scrivesse un messaggio, mentre ovviamente se il nome utente e password esistono mi aprisse la pagina del download.

Un grazie a chi saprà darmi una mano.

Ciao.
 
un gran bel metodo...

ma consiglierei di investire le proprie energie in un'applicazione di tipo PHP+MySQL....

metti caso che qualcuno, sta tracciando questa comunicazione, e ti conosce, ora sa come gestisci le password, andrà alla ricerca del file di testo e scoprirà tutte le tue password!!!!

okkey, basta allarmismi e rispondiamo...

PRIMA COSA...
il sistema che sto per dirti funziona (nella mia mente...) ma opterei di qualcosa di più sicuro...

Utilizziamo la funzione "ereg("valore_da_verificare", "marea_di_testo");"
questa funzione verifica che un determinato valore_da_verificare sia presente in una marea_di_testo

esempio...

<?php

$Testo = "Ciao a tutti il mio nome è Emanuele e provo a spiegarvi la funzione ereg....";
$Manu = ereg("i il mio nome è Ema",$Testo);
if ($Manu){
echo "Ok ti ho trovato...";
} else {
echo "Ma dove sei???!!!";
}

?>

lo scriptino cercherà in Testo quella stringhetta (che può essere anche una variabile..) se la trova bene, se no ahimé...

come fare dici per utilizzarla?
prima cosa studiatela nel manuale di php: http://it.php.net/ereg e confrontala con quella che non tiene conto delle maiuscole e minuscole http://it.php.net/eregi

dopodiché:

# dopo ti spiego...
session_start();

if ($_SESSION[tentativo] == 3){
mail("tuaemail@esempio.it", "Un utente pazzo ha cercato di accedere con i dati sbagliati per 3 volte", "Ciao amministratore\r\nqui qualcosa non quadra: ci sta un tipo che vorrebbe entrare nella tua area riservata, ora ci ha provato con $_POST[Username] e $_POST[Password]...chissà cosa si inventerà adesso...ciau!");
}

# PRENDIAMO DAL PROBABILE FORM DOVE INSERIRE USERNAME E PASSWORD I DATI...
$Username = $_POST[Username];
$Password = $_POST[Password];

# FACCIAMO UN MINIMO DI PULIZIA
#consiglio htmlentities, addslashes, e verifica se i dati sono vuoti...

$Username = htmlentities($Username);
$Password = htmlentities($Password);

# creiamo il formato che ci serve come verifica nel tuo database testuale....
$Verificami = $Username . ":" . $Password

# adesso $script è una variabile array...
$script = explode("\n", file_get_contents("/path/filepassword"));


# APRIAMO UN CICLO PER OGNI SINGOLO VALORE DI SCRIPT...
for ($i=0; count($script) > $i; $i++){

if (ereg($Verificami, $script[$i])){
#TUtto ok, utilizzi un redirect con header("Location: download.php o altro...")
echo "Tutto ok!!! lo conosco, è amico mio...";

} else {

# potresti salvare qui una sessione con il numero di tentativi...
if (!session_is_registered(tentativo)){
$_SESSION[tentativo] = 0;
} else {
$_SESSION[tentativo] = $_SESSION[tentativo]+1;
}


}
}

il codice è scritto di getto, dovrebbe essere ok, provalo e se non funziona posta gli errori che riscontri e ne discutiamo...

saluti
Manu
 

Discussioni simili