Création d’un Script CGI/perl permettant la validation d’un nom d’utilisateur et d’un
Caractéristiques système : XP SP2 PentiumIII 866MHz et 128 Mo de ram
Serveur Apache HTTP Server 2.0.58
Active Perl 5.8.7 Build 815
Mon objectif est de protéger l’accès à certaines données personnelles continues dans un fichiers se trouvant sur le serveur local.
Chaque utilisateur se connecte avec son nom d’utilisateur et son mot de passe pour accéder à ses données personnelles.
Les noms d’utilisateurs ainsi que les mot de passe sont tous stockés dans un fichier que j’ai appelé access.txt
Voici mon code pour le formulaire à partir duquel tous les utilisateurs doivent saisir leur noms et mot de passe :je l’ai appelé access.html
Code:
1 2 3 4 5 6 7 8 9 10
| <html><head><title></title></head>
<body><table border="2" width="600" align="center"><tr><td><center><h2>Remplissez le Formulaire SVP!</h2></center>
<form name="layform4" action="http://localhost/cgi-bin/exercice4.pl" method="post">
<table align="center" cellpadding="10"><tr>
<td valign=middle" align="right"><b>Code d'utilisateur:</b></td><td valign=middle" align="left"><input type="text" name="utilisateur" value="Sober5"></td></tr>
<tr><td valign="middle" align="right"><b>Mot de passe:</b></td><td valign=middle" align="left"><input type="password" name="pwd" value="**********"></center></td></tr>
<tr><td colspan="2"><center>
<input type="submit" value="Entrer">
</center>
</td></tr></table></form></td></tr></table></body></html> |
Et voice mon code pour le script perl qui, à partir des données contenues dans le fichier access.txt,valide le nom d’utilisateur et le mot de passé saisi dans le formulaire :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| #!c:/perl/bin/perl.exe
use CGI 'param';
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
print "Content-type:text/html\n\n";
print "<html><body text=\"black\"><center><b>";
$code_utilisateur=param('utilisateur');
$password=param('pwd');
open (DATA,'../cgi-bin/access.txt') or die("Impossible de lire ce fichier, DESOLE");
while (<DATA>) {
$_ =~ s/[\r\n]//g;
$ligne = $_;
($code,$pwd,$prenom,$nom,$age,$sexe,$courriel,$ville,$pays ) = split(':',$ligne);
@user_parameters=split(':',$ligne);
if (($user_parameters[0] eq $code_utilisateur)&&($user_parameters[1] eq $password)){
print"<table border=\"4\" rules=\"none\" width=\"600\" align=\"center\"><tr><td colspan=\"2\" align=\"center\" border=\"0\">";
print "<h3><b>Informations concernant le code d'utilisateur :$code_utilisateur </b></h3></td></tr>";
print "<tr><td border=\"0\" align=\"right\"><h3><b>Nom :</b></h3></td><td align=\"left\"><h3>$nom</h3></td></tr>";
print "<td border=\"0\" align=\"right\"><h3><b>Prénom : </b></h3></td><td border=\"0\" align=\"left\"><h3>$prenom</h3></td></tr>";
print "<td border=\"0\" align=\"right\"><h3><b>âge : </b></h3></td><td border=\"0\" align=\"left\"><h3>$age</h3></td></tr>";
print "<td border=\"0\" align=\"right\"><h3><b>Sexe : </b></td> <td border=\"0\" align=\"left\"><h3>$sexe </h3></td></tr>";
print "<td border=\"0\" align=\"right\"><h3><b>Courriel : </b></h3></td> <td border=\"0\" align=\"left\"><h3>$courriel</h3></td></tr>";
print "<td border=\"0\" align=\"right\"><h3><b>Ville : </b></h3></td> <td border=\"0\" align=\"left\"><h3>$ville</h3></td></tr>";
print "<td border=\"0\" align=\"right\"><h3><b>Pays : </b></h3></td> <td border=\"0\" align=\"left\"><h3>$pays </h3></td></tr></table>
else{
print "<br>le code d'usager $code_utilisateur n\'est pas dans la base de donnees<br>";
}
close (DATA)/body></html>"; |
Mon blocage est que quand je valide le formulaire, si le nom d’utilisateur et le mot de passe sont correctes, les données personnelles s’affichent pour cet utilisateur mais l’ex écution se poursuit pour les autres membres et le programme affiche le code d’usager n’est pas dans la base de donnée.
Quelqu’un peut il m’aider!!!
Merci d’avance