Je suis étudiant et apprends le PHP et dois faire un site web sur le cinéma type blog ou des utilisateurs peuvent s'inscrire, se connecter et poster des critiques sur des films ou commenter des critiques déjà postées.
Or, l'une de nos consignes est de stocker toutes nos données dans des fichiers .txt ... Y compris les pseudonymes, mots de passe, courriel, etc...
Mon problème se situe donc au niveau de la connexion ; je m'explique.
Lorsqu'un utilisateur s'inscrit sur le site, chacune des données (donc pseudo employé, mot de passe pour la connexion, adresse courriel, etc) est reçue dans un fichier texte diffèrent selon le code suivant (le nom de fichier diffère pour chaque variable, le stockage est le même) :
$f = fopen("pseudo.txt","a");
fputs($f,"$pseudo\r\n");
fclose ($f);
J'ai bien vérifié ce code, il stocke correctement les données dans les fichiers.Ensuite, pour se connecter, l'idée était que l'utilisateur rentre son mot de passe et son pseudo et qu'ensuite le fichier pseudo.txt puis code.txt soient parcourus pour retrouver le numéro de ligne correspondant au pseudo et au code rentrés s'ils existent dans le fichier. Si les deux numéros sont les mêmes, il s'agit du bon utilisateur, sinon, il y a erreur de pseudo ou de mot de passe. Voici mon code :
<?php
$pseudo = $_GET['pseudo'];
$code = $_GET['code'];
$tab1 = file("pseudo.txt");
echo "$pseudo : pseudo reçu <br />";
for ($i=0; $i<count($tab1); $i++) {
if ($pseudo == $tab1[$i]) //ici, on récupère le numéro de la ligne si le pseudo correspond à la case du tableau
{
$ligne = $i; }
echo "$tab1[$i]";
echo "$i";
}
echo "$ligne"; // c'est ici que ça ne fonctionne pas...
$tab2 = file ("code.txt");
if (isset($ligne)) //si ligne a été défini ...
{
for ($i=0; $i<count($tab2); $i++) {
echo "$i";
if (($code == $tab2[$i]) && ($i == $ligne)) { //si le code correspond à celui rentré et si le numéro de ligne correspont à celui...
echo "Vous vous êtes bien connecté $pseudo, continuez bien votre visite!!<br /> ";
echo "<a href=Accueil.php?pseudo=$pseudo>Retour à la page d'accueil</a> "; } //enregistré, l'utilisateur est "connecté".
} }
else { //sinon, on affiche un lien vers la page précédante.
echo "Votre mot de passe ou votre nom d'utilisateur doit être éronné<br /> ";
echo "<a href=identification.html>Veuillez les saisir à nouveau.</a>";
}
?>
J'ai essayé en plaçant des "echo" un peu partout de trouver qu'est-ce qui n'allait pas... Et visiblement, le problème se situe au niveau de la variable $ligne qui n'est pas défini. Ce qui signifie (pour moi) que le pseudo (même s'il est correct) n'est pas reconnu dans le fichier texte...Cela voudrait dire que même si le pseudo est correct, $pseudo est différent de $tab1[$i], alors que chaque case du tableau est écrite correctement...
Question : comment faire pour lire correctement les données du fichier ?
Nota Bene : j'ai essayé d'utiliser la fonction explode mais le résultat n'était pas plus efficace, malheureusement.
Enfin, si cela vous intéresse ou que vous vous demandez comment je compte maintenir la connexion, je génèrerais les liens vers les pages dynamiquement en récupérant le pseudo de l'utilisateur avec $_GET['pseudo'] soit: echo "<a href=\"accueil.php?pseudo=$pseudo\">"
Je sais qu'il y existe des manières plus simples et plus efficaces de traiter des connections ne serait-ce qu'avec des cookies, mais notre prof veut que nous utilisions des fichiers textes.
J'espère que vous pourrez m'aider, et vous souhaite à tous une bonne soirée!