begin process at 2012 05 31 21:06:00
  Trouver un code source :
 
dans
 
Accueil > 

Tutoriels

 > 

Tutoriaux

 > ESPACE MEMBRE

ESPACE MEMBRE


 Information sur le tutoriel

Note :
Aucune note

 Description

Bonjour à tous,

Je vous présente mon premier tutorial : Un Espace Membres n17 avec validation par email n19.
Et voila c'est fini !

Bonne programmation !

PS : Si vous prenez le code dîtes bien que cela vient de moi. Merci

PS2 : J'ai fait ce code à l'arrache, donc si il y a une erreur n'hésitez pas à le dire.

Tutorial

Bonjour à tous,

Je vous présente mon premier tutorial : Un Espace Membres avec validation par email .

Voici le code et les explications, mais ne faîtes pas de copier/coller, sinon vous risquerez de ne rien apprendre :

L'inscription (inscription.html) :


<html>
<head>
<title>Inscription</title> <Titre>
</head>
<body>
<form>
<label>Pseudo : </label>
<input> <Zone>

<label>Mot de Passe : </label>
<input> <Zone>

<label>Confirmez le code secret : </label>
<input> <Zone>

<label>E-M@il : </label>
<input> <Zone>

<input>
</form>
</body>
</html>


Voila la page d'inscription "brute", vous voyez c'est pas trop compliqué.
Maintenant passons au code PHP de l'inscription :

L'inscription PHP(inscription.php)



<?

include('include/configuration.php');
$pseudo = $_POST['pseudo'];
$pwd = $_POST['pwd'];
$pwd2 = $_POST['pwd2'];
$mail = $_POST['mail'];


if($pseudo == "" || $pwd == "" || $pwd2 == "" || $mail == "")
{ // Si les champs sont vides lors de l'inscription
echo '<script> alert("Un ou plusieurs champs ne sont pas remplis."); </script>';
echo '<script> document.location.href="inscription.php" </script>';
exit;
}
else if ($_POST['pwd'] != $_POST['pwd2'])
{
echo '<script> alert("Un ou plusieurs champs ne sont pas remplis."); </script>';
echo '<script> document.location.href="inscription.php" </script>';
exit;
}
else
{
$sql = "SELECT pseudo FROM membres WHERE pseudo='$_POST[pseudo]'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

$data = mysql_fetch_array($req);

if($data['pseudo']==$login)
{
echo '<script> alert ("Votre pseudo est déja pris");</script>';
echo '<SCRIPT>
document.location.href="inscription.php"
</SCRIPT>';
exit;
}
$sql = "SELECT mail FROM membres WHERE mail='$_POST[mail]'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

$data = mysql_fetch_array($req);

if($data['mail']==$mail)
{
echo '<script> alert ("Cette adresse e-mail à déjà été inscrite !");</script>';
echo '<SCRIPT>
document.location.href="inscription.php"
</SCRIPT>';
exit;
}
else
{
$requete=mysql_query("INSERT INTO membres VALUES('','$_POST[pseudo]','$_POST[pwd]','$_POST[mail]')");
echo ' <p>Votre login &agrave; &eacute;t&eacute; ajout&eacute; &agrave; ma base de
donn&eacute;es, <a href="connect.php">cliquez ici</a> pour vous connecter.</p>
';
}
}
?>



Et voila, l'inscription est faîte, mais il faut les paramètres de connexion à la Base de Données MySQL :

Configuration (include/config.php) :



<?
$host=""; //nom de votre serveur MySQL
$user=""; //nom d'utilisateur
$pass=""; //mot de pass
$base=""; //nom de la base de données
$connect=mysql_connect($host,$user,$pass);
mysql_select_db($base, $connect);
?>



Passons au formulaire de connexion :

Connexion (connexion.php) :



<php>
<form>
<h4>Connexion au site</h4>
<p>
<label>Pseudo : </label><br>
<input>
</p>
<p>
<label>Code secret : </label><br>
<input>
</p>
<input>
</form>



Ensuite passons à la véritable connexion :

Connexion (connexion2.php)



</SCRIPT>


Voila et maintenant passons à la zone membres :

Zone membres (membres.php) :



</SCRIPT>
</p>
<a href="connect.php?do=deconnexion">Déconnexion</a>




Et voila c'est fini !

Bonne programmation !

PS : Si vous prenez le code dîtes bien que cela vient de moi. Merci

PS2 : J'ai fait ce code à l'arrache, donc si il y a une erreur n'hésitez pas à le dire.

 Historique

05 janvier 2011 18:00:13 :
Bonjour à tous, Je vous présente mon premier tutorial : Un Espace Membres n17 avec validation par email n19. Voici le code et les explications, mais ne faîtes pas de copier/coller, sinon vous risquerez de ne rien apprendre : L'inscription (inscription.html) : Et voila c'est fini ! Bonne programmation ! PS : Si vous prenez le code dîtes bien que cela vient de moi. Merci PS2 : J'ai fait ce code à l'arrache, donc si il y a une erreur n'hésitez pas à le dire.

Commentaires

Commentaire de Matt 261 le 05/01/2011 20:13:37

Bonjour,

"J'ai fait ce code à l'arrache, donc si il y a une erreur n'hésitez pas à le dire." Effectivement. Je ne vais pas lister les erreurs, mais en plus d'être codé "à l'arrache" pour reprendre tes mots, tes scripts bourrés de failles.
Pour reprendre dans l'ordre :

inscription.html
l'intérêt des labels et de les utilisés avec leur attribut "for" pour favoriser l'accessibilité du site. Avant ça, il faut nommer les champs input que tu utilises <input name="login" /> par exemple. De plus, les balises input sont auto-fermantes, c'est a dire qu'il faut ajouter un slash à la fin de la balise (cf mon code).
Que fait la balise  <Zone> entre deux inputs ?
<form> : il pointe ou le formulaire ? En POST ou en GET ? et le bouton de submit ?

Tu as déposé un tutoriel, le but étant donc d'enseigner une technique. Or, je ne vois pas beaucoup d'explication autour du code.
Par exemple, que vient faire include('include/configuration.php'); ?

La ligne suivante, tu récupères les valeurs POST des champs, mais comment peux-tu indiquer des noms 'pseudo', 'pwd',... alors que les champs dans ton formulaire ne sont pas nommés ?
$pseudo = $_POST['pseudo'];
$pwd = $_POST['pwd'];
...

Aucun champs ne filtre les caractères & chaines malicieuses (les fameuses attaques XSS), ton code est la porte ouverte au premier hacker newbie. Les mots de passes pourraient au moins être hashés en md5, ça ne mange pas de pain et ça évite bien des problèmes de sécurité.

echo '<script> document.location.href="inscription.php" </script>'; Pourquoi s'encombrer d'une redirection javascript alors que tu pourrais utiliser les header avec PHP. Si le client a désactivé le Javascript sur son navigateur, que se passe-t'il ?

$sql = "SELECT pseudo FROM membres WHERE pseudo='$_POST[pseudo]'"; Il va sans dire que cette requête est clairement dangereuse, comme je le disais plus haut, une des bonnes pratiques dans le développement consiste à sécuriser ses champs. Et puis tu risques de rencontrer des problèmes dans le tableau POST avec la clée "pseudo" => $_POST['pseudo'].

"Un Espace Membres n17 avec validation par email n19." A aucun moment, tu ne vérifie la validité de l'adresse e-mail. As tu pensé au cas où l'utilisateur rentre par exemple "tot@" comme adresse e-mail ? Avec ton script, elle est acceptée. Regarde du côté des regex pour commencer.

Sinon, pas de description de ta table MySQL membre ? Pour un tuto, ça serait bien non ?

Concernant la connection, <php> je n'avais encore jamais vu. Qu'est-ce que c'est censé faire ? Idem pour le formulaire : mêmes remarques que pour l'inscription.

"Voila et maintenant passons à la zone membres : Zone membres (membres.php)" Là je dois admettre que j'ai mis longtemps avant de comprendre que la zone membre se résumait aux trois lignes de code. Sans aucune vérification ni de session (en gros tout le monde peux y accéder tant qu'ils ont l'URL), et où sont vérifiés les identifiants ?
Je vois bien "Connexion (connexion2.php)" mais rien dedans ?

Et la déconnexion dans tout ça ?

J'arrête là. Des fois que certains seraient tentés de mettre ce script en prod, je vous le déconseille formellement : en plus d'être non fonctionnel, celui-ci contient nombre de failles permettant au premier venu de mettre à mal votre base de données, retourner la liste & le mot de passe en clair (grave) de tous vos utilisateurs, etc...
Gageons que tout cela sera vite corrigé par l'auteur de ce tutoriel.

Matt

Commentaire de Bacterius le 08/01/2011 01:59:13

"PS2 : J'ai fait ce code à l'arrache,"
Eho tutoboss, ce tutoriel va être lu par plusieurs milliers de personnes d'ici quelques mois, voire adapté plusieurs dizaines de fois dans des projets de taille variable, certains potentiellement commerciaux (t'as pas mis de licence). Quel sens ça a de poster un tutoriel à l'arrache, défectueux, et en tous points non optimisé et très insécure (cf. Matt261) ? Je ne crois pas que ça aide les gens.

Donc, tutoboss (surtout d'après ton pseudo tu devrais te donner à fond sur la qualité des tutos non ?), si tu pouvais réhausser le niveau et favoriser la qualité sur la quantité, ça serait pas mal. Ne serait-ce que pour respect envers les lecteurs qui n'ont pas forcément ton niveau, ou qui le surpassent peut-être largement.

Merci d'avance.

Cordialement, Bacterius !

Commentaire de begueradj le 10/01/2011 09:08:25

C'est plus un code source qu'un tutorial.
Begueradj

Commentaire de assmoun0 le 10/01/2011 21:30:57

Bonjour:
Merci bien pour le tuto, ca va surement aider ceux qui débutent dans le php ....
et pour ceux qui ne voient que la partie vide du verre ...essayez quand même d'encourager au lieu de de décourager....si le premier tuto est comme ceci qui s'est comment serais le deuxième et le .....
Merci bien tutoboss

Commentaire de neigedhiver le 12/01/2011 08:24:03

Ce genre de "tuto" (arf, j'ai failli m'étouffer) n'aide pas les débutants. Ou plutôt, ils les aide pas à progresser : il les aide à stagner, voire à régresser.
Si on pouvait mettre une note négative, je le ferais.

Commentaire de laigle76 le 25/01/2011 10:30:38

Je rejoins Matt261 et Bacterius sur leurs commentaires. En dehors d'un bête copier/coller d'un code source, ce tuto ne sert à rien.
Aucune explication de code n'est présente, aucune vérification sur les contenus des variables récupérées par POST, etc...

Je t'encourage à continuer ta générosité de partage mais avant de le faire, assure toi de proposer un contenu propre et à même de faire progresser les autres.

Commentaire de chafik01 le 03/02/2011 13:56:48

Je suis d'accord avec Matt261 sur son commentaire.

Commentaire de begueradj le 22/02/2011 13:17:21

merci pour les notes de MATT 261

Commentaire de nolseko le 02/04/2011 17:15:36

très bon tutoriel

Commentaire de begueradj le 03/04/2011 10:57:49

non, c'est loin d'être un bon tuto

Commentaire de webboutic le 07/06/2011 13:18:18

salut tout le monde

j'aimerai savoir ou se peut trouvée la faille pour une injection sql  dans ce  script :

if(isset($_POST['boutton_identification']))
{
extract($_POST);
include "connect.php";
$requete="SELECT email,pswd FROM table_membres";
$executer=mysql_query($requete) or die("pas d'execution de la requette");
                 while($resultat=mysql_fetch_assoc($executer))
{
                       if($resultat['email']==$email && $resultat['pswd']==$pswd && !empty($resultat['email']))
                       {
                       $membre=$resultat['email'];
   $passe=$resultat['pswd'];
   echo "membre est $membre----passe est $passe";
   }
}
include "deconnect.php";
if(isset($membre) && $membre==$email && $passe==$pswd)
{
$_SESSION['email']=$email;
}
else
{
echo $form_identification ;
exit();
}
}

Commentaire de begueradj le 08/06/2011 15:00:41

Salut,

Pour la question de webboutic :

Il faut faire attention surtout à la réception de vos données:

par exemple pour : $membre=$resultat['email']; il faut faire au moins:

$membre=mysql_real_escape_string(addslashes(htmlspecialchars($resultat['email'])));

Commentaire de drabass le 26/07/2011 14:33:22

J'ai failli utiliser ce tuto pour le site d'un ami qui voulait à tout prix avoir un espace membre. Mais vu les details des failles énumerées par MATT 261, j'encourage fortement tous les membres à reécrire les codes de ce tuto avant toute utilisation. La demarche d'écriture et d'engencement des pages.php est bien, mais il reste beaucoup à faire encore pour que ce tuto soit parfait. Puisses-je demander à MATT 261 de nous proposer ce tuto avec les corrections des failles qu'il a soulignées? Cela aiderait encore plus les membres pour le côté secure de leurs codes php.

Commentaire de lubixx le 03/08/2011 20:09:16

A lon avis e n'est qu'un simple code source avec beaucoup de commentaires. courage Tutoboss, mais prens tout ton temps avant de poster un tuto.

Commentaire de baltimor5 le 20/09/2011 10:22:27

je suis un débutan prémier nivo en php mais vraiment j'ai eu trop de mal à comprendre ce code. J'ai mem eu l'impression que dreamweaver ne comprenai pas ce que je voulai dir sur tout pour tes balises <input> ??? cette façon de coder est vraiment nouvelle pour moi. Sans vouloire vecxé ce tuto nous aide à sombrer. Mais l'idée est tres bonne esque il n'ya personne pour le corriger?

Commentaire de drabass le 20/09/2011 11:37:25

Je conseille à BALTIMOR5 de bien apprendre l'utilisation des formulaires dans dreamweaver afin de bien comprendre comment ce tuto pourrait lui servir, car  comme dit plus haut, ce tuto n'est pas forcement pour un debutant.

Commentaire de tutoboss le 21/12/2011 15:27:07

Bonjour, voila me revoila. Donc pour les failles je suis désolé car je l'ai ai fait vitfait. Et pour les POST ou GET, ou les names des inputs c'est vonlontaire que je l'ai ai pas presisé sinon vous aurez plus rien a faire que un CTRL + C et CTRL + V

Cdt

Commentaire de Elariel le 05/01/2012 00:14:07

tu post ca dans les tuto, mais comment tu veux qu'on apprenne si c'est incomplet, sans explication et avec plein de faille ???????????

C'est bien de voulloir partager, mais il a une facont de faire.   "Ce qui mérite d'être fait, mérite d'être bien fait."

Commentaire de drabass le 05/01/2012 10:10:06

JE SUIS D'ACCORD AVEC Elariel. ça ne sert à rien d'avoir un tel tuto ennuyant et truffé de failles sur le forum.

Commentaire de drabass le 05/01/2012 10:13:21

En occurrence, si TUTOBOSS acceptait les critiques, on pouvait l'encourager à ameliorer son tuto pour le bonheur de tous. Mais, resté bloqué et campé sur sa position de la sorte, ça n'avance à rien.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,031 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales