Tuto+source #1 : espace membre sans mysql

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 797 fois - Téléchargée 29 fois

Contenu du snippet

Bienvenue dans ce tutorial de création d'une zone membre sans MySQL.
Je vais vous montrer comment créer une section membre en php sans utiliser les bases de données. Cet exemple est basique et doit être améliorer, notament si vous souhaitez empêcher l'enregistrement intempestif de membres ou le test de mot de passe par des robots, mais il fonctionne bien.
Ce n'est pas non plus l'espace membre le plus sécurisé du monde, notamment si le membre se connecte à partir d'un espace public mais le niveau de sécurité reste tout de même très acceptable.

Théoriquement, le copié-collé des sources marche très bien (tout fonctionne chez moi).
Attention, tous les fichiers doivent être placés dans un même dossier.

Découpage de ce tutorial

Partie #1 : Inscription du membre et configuration du script
Partie #2 : Construire la section réservé au membre
Partie #3 : Options réservées au membre + explications des fonctions PHP utilisés dans ce script

Cette partie est la partie #1.

Source / Exemple :


<?

/*
 *

  • --------------
  • | ACTION 1 | (partie #1)
  • --------------
* *
  • Fichier : .htaccess
*
  • C'EST TRES IMPORTANT.
  • Si vous ne le faîtes pas, n'importe qui aura accès aux pseudo et mots de passe des membres.
  • Si vous le faîtes, le fichier contenant les paramètres des membres sera caché.
*
  • Pour créer un fichier .htaccess sous windows, utilisez le bloc-notes et enregistrez sous
  • .htaccess. Vous ne pouvez pas enregistrer de fichier .htaccess à partir de l'explorateur
  • Windows
*
  • A mettre dans le fichier .htaccess :
<files membres.txt> deny from all </files> *
  • /
?> <? /* *
  • --------------
  • | ACTION 2 | (partie #1)
  • --------------
  • Fichier : configuration.php
  • Fichier qui contient la fonction de cryptage du mot de passe et la valeur de différentes constantes
  • Je vous conseille d'aller faire un tour dans ce fichier de configuration
  • Vous pouvez personnaliser ce fichier en ajoutant des constantes que je n'ai pas choisies comme constantes,
  • par exemple la taille maximale des pseudo et mots de passes, etc.
*
  • A mettre dans le fichier configuration.php : */ ?>
<? // On définit comme constantes le pseudo et le mot de passe envoyés par l'internaute define("PSEUDO",$pseudo); define("CLEF",$clef); /*
  • Modifiez les valeurs des constantes A, B, C et D à votre guise (fortement recommandé)
  • Les nouvelles valeurs doivent obligatoirement être comprises entre 256 et 999
  • Dans le cas contraire et avec un peu de malchance, attendez vous à quelques méchants bugs...
*
  • /
define("A",876); define("B",478); define("C",147); define("D",691); // Fonctions nécessaires à l'exécution du script function cache() { // Tenter de désactiver l'insertion en cache de la page courante // Facultatif mais offre plus de sécurité au niveau de la navigation dans l'espace membre header("Expires: Mon, 1 Jan 2000 00:00:00 GMT"); header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache"); } function crypter($clef) { // Crypter le mot de passe for($i = 0; $i < strlen($clef); $i++) { // On applique cet algorithme de cryptage au caractère $i $mot .= (ord($clef[$i])*((A+B+C+D)%(256+$i+1))+($clef[strlen($clef)-$i-1]+$i*C+A)*B)%D; if($i != strlen($clef)-1) { $mot .= "/"; } } return $mot; } function vérification($pseudo,$clef) { // Vérifier si un mot de passe et un pseudo correspondent bien if(!empty($pseudo) && !empty($clef)) { if(file_exists("membres.txt")) { $fichier = fopen("membres.txt","r"); while(!feof($fichier)) { $ligne = fgets($fichier,300); if(trim(substr($ligne,0,20)) == $pseudo && trim(substr($ligne,19,80)) == $clef) { $ok = 1; break; } } } } return $ok; } ?> <? /* *
  • --------------
  • | ACTION 3 | (partie #1)
  • --------------
* *
  • Fichier : inscription.php
*
  • Faîtes un copié-collé de la source.
  • Cette phase permet à l'internaute de s'inscrire à la section membre.
*
  • A mettre dans le fichier inscription.php : */ ?>
<? include("configuration.php"); echo "<html> <head> <title>Section membre / Inscription</title> </head> <body> "; /*
  • On récupère la valeur des variables passées dans le formulaire,
  • tout en s'assurant que ces variables n'ont pas étés passées frauduleusement.
*
  • /
$nom = trim($HTTP_POST_VARS[nom]); $prénom = trim($HTTP_POST_VARS[prénom]); $mail = trim($HTTP_POST_VARS[mail]); $pseudo = trim($HTTP_POST_VARS[pseudo]); $clef = trim($HTTP_POST_VARS[clef]); $validation = $HTTP_POST_VARS[validation]; /*
  • Validation des paramètres passés par le formulaire. On vérifie que tous les
  • champs sont remplis correctement, car l'internaute à de facheuses tendances
  • à raconter n'importe quoi... En cas d'erreur, on lui demande de la corriger.
*
  • /
if($validation) { if(empty($nom)) { $erreur[nom] = 1; } elseif(!ereg("[a-z]",$nom) || strlen($nom) > 50) { $erreur[nom] = 2; unset($nom); } if(empty($prénom)) { $erreur[prénom] = 1; }elseif(!ereg("[a-z]",$prénom) || strlen($prénom) > 50) { $erreur[prénom] = 2; unset($prénom); } if(empty($mail)) { $erreur[mail] = 1; } elseif(!eregi("^(.+)\@[^ ]+\.[a-z]{2,5}$",$mail) || strlen($mail) > 75) { $erreur[mail] = 2; unset($mail); } if(empty($pseudo)) { $erreur[pseudo] = 1; } elseif(strlen($pseudo) > 20) { $erreur[pseudo] = 2; unset($pseudo); } else { // On vérifie que personne n'utilise déjà le pseudo ou l'adresse e-mail if(file_exists("membres.txt")) { $fichier = fopen("membres.txt","r"); while(!feof($fichier)) { $ligne = fgets($fichier,300); if(trim(substr($ligne,0,20)) == $pseudo) { $erreur[pseudo] = 3; unset($pseudo); break; } elseif(trim(substr($ligne,199,50)) == $mail) { $erreur[pseudo] = trim(substr($ligne,0,20)); unset($mail); break; } } } } if(empty($clef)) { $erreur[clef] = 1; } elseif(strlen($clef) > 20 || strlen($clef) < 6) { $erreur[clef] = 2; unset($clef); } } /*
  • S'il n'y a aucune erreur, on enregistre le membre dans le fichier des membres
  • (membres.txt par défaut). Les différents paramètres sont complétés par des espaces
  • jusqu'à leur taille maximale.
*
  • /
if($validation && !$erreur) { if(!file_exists("membres.txt")) { $fichier = fopen("membres.txt","w+"); fclose($fichier); } $paramètres = $pseudo.str_repeat(" ",20-strlen($pseudo)); $mot = crypter($clef); $paramètres .= $mot.str_repeat(" ",80-strlen($mot)); $paramètres .= $nom.str_repeat(" ",50-strlen($nom)); $paramètres .= $prénom.str_repeat(" ",50-strlen($prénom)); $paramètres .= $mail.str_repeat(" ",75-strlen($mail)); $paramètres .= "\n"; $fichier = fopen("membres.txt","a"); fputs($fichier,$paramètres); fclose($fichier); $ok = 0; if(file_exists("membres.txt")) { $fichier = fopen("membres.txt","r"); while(!feof($fichier)) { $ligne = fgets($fichier,20); if(trim($ligne) == $pseudo) { $ok = 1; break; } } } if(!$ok) { $erreur[serveur] = 1; } } /*
  • On demande à l'internaute de remplir un formulaire d'inscription
  • Vous pouvez ajouter, modifier ou supprimer certains champs de ce formulaire
  • à votre guise mais vous devrez effectuer des modifications correspondantes
  • dans certaines parties du script en PHP.
*
  • /
if($validation && !$erreur) { echo "Vous êtes désormais inscrit !<br><br>Votre pseudo est $pseudo..."; } else { echo "Formulaire d'inscription :<br><br>"; // On affiche les éventuelles erreurs détectées if($erreur) { echo "Merci de corriger les erreurs suivantes :<br>"; switch($erreur[nom]) { case 1 : echo "- Vous n'avez pas donné votre nom<br>"; break; case 2 : echo "- Vous avez donné un nom erroné (plus de 50 caractères ou pas de lettres)<br>"; break; } switch($erreur[prénom]) { case 1 : echo "- Vous n'avez pas donné votre prénom<br>"; break; case 2 : echo "- Vous avez donné un prénom erroné (plus de 50 caractères ou pas de lettres)<br>"; break; } switch($erreur[mail]) { case 1 : echo "- Vous n'avez pas donné votre adresse e-mail<br>"; break; case 2 : echo "- Vous avez donné une adresse e-mail erronée (plus de 75 caractères ou syntaxe incorrecte)<br>"; break; } switch($erreur[pseudo]) { case 1 : echo "- Vous n'avez pas donné de pseudo<br>"; break; case 2 : echo "- Vous avez donné un pseudo erroné (plus de 20 caractères)<br>"; break; case 3 : echo "- Ce pseudo est déjà utilisé, choisissez-en un autre<br>"; break; default : if($erreur[pseudo]) { echo "- Vous êtes déjà inscrit (même adresse e-mail) sous le pseudo $erreur[pseudo]<br>"; break; } } switch($erreur[clef]) { case 1 : echo "- Vous n'avez pas donné de mot de passe<br>"; break; case 2 : echo "- Vous avez donné un mot de passe erroné (moins de 6 ou plus de 20 caratères)<br>"; break; } if($erreur[serveur]) { echo "- Erreur interne, veuillez revalider votre inscription<br>"; } } echo "<form method='post'> <input type='hidden' name='validation' value=1> Nom : <input type='text' name='nom' style='border : 1px solid' size=20 value='$nom' maxlength=50><br> Prénom : <input type='text' name='prénom' style='border : 1px solid' size=20 value='$prénom' maxlength=50><br> Adresse e-mail : <input type='text' name='mail' style='border : 1px solid' size=30 value='$mail' maxlength=75><br><br> Choisissez un pseudo : <input type='text' name='pseudo' style='border : 1px solid' size=15 value='$pseudo' maxlength=20><br> Choisissez un mot de passe (6 caractères minimum) : <input type='password' name='clef' style='border : 1px solid' size=15 value='$clef' maxlength=20><br><br> <input type='submit' value='Inscription'>"; } echo " </body> </html>"; ?>

Conclusion :


Voilà, c'est tout pour la partie #1.
Théoriquement, votre membre est inscrit, avec le pseudo et le mot de passe qu'il a choisis.
Dans la partie #2, nous verrons comment il peut accéder à l'espace qui lui est réservé.

A voir également

Ajouter un commentaire

Commentaires

guilhain
Messages postés
2
Date d'inscription
samedi 4 août 2007
Statut
Membre
Dernière intervention
21 août 2007

ben ça marche pas chez moi! ya til qqe chose a retoucher?
zorkzyd
Messages postés
7
Date d'inscription
jeudi 29 juin 2006
Statut
Membre
Dernière intervention
6 août 2008

Hello a tous, j'ai un gros probleme avec le tuto...

Notice: Undefined variable: pseudo in ...\configuration.php on line 4

Notice: Undefined variable: clef in ...\configuration.php on line 5

Notice: Use of undefined constant nom - assumed 'nom' in ...\inscription.php on line 17

Notice: Use of undefined constant prénom - assumed 'prénom' in ...\inscription.php on line 18

Notice: Use of undefined constant mail - assumed 'mail' in ...\inscription.php on line 19

Notice: Use of undefined constant pseudo - assumed 'pseudo' in ...\inscription.php on line 20

Notice: Use of undefined constant clef - assumed 'clef' in ...\inscription.php on line 21

Notice: Use of undefined constant validation - assumed 'validation' in ...\inscription.php on line 22

Notice: Use of undefined constant pseudo - assumed 'pseudo' in ...\inscription.php on line 70


En gros, toutes les variables ne sont pas définies chez moi... pourtant le script d'inscription marche... que dois-je faire?
cs_griggione
Messages postés
3
Date d'inscription
vendredi 24 décembre 2004
Statut
Membre
Dernière intervention
7 novembre 2007

Bonjour tous

Bon je suppose que les fichiers sont a mettre sur le serveur.OK
Mais la question de newbie:
Que faut-il mettre dans la page ou je désire que les membres s'inscrivent???????

Oui je sais,mais faut bien débuter.
cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

ben j'en sais pas plus que toi hein ^^
guillaumelengen
Messages postés
10
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
14 août 2005

J'arrive pas a acceger a la page de membre je fais quoi



Merci pour le mes précédent

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.