Création d'un espace membre avec mysql

Soyez le premier à donner votre avis sur cette source.

Vue 22 368 fois - Téléchargée 3 297 fois

Description

C'est la création d'un espace membre avec gestion des logins des utilisateurs par une base SQL et ajout d'un nouvel utilisateur par lui-même.

Source / Exemple :


-----------------Création des tables sql--------------------------------
CREATE TABLE `login` (
`username` VARCHAR( 40 ) NOT NULL ,
`password` VARCHAR( 40 ) NOT NULL ,
PRIMARY KEY ( `username` )
);

CREATE TABLE `info` (
`username` VARCHAR( 40 ) NOT NULL ,
`prenom` VARCHAR( 40 ) NOT NULL ,
`nom` VARCHAR( 40 ) NOT NULL ,
`address` VARCHAR( 40 ) NOT NULL ,
`email` VARCHAR( 40 ) NOT NULL ,
`birth` VARCHAR( 10 ) NOT NULL ,
PRIMARY KEY ( `username` ) 
);
--------------------------Index.php-----------------------------------------
<html>
<?
	include("./head.html");

//alors la j'insere la page head.html qui contient tous les metas et ma feuille de style style.css

	include("./path.php");

//La c pour récupérer la fonction spath() qui me donne le chemin d'accés à ma page:" http://nomserveur/nomrepertoire/"

	echo "<h1 class=txt>Welcome to The Holster Guild</h1>";

//"class= " viens de ma feuille de style

	echo "<table align=left class=cell>";
	echo "<form action=".spath()."/index_sc.php method=post>";
?>

// je créé deux form: une pour se logger... je renvoi sur index_sc.php

	<tr><td width=10>Username</td><td width=10><input type="text" name="user" maxlengh=20 size=10 class=txt></td></tr>
	<tr><td>Password</td><td><input type="password" name="pass" maxlengh=20 size=10 class=txt></td></tr>
	<tr><td colspan=2 align=center><input type="submit" value=": : Login : :" class=bouton>&nbsp;<input type="reset" value=": : Cancel : :" class=bouton></td></tr>
</form>
<?

// et un autre pour s'enregistrer... je renvoi sur register.php

	echo "<form action=".spath()."/register.php method=post>";		
?>
		<input type=hidden name=user_color value=black>
		<input type=hidden name=pass_color value=black>
		<input type=hidden name=fname_color value=black>
		<input type=hidden name=lname_color value=black>
		<input type=hidden name=mel_color value=black>
		<input type=hidden name=add_color value=black>
		<input type=hidden name=user value="">
		<input type=hidden name=fname value="">
		<input type=hidden name=lname value="">
		<input type=hidden name=add value="">
		<input type=hidden name=mel value="">
		<input type=hidden name=bdate value="">

// la g plein de paramètres c pour que register.php recoive bien tout les paramètres qu'il va utiliser

		<tr><td colspan=2><input type="submit" value=": : Not a member? : :" class=bouton></td></tr>
	</form>
	</table>
</html>

-------------------------------index_sc.php-------------------------------

//c ce script qui controle la validité du username et du password
<?
	include('./head.html');
	include('./admin.php');

//admin.php c le script qui va me permettre d'utliser la fonction admin()
// cette fonction va me renvoyer un tableau contenant l'hôte de mon serveur SQL, le nom d'utilisateur et le mot de passe du serveur SQL

	$user=$_POST['user'];
	$pass=$_POST['pass'];

//je récupère le nom d'utilisateur et le mot de passe

	$pass=MD5($pass);

//tout les mot de passe que j'enregistre ds ma base sont codé par la fonction MD5 on compare les mot de passe codé par la suite

	$admin=admin(); 

//je stock le resultat de admin() ds le tableau $admin

	$db=mysql_connect($admin[0],$admin[1],$admin[2]);

//puis je me connect a mon serveur SQL

	mysql_select_db($admin[1],$db);

//puis je selectionne ma base de donnée SQL
//sous free la base porte toujours le meme nom que l'utilisateur ($admin[1])

	$table=mysql_query("SELECT password FROM log WHERE username=\"$user\"",$db);

//requete SQL qui me permet de selectionner le mot de passe stocké ds la base qui correspond au nom utilisateur récupéré plus haut

	$result=mysql_fetch_row($table);
	mysql_close($db);
	if($result[0]==$pass)

//je compare les deux mots de passe

	{
		echo "<h1 class=txt>Bienvenue $user</h1>";

// si il le bon mot de passe, la vous rajouter un include('tapage.html') 

		exit;
	}
	echo "<h1 class=txt>Vous n'êtes pas correctement identifié.</h1>";

//si il a pas le bon mot de passe ou si la requet sql ne renvoie rien, i.e. si l'utilisateur n'existe pas
?>

---------------------------register.php--------------------

//ce script sert uniquement à l'affichage du formulaire d'enregistrement
//seulement on doit lui passer les paramètres de couleur au cas ou l'utilisateur oublie un champs et doit etre réafficher dans ce cas
//si c pas kler tester sur mon site en oubliant de remplir des champs obligatoire, vous verrez tout de suite +vite!! :)
<?
	include("./head.html");
	include("./path.php");
	$user_color=$_POST['user_color'];
	$pass_color=$_POST['pass_color'];
	$fname_color=$_POST['fname_color'];
	$lname_color=$_POST['lname_color'];
	$mel_color=$_POST['mel_color'];
	$add_color=$_POST['add_color'];

//la je recupere toute mes couleur pour chaque element de mon formulaire

	$user=$_POST['user'];
	$fname=$_POST['fname'];
	$lname=$_POST['lname'];
	$add=$_POST['add'];
	$mel=$_POST['mel'];
	$bdate=$_POST['bdate'];

//la je recupere les infos deja rentrer par l'utilisateur pour pas qu'il de retape tout à taper a chaque fois

	echo "<form action=".spath()."/register_sc.php method=post>";

// je renvoie les donnée vers un formualire de control register_sc.php qui dira si les données sont correctement entrées

	echo "<h1 class=txt>Please fill in the register form...</h1>";
	echo "<table align=center>";
	echo "<tr><td colspan=2 align=center>(the fields marked with a * are required)</td></tr>";

//ben la c bien bourin mais c pa trop chaud, c juste l'affichage des données et du formulaire

	echo "<tr><td><font color=$user_color>Choose a username: </font></td><td><input type=text name=user value=$user><font color=$user_color>*</font></td></tr>";
	echo "<tr><td><font color=$pass_color>Choose your password: </font></td><td><input type=password name=pass><font color=$pass_color>*</font></td></tr>";
	echo "<tr><td><font color=$pass_color>Re-enter your password: </font></td><td><input type=password name=pass_check><font color=$pass_color>*</font></td></tr>";
	echo "<tr><td><font color=$fname_color>First Name: </font></td><td><input type=text name=fname value=$fname><font color=$fname_color>*</font></td></tr>";
	echo "<tr><td><font color=$lname_color>Last Name: </font></td><td><input type=text name=lname value=$lname><font color=$lname_color>*</font></td></tr>";
	echo "<tr><td><font color=$add_color>Locality: </font></td><td><input type=text name=add value=$add><font color=$add_color>* (NYC, Paris...)</font></td></tr>";
	echo "<tr><td><font color=$mel_color>email: </font></td><td><input type=text name=mel value=$mel><font color=$mel_color>* (dd/mm/yyyy)</font></td></tr>";
	echo "<tr><td>Birth Date: </td><td><input type=text name=bdate value=$bdate></td></tr>";
		
	echo "<tr><td align=right><input type=submit value=\": : Register : :\" name=submit class=bouton></td><td align=center><input type=reset value=\": : Cancel : :\" class=bouton></td></tr>";
	echo "</table>";
	echo "</form>";
?>

------------------register_sc.php----------------------------

//c ce script qui va controler les données et le cas bon va alors enregistrer l'utilisateur ds la base SQL
// sinon l'utilisateur est renvoyé sur register.php

<?
	include("./head.html");
	include("./admin.php");
	include("./path.php");
	$admin=admin();
	$user=$_POST['user'];
	$pass=$_POST['pass'];
	$fname=$_POST['fname'];
	$lname=$_POST['lname'];
	$add=$_POST['add'];
	$mel=$_POST['mel'];
	$bdate=$_POST['bdate'];

//la je recupere tout les données necessaires à l'enregistrement ds la base

	if(!$_POST['user'])

// je teste si on a bien fournit un nom d'utilisteur

	{
		echo "<form action=".spath()."/register.php method=post>";
		echo "<h1 class=txt>Vous avez oublié votre nom d'utilisateur!!</h1>";
		echo "<center>";
		echo "	<input type=hidden name=user_color value=red>";

// je met la couleur de user en rouge

		echo "	<input type=hidden name=pass_color value=black>";
		echo "	<input type=hidden name=fname_color value=black>";
		echo "	<input type=hidden name=lname_color value=black>";
		echo "	<input type=hidden name=mel_color value=black>";
		echo "	<input type=hidden name=add_color value=black>";
		echo "	<input type=hidden name=user value=\"\">";

// et je renvoie un champs vide pour user

		echo "	<input type=hidden name=fname value=$fname>";
		echo "	<input type=hidden name=lname value=$lname>";
		echo "	<input type=hidden name=add value=$add>";
		echo "	<input type=hidden name=mel value=$mel>";
		echo "	<input type=hidden name=bdate value=$bdate>";
		echo "	<input type=submit value=\": : Revenir : :\" class=bouton>";
		echo "</center>";
		echo "</form>";
	}
	elseif(!$_POST['pass']||!$_POST['pass_check']||$_POST['pass']!=$_POST['pass_check'])

//la je control si il a bien rempli les deux meme mot de passe
//apres c toujours la meme chose que pour user: en rouge puis champs vide

	{
		echo "<form action=".spath()."/register.php method=post>";
		echo "<h1 class=txt>Vous avez mal tapé votre mot de passe!!</h1>";
		echo "<center>";
		echo "	<input type=hidden name=user_color value=black>";
		echo "	<input type=hidden name=pass_color value=red>";
		echo "	<input type=hidden name=fname_color value=black>";
		echo "	<input type=hidden name=lname_color value=black>";
		echo "	<input type=hidden name=mel_color value=black>";
		echo "	<input type=hidden name=add_color value=black>";
		echo "	<input type=hidden name=user value=$user>";
		echo "	<input type=hidden name=fname value=$fname>";
		echo "	<input type=hidden name=lname value=$lname>";
		echo "	<input type=hidden name=add value=$add>";
		echo "	<input type=hidden name=mel value=$mel>";
		echo "	<input type=hidden name=bdate value=$bdate>";
		echo "	<input type=submit value=\": : Revenir : :\" class=bouton>";
		echo "</center>";
		echo "</form>";
	}
	elseif(!$_POST['fname'])
	{
		echo "<form action=".spath()."/register.php method=post>";
		echo "<h1 class=txt>Vous avez oublié votre prénom!!</h1>";
		echo "<center>";
		echo "<input type=hidden name=user_color value=black>";
		echo "<input type=hidden name=pass_color value=black>";
		echo "<input type=hidden name=fname_color value=red>";
		echo "<input type=hidden name=lname_color value=black>";
		echo "<input type=hidden name=mel_color value=black>";
		echo "	<input type=hidden name=add_color value=black>";
		echo "<input type=hidden name=user value=$user>";
		echo "<input type=hidden name=fname value=\"\">";
		echo "<input type=hidden name=lname value=$lname>";
		echo "<input type=hidden name=add value=$add>";
		echo "<input type=hidden name=mel value=$mel>";
		echo "<input type=hidden name=bdate value=$bdate>";
		echo "<input type=submit value=\": : Revenir : :\" class=bouton>";
		echo "</center>";
		echo "</form>";
	}
	elseif(!$_POST['lname'])
	{
		echo "<form action=".spath()."/register.php method=post>";
		echo "<h1 class=txt>Vous avez oublié votre nom!!</h1>";
		echo "<center>";
		echo "	<input type=hidden name=user_color value=black>";
		echo "	<input type=hidden name=pass_color value=black>";
		echo "	<input type=hidden name=fname_color value=black>";
		echo "	<input type=hidden name=lname_color value=red>";
		echo "	<input type=hidden name=mel_color value=black>";
		echo "	<input type=hidden name=add_color value=black>";
		echo "	<input type=hidden name=user value=$user>";
		echo "	<input type=hidden name=fname value=$fname>";
		echo "	<input type=hidden name=lname value=\"\">";
		echo "	<input type=hidden name=add value=$add>";
		echo "	<input type=hidden name=mel value=$mel>";
		echo "	<input type=hidden name=bdate value=$bdate>";
		echo "	<input type=submit value=\": : Revenir : :\" class=bouton>";
		echo "</center>";
		echo "</form>";
	}
	elseif(!$_POST['mel'])
	{
		echo "<form action=".spath()."/register.php method=post>";
		echo "<h1 class=txt>Vous avez oublié votre email!!</h1>";
		echo "<center>";
		echo "	<input type=hidden name=user_color value=black>";
		echo "	<input type=hidden name=pass_color value=black>";
		echo "	<input type=hidden name=fname_color value=black>";
		echo "	<input type=hidden name=lname_color value=black>";
		echo "	<input type=hidden name=mel_color value=red>";
		echo "	<input type=hidden name=add_color value=black>";
		echo "	<input type=hidden name=user value=$user>";
		echo "	<input type=hidden name=fname value=$fname>";
		echo "	<input type=hidden name=lname value=$lname>";
		echo "	<input type=hidden name=add value=$add>";
		echo "	<input type=hidden name=mel value=\"\">";
		echo "	<input type=hidden name=bdate value=$bdate>";
		echo "	<input type=submit value=\": : Revenir : :\" class=bouton>";
		echo "</center>";
		echo "</form>";
	}
	elseif(!$_POST['add'])
	{
		echo "<form action=".spath()."/register.php method=post>";
		echo "<h1 class=txt>Vous avez oublié votre Localité!!</h1>";
		echo "<center>";
		echo "	<input type=hidden name=user_color value=black>";
		echo "	<input type=hidden name=pass_color value=black>";
		echo "	<input type=hidden name=fname_color value=black>";
		echo "	<input type=hidden name=lname_color value=black>";
		echo "	<input type=hidden name=mel_color value=black>";
		echo "	<input type=hidden name=add_color value=red>";
		echo "	<input type=hidden name=user value=$user>";
		echo "	<input type=hidden name=fname value=$fname>";
		echo "	<input type=hidden name=lname value=$lname>";
		echo "	<input type=hidden name=add value=\"\">";
		echo "	<input type=hidden name=mel value=$mel>";
		echo "	<input type=hidden name=bdate value=$bdate>";
		echo "	<input type=submit value=\": : Revenir : :\" class=bouton>";
		echo "</center>";
		echo "</form>";
	}
	else

//si les teste du haut sont tous bon alors on enregsitre, MAIS il fo controler si l'utilisateur ne s'est pas deja enregister!!

	{
		$db=mysql_connect($admin[0],$admin[1],$admin[2]);
		mysql_select_db($admin[1],$db);
		$pass=MD5($pass);
		$table=mysql_query("SELECT username FROM log",$db);
		$result=mysql_fetch_row($table);
		foreach($result as $ans)
		{
			if (strtolower($ans)==strtolower($user))

//la je compare les noms d'utilisateur
//je transforme les chaines en chaine minuscule pour ne pas prendre ne compte la casse
			{
				echo "<h1 class=txt>L'utilisateur existe déja!!</h1>";
				mysql_close($db);
				exit;
			}
		}
		mysql_query("INSERT INTO `log` VALUES ('$user','$pass')",$db);
		mysql_query("INSERT INTO `info` VALUES ('$user','$fname','$lname','$add','$mel','$bdate')",$db);

//si pas de meme utilisateur alors on ecrit dans la base les données récupérées plus haut!!

		mysql_close($db);
		echo "<h1 class=txt>Vous avez bien été enregistré $user</h1>";
	}
?>

----------admin.php----------
//en fait cette fonction fait appel à un fichier, caché de préférence, qui contient le nom d'utilisateur et le mot de passe du serveur SQL qui contient la base de donnée
// ce fichier se nomme .htadmin, il commence par un point pour ne pas etre affiché par le serveur apache (pour ce cacher)

//ce fichier est stocké dans un repertoir log/ 
//Pour interdire l'acces  de ce repertoir afin d'etre sûr que personne viendra regarder dans .htadmin, il faut definir un autre fichier: .htaccess 
//( à ne pas mettre sur la racine de votre compte web sinon vous n'y aurait plus acces!! sauf si vous configurer .htaccess pour un acces restreint mais la c un autre problème!!)
<?
function admin()
{
	$fpath="./log/.htadmin";
	if(is_readable($fpath))

// je teste si le fichier est lisible

	{
		if(!$f=fopen($fpath,'r'))

//j'ouvre le fichier

		{
			echo "Erreur d'ouverture du fichier.";
			exit;
		}
		else
		{
			$str=fgets($f);

//je lis la seule et unique ligne de mon fichier

			list($user,$pass)=split(":",$str);

//je separe cette chaine en deux chaines $user et $pass par ":" car mes deux chamsp dans mon fichier sont séparer par un ":"

			$host="sql.free.rr"; 

// je recupere l'adresse de mon hote qui contient ma bases de donnéé

			return array($host,$user,$pass);

// je renvoie un tableau (array) qui en premier index aura l'hote en deuxiéme l'utlisateur et en 3eme le mot de passe

		}
	}
	else
	{
		echo "Le fichier n'est pas lisible.";
		exit;
	}
}
?>

--------------------------htacess--------------------------
//dans htaccess pour interdire l'acces au repertoire vous mettez seulement cette ligne

deny from all

-----------fin------

Conclusion :


Bon suite aux mails reçu je v expliquer un peu plus en details (frbos c pour toa!!)

voila

apres y peut y avoir un complèment sur les feuilles de style
sinon fo connaitre un minimum les formulaires et php mais c pas dur et je peux vous expliquer mais cette fois en privée!! ;)

résultat sur http://nifhell.free.fre

si vous avez des suggestions et j'en suis avide => email!!

Alors c pour vous eMaylo et Julienmath:
Suite aux messages je précise la création des tables (c vraiment pour vous faire plaisir)...

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

fabri62
Messages postés
2
Date d'inscription
vendredi 27 décembre 2002
Statut
Membre
Dernière intervention
24 mars 2004
-
Salut,

Ca m'a pas l'air mal, mais je n'ai pas trouver ta table Sql ??

Fabrice.
Nifhell
Messages postés
48
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
23 avril 2006
-
salut,

je ne donne pas le code source dce création des tables sql car ils sont fournis à foison sur ce site... à toi de chercher un peu, c pas tres compliqué

c juste deux tables, une 'login' qui contient 2 champs de type VARCHAR un 'username' (c la clé primaire) l'autre 'password'
l'autre table s'appelle 'info' qui contient 5 champs de type VARCHAR 'username' (c la clé primaire), 'nom', 'prenom','ville','date de naissance'...


voilà voilà
@++
i0Lo
Messages postés
62
Date d'inscription
jeudi 7 novembre 2002
Statut
Membre
Dernière intervention
5 mai 2004
-
Simple et efficace :)
... et trés appreciable le petit md5() que l'on trouve trés rarement dans ce type de source
Un 8/10 et des applaudissements
BlasphM
Messages postés
3
Date d'inscription
vendredi 26 mars 2004
Statut
Membre
Dernière intervention
28 mars 2004
-
Voila, le php je ne connai vraiment pas, et j'aimerai savoir si il est possible d'utiliser les code que vous avez écrit sans avoir a toucher quelque chose, j'ai déjà tenter quelque chose sur dreamweaver, mais j'ouvre l'index.php, j'ai donc les boutons login, cancel, not a member, seul login m'emmene a quelque chose, et ce quelque chose c'est Impossible d'afficher la page, je voudrais savoir si pour quelqu'un comme moi, sans bases php, il est possible de crée un espace login sur mon site?
Nifhell
Messages postés
48
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
23 avril 2006
-
BlasphM,

Xcuse moi de te dire ça mais il faut toujours y mettre un peu du sien!!

Les logiciels comme dreamweaver ne s'adresse pas a des novices de la programmation web bien au contraire!!! (même ci c ce qu'ils tentent de faire croire...)
Ce sont des logiciels qui necessitent la connaissance des bases de la programmation...

Il est toujours difficile de se lancer dans un nouveau language, mais dans tout les cas l'effort de compréhension existera toujours!! Alors bien sur que mon code n'est pas utilisable sans rien y modifier, car par exemple si tu ne publie pas ton site sur free tu devras y changer l'adresse du serveur sql... et ainsi de suite...

A contrario, je c que Adobe Golive permet de protéger l'accés à une page par mot de passe.. mais ce ne sera qu'une parade, car il ne s'agira jamais d'un vrai espace membre!!

Ainsi, il est toujours préférable de maitriser l'ensemble de son site, et le seul moyen et d'y connaitre son code source!!!

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.