|
|
|
|
ClaudeDavy, le lundi 12 février 2007 à 13:51:26
<?php
session_start();
?>
<html>
<head>
<title>Inscription</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="../css/nouveau.css">
</head>
<body bgcolor="#ffcc99">
<?
echo "<h1>Nouveau Membre</h1>";
?>
<form action="../index.php" method="post">
<input type="submit" value=" Retour "></form>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Votre prénom(obligatoire) :<br>
<input type="text" name="Nom"><br>
Mot de passe(obligatoire) :<br>
<input type="password" name="Mdp"><br><br>
Email(Pas obligatoire):<br>
<input type="text" name="email"><br><br>
<input type="submit" value="S'inscrire"></form>
<?php
if (isset($_POST["Nom"])||(isset($_POST["Mdp"])))
{
@$nom = $_POST['Nom'];
@$motdepasse = $_POST['Mdp'];
@$email = $_POST['email'];
$fichier="../Identification/login.txt";
$contenu=file($fichier);
// La variable commentaire est-elle définie ?
if ($nom != "" && $motdepasse != "")
{
foreach($contenu as $indice)
{
$indice = rtrim($indice);
$morceaux = explode(" ", $indice);
if($nom != $morceaux[0] && $email != $morceaux[2])
{
// On ouvre alors le fichier en lecture-écriture
$pointeur=fopen($fichier,"r+");
// On lit les anciennes données et on les stocke dans $anciennes
@$anciennes=fread($pointeur,filesize($fichier));
// Le lien de l'email
if ($email != "")
{
$membre = $nom." ".$motdepasse." ".$email." ";
}
else
{
$membre = $nom." ".$motdepasse." "."Inconnu"." ";
}
// On remet le curseur invisible au début du fichier
rewind($pointeur);
// Dans le fichier, on écrit le nouvel avis devant les anciens :
fputs($pointeur,"$membre\n$anciennes");
// On referme le fichier
fclose($pointeur);
}
else
echo "Email ou Pseudo déjà existants";
}
else
{
echo "Un ou Deux champ(s) vide(s) n'ont pas été rempli.";
}
}
?>
</body>
</html>
En gros tu souhaiterais tester si le pseudo existe déjà dans ton fichier ou non avant de l'y inscrire?
Ben
|
Si le modèle de la ligne est le suivant :
NOM MOTDEPASSE EMAIL\n La ligne $morceaux = explode(" ", $indice); implique que $morceaux[0] = NOM, $morceaux[1] = MOTDEPASSE et $morceaux[2] = EMAIL Peut être que le problème vient de là. Autrement, bien que j'ai conscience qu'il s'agit d'un script de test, il vaut mieux prendre pour habitude de ne pas utilise l'espace comme séparateur, pour éviter les erreurs si l'utilisateur entre un espace dans son nom. Personellement j'utiliserai le "pipe" | ex : NOM|MOTDEPASSE|EMAIL\n avec un test pour supprimer les pipes éventuellement entrés par l'utilisateur, de cette manière : $membre = str_replace("|", "",$nom) ."|". str_replace("|", "",$motdepasse). "|" . str_replace("|", "",$email) ."|"; Je sais pas expérience qu'il vaut mieux prendre l'habitude de ces petits détails, y compris pour les tests :) Ben |
Merci, ça m'a réglé le problème des pseudos doubles. Mais, il y a toujours un, mais. ^^
Il me met cette fois-ci le message qu'il y a déjà un double Pseudo ou Email, le problème c'est que même s'il le marque il l'a quand même inscris dans le fichier texte. Deuxième problème c'est que si j'entre, maintenant un pseudo corecte etc... Il me le met à double Oo |
Est-ce que vous pouvez voir ou bien donner votre avis ou vos codes qui vous ont servis pour ce genre de problèmes ?
Le problème vient de la boucle "Foreach" mal placé? && ? || ? Je ne sais pas. :/ |
Au niveau de votre test je pense qu'il y a un soucis.
Si j'avais à faire un tel script, je testerai d'abord le nouveau pseudo/email contre toutes les lignes du fichier avant de penser à l'inscrire dedans. En gros : $doublon = false; foreach($contenu as $indice){ //Pour chaque ligne $indice = rtrim($indice); $morceaux = explode(" ", $indice); //On teste si le pseudo ou email est équivalent //Si oui, on passe la variable $doublon à true et on sort de la boucle if($nom == $morceaux[0] || $email == $morceaux[2]) { $doublon = true; break; } //Si non, on continue à la ligne suivante else continue; } //Ici on verifie si le pseudo/email a été trouvé dans le fichier if($doublon){ //Insérer le code correspondant à la présence d'un doublon } else { //on ajoute le pseudo/mot de passe au fichier $fichier="../Identification/login.txt"; $fp = fopen($fichier, "a"); //j'ouvre en mode append qui place le pointeur à la fin if($fp) fwrite($fp, $membre . "\n"); fclose($fp); } A noter que dans le cas de mon code, les doublons d'email seront interdits au même titre que les doublons de pseudo, à savoir qu'un même pseudo avec une adresse différente ne sera pas accepté et une même adresse avec un pseudo différent ne sera pas acceptée non plus. Dites moi si ça vous convient :) Ben |
ça me convient tellement parfaitement que je n'arrive pas à décrire ma joie !
Je vous remercie infiniment ! Merci ! Merci ! |
je marrive pa a me créer un pseudo alors aider moi svp |
| 17/11 11h21 | [Shell] Tester une variable numérique | Shell |
| 14/03 20h10 | Créer une base de données sous Ingres | Ingres |
| 11/04 13h03 | Planifier une sauvegarde de données | Sécurité |
| 04/06 17h03 | [Astuce] Devenir pirate informatique | Sécurité |
| 17/11 13h26 | [Protection de la vie privée] Confidentialité des données du PC | Protection de la vie privée |
| 06/06 11h13 | Eviter doublons dans une base de donnee | 17 |
| 22/03 16h31 | Vérification disponibilité pseudo base donnée | 0 |
| 21/03 22h09 | Identifiant(code+pseudo) avec base de donne | 4 |
| 10/12 17h05 | POPUP Java liste base données SQL/PHP | 12 |
![]() | Open Workbench - Open Workbench est une application libre de gestion et de planification de projet. Il s'agit d'un équivalent libre de... | Catégorie: Gestion de projet Licence: Open Source |
![]() | Visual Basic 6 Runtime (VB6 DLL) - Le Runtime Visual Basic 6 contient l'ensemble des librairies (DLL) nécessaires pour exécuter des programmes écrits en... | Catégorie: Librairies (DLL) Licence: Freeware/gratuit |
![]() | Visual Basic Express 2005 - Le langage de programmation Visual Basic est historiquement dans les gènes de la société Microsoft. Avec plus de 30.000... | Catégorie: Visual Basic Licence: Freeware/gratuit |
![]() | Copernic Agent Basic - Copernic est un logiciel très utile permettant de faire des recherches sur de nombreux moteurs simultanément. Il... | Catégorie: Navigateurs Licence: Freeware/gratuit |
![]() | Sony PlayStation Portable Slim | Catégorie: Console de jeux | 157.90 € Toutpourlamicro.com |
![]() | Acer Aspire M1100-TE7Z AMD | Catégorie: Ordinateur de bureau | 367.69 € iziprice |
![]() | Maxtor Basics Portable 250 | Catégorie: Disque dur | 78.99 € PC-look |
![]() | Dell Vostro 1000 AMD | Catégorie: Ordinateur portable | 279.00 € Dell Business FR |