Créer son jeu en PHP

Tout pour créer soit-même son jeu en PHP
 
AccueilAccueil  ­CalendrierCalendrier  ­FAQFAQ  ­RechercherRechercher  ­S'enregistrerS'enregistrer  ­MembresMembres  ­GroupesGroupes  ­ConnexionConnexion  
Poster un nouveau sujet   Répondre au sujetPartager | 
 

 Zone Membres avec messagerie et admin

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Globe
Modérateur Illustration


Nombre de messages: 1067
Age: 19
Date d'inscription: 15/05/2005

MessageSujet: Zone Membres avec messagerie et admin   Mer 10 Mai - 19:02

Bonjour, alors un petit tuto pour les newbies qui tout le temps viennent nous casser les pieds avec leur scripts basiques qu'ils n'arrivent pas à faire marcher
Alors voilà ce tuto vous expliquera comment utiliser les sessions dans une zone membres et gérer une zone membres basiques...

I. Création de la table et formulaire de connexion


1. La Table membres

Nous allons tout d'abord créer une table Sql simple dans phpMyAdmin, elle comportera un champs id, un champ pseudo, un champ email, un champ mot de passe et un rang...

Code:
CREATE TABLE `membres` (
  `id` int(11) NOT NULL auto_increment,
  `pseudo` varchar(30) NOT NULL default '',
  `mdp` varchar(30) NOT NULL default '',
  `email` varchar(75) NOT NULL default '',
  `rang` set('Administrateur','Utilisateur') collate latin1_general_ci NOT NULL default 'Utilisateur',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

Créez vous ensuite grâce à phpMyAdmin un compte administrateur...


2. Le formulaire de connexion

Code:
  <form id="form1" name="form1" method="post" action="login.php">
    <a href="inscription.php">Inscription</a><br />
    <table width="9%" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td>Pseudo</td>
      <td width="69%"><input name="pseudo" type="text" id="pseudo"></td>
    </tr>
    <tr>
      <td>Password</td>
      <td><input name="mdp" type="password" id="mdp"></td>
    </tr>
    <tr>
      <td colspan="2">
        <input type="submit" name="Submit" value="Envoyer"></td></tr>
  </table>
  </form>


Ce formulaire HTML simple vous envois vers la partie intéressante de cette première partie du tuto, la page login.php.

Dans cette page login.php nous allons tout d'abord avant même la connexion MySql ou le code HTML mettre cette ligne :
Code:
<? session_start(); ?>

Nous ouvrons ainsi une session qui sera valable soit jusqu'a la fermeture de cette session ou de la fenêtre de votre navigateur... Une fois ceci fait ajouter bien sûr entre les balises PHP votre connexion MySQl, le code commence ici

Code:
<?

if(isset($_POST) && !empty($_POST['pseudo']) && !empty($_POST['mdp'])) {
  extract($_POST);


Cette ligne récupère les données du formulaire grace à POST, l'extract crée une variable pour toutes les valeurs envoyées, ainsi nous avons une varriable $pseudo et une variable $mdp avec les valeurs envoyées...

Code:
  $sql = "select mdp from membres where pseudo='".$pseudo."'";
  $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  $data = mysql_fetch_assoc($req);


Ici nous allons récupérer la valeur du champs mdp de la table ou le pseudo est celui envoyé dans le formulaire...

Code:
  if($data['mdp'] != $mdp) {
    echo '<p>Mauvais identifiants, merci de r&eacute;essayer.</p>';
    exit;
  }

La vérification : Si le mdp envoyé n'est pas égal à celui dans la table, alors on demande de se reconnecter et on stoppe le code de la page ici.

Code:
  else {
    session_start();
    $_SESSION['pseudo'] = $pseudo;
   
   
    echo 'Vous &ecirc;tes actuellement redirig&eacute; vers l\'accueil.';

header( "Location: index.php");
  }  } 

Sinon on commence la session et on est redirigé vers index.php
La seconde accolade sert à fermer la condition de début, si les champs ont étés remplis, il ne nous reste donc plus qu'a l'indiquer si les champs n'ont pas étés remplis :
Code:

else {
  echo '<p>Vous avez oubli&eacute; de remplir un champ.</p>';
header( "Location: index.php");
} ?>


Voilà vous pourrez désormais vous connecter durant un très bref instant

Qué ??? Tu nous à fais faire tout sa pour nous connecter un bref instant ???

Oui, car la session ne durera que si sur la pge vers laquelle le formulaire renvois possède un session_start(); !!!

II. Pages dynamiques et interface d'administration

1. Pages communes

Alors commençons par l'interêt de la dynamisation dans ce sens des pages... Eh bien tout simplement elle permet d'afficher un contenu différent sur une même page selon si l'utilisateur est connecté ou non

Ouvrons donc une session

Quoi vous savez plus comment ??? Je l'ai dis y'a pas longtemps !!!

session_start();

^^tout en haut de la page...

Ensuite dans votre page nous allons insérer le contenu dynamique, je donne d'abord le code complet pour les fainéants et je le décortiquerais ensuite :

Code:
<? if(!isset($_SESSION['pseudo']))
{ $_SESSION['pseudo']='Invité'; }

if($_SESSION['pseudo']=='Invité')
{ include('login.html'); } [color=orange]// si vous n'avez pas de login.html copiez simplement votre form avant l'accolade[/color]
else
{ ?> <a href="profil.php">Profil</a><? } ?>



Décortiquons :

Code:
<? if(!isset($_SESSION['pseudo']))
{ $_SESSION['pseudo']='Invité'; }

Si le pseudo de la session n'est pas définis (pas connecté) alors on crée une variable invité par défaut.

Code:
if($_SESSION['pseudo']=='Invité')
{ include('login.html'); } [color=orange]// si vous n'avez pas de login.html copiez simplement votre form avant l'accolade[/color]


Si le pseudo est le pseudo par défaut alors on inclue le formulaire de connexion de la première partie du tuto...

Code:
else
{ ?> <a href="profil.php">Profil</a><? } ?>


^^Sinon on affiche le lien vers le profil

2. Profil et administration des membres !!!

Alors commençons par la page de profil très simple qui simplement à mettre des valeurs post dans la table

Alors, dans profil.php comme dans toutes les pages il faut donc un ???
session_start();

Alors, après avoir récupérer le pseudo comme dans toutes les pages de la zone membres, nous allons récupérer les valeurs du profil dans la table

Code:

$pseudo = $_SESSION['pseudo'];
$requete = mysql_query("SELECT * FROM membres WHERE pseudo='$pseudo'");
$table=mysql_fetch_assoc($requete);

^^Tout ceci se passe avant la balise <HTML>

Maintenant le formulaire qui réaffiche ces valeurs entre les balises <BODY>

Code:
<form action="profil.php?modifier=1" method="post">
  <table border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td></td>
      <td>Pseudo</td>
      <td><? echo $table['pseudo']; ?></td>
    </tr>
    <tr>
      <td></td>
      <td>E-Mail</td>
      <td><input name="email" type="text" id="email"  value="<? echo $table['email']; ?>"></td>
    </tr>
    <tr>
      <td></td>
      <td>Mot de Passe </td>
      <td><input name="mdp" type="password" id="mdp" value="<? echo $table['mdp']; ?>"></td>
    </tr>
  </table>
    
  <input type="submit" name="Submit" value="Enregistrer les Modifications">
</form>


Comme vous le constatez nous renvoyons la page vers elle même avec une valeur envoyée par lien... Ainsi nous dirons à la page qu'on à déjà envoyé des valeurs...

Donc avant la balise <HTML> mais après la requête visant à récupérer les informations nous allons vérifier si il y à une valeur de modification :

Code:
 if (isset($_GET['modifier']) && $_GET['modifier'] == 1)
{
$mdp = $_POST['mdp'];
$email = $_POST['email'];

$sql = mysql_query("UPDATE membres SET mdp='$mdp', email='$email' WHERE pseudo='$pseudo'") or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
}


Rien de difficile, on vérifie si c'est une modification et si s'en est une eh bien on met à jour

Ce qui au bout du compte devrait vous donner avant la balise HTML :

Code:
<?
[color=orange]//connexion MySql[/color]
session_start();
$pseudo = $_SESSION['pseudo'];
$requete = mysql_query("SELECT * FROM membres WHERE pseudo='$pseudo'");
$table=mysql_fetch_assoc($requete);

if (isset($_GET['modifier']) && $_GET['modifier'] == 1)
{
$mdp = $_POST['mdp'];
$email = $_POST['email'];

$sql = mysql_query("UPDATE membres SET mdp='$mdp', email='$email' WHERE pseudo='$pseudo'") or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
} ?>




LA SUITE PLUS TARD

_________________



Dernière édition par le Mer 10 Mai - 20:19, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Globe
Modérateur Illustration


Nombre de messages: 1067
Age: 19
Date d'inscription: 15/05/2005

MessageSujet: Re: Zone Membres avec messagerie et admin   Mer 10 Mai - 20:08

Maintenant faisons l'administration, pour ce faire nous allons reprendre le formulaire de connexion :face: et de login et les modifier

Code:
  <form id="form1" name="form1" method="post" action="login2.php">
    <a href="inscription.php">Inscription</a><br />
    <table width="9%" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td>Pseudo</td>
      <td width="69%"><input name="pseudo" type="text" id="pseudo"></td>
    </tr>
    <tr>
      <td>Password</td>
      <td><input name="mdp" type="password" id="mdp"></td>
    </tr>
    <tr>
      <td colspan="2">
        <input type="submit" name="Submit" value="Envoyer"></td></tr>
  </table>
  </form>


Le formulaire et maintenant login2.php

Code:
<?

if(isset($_POST) && !empty($_POST['pseudo']) && !empty($_POST['mdp'])) {
  extract($_POST);
  $pseudo = $_POST['pseudo'];
 $mdp= $_POST['mdp'];
  $sql = "SELECT * FROM membres WHERE pseudo='".$pseudo."'";
  $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());


  $data = mysql_fetch_assoc($req);

  if($data['mdp'] != $mdp) {
    echo '<p>Vous vous êtes trompé dans vos identifiants !</p>';
    exit;
  }  else {

    $_SESSION['pseudo'] = $pseudo;
$requete = mysql_query("SELECT * FROM membres WHERE pseudo='$pseudo'");
         $table=mysql_fetch_assoc($requete);
         if ($table['pseudo'] =$membre) { include('pannel.php'); }  }   
}
else {
  echo '<p>Vous n\'avez pas les droits necessaires.</p>';
  exit;
}
?>


Décortiquons les parties nouvelles :

Code:
else {
$_SESSION['pseudo'] = $pseudo;
$requete = mysql_query("SELECT * FROM membres WHERE pseudo='$pseudo'");
         $table=mysql_fetch_assoc($requete);
         if ($table['pseudo'] =$membre) { include('pannel.php'); }  }   
}
else {
  echo '<p>Vous n\'avez pas les droits necessaires.</p>';
  exit;
}


Donc en fait, uen fois la session ouverte, on vérifie si le pseudo confirmé par mdp à pour rang administrateur, si oui eh bien on inclus pannel.php qui sera le panneau d'admin

pannel.php peut d'ailleurs être du html, puisqu'il ne contiendra que des liens vers les différents mods d'admin que vous pourrez ajouter, moi pour ma part je fais simplement une interface de gestion des utilisateurs, ainsi vous pourrez voir leur pseudo, email, et les supprimer si besoin est

Donc voici la page de gestion des enregistrés (membres.php) :

Code:
<? if (isset($_GET['supprimer_membre']))
{
    mysql_query('DELETE FROM membre WHERE id=' . $_GET['supprimer_membre']);
}
?>

<table cellspacing="0">
  <tr>
<th>Supprimer</th>
<th>Pseudo</th>
<th>Mail</th>
</tr>

<?php
$retour = mysql_query('SELECT * FROM membres ORDER BY id DESC');
while ($donnees = mysql_fetch_array($retour))
{
?>

<tr>
<td><?php echo '<a href="membres.php?supprimer_membre=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
<td><?php echo $donnees['pseudo']; ?></td>
<td><?php echo $donnees['email']; ?></td>
</tr>

<?php
}
?>
</table>


En gros la page vérifie si on veux supprimer et affiche une liste des membres avec un lien contenant l'id du membre et l'information de suppression :o

*Prise de marteau dans la gueule*

Idiot tu as oublié de nous chier l'inscription !

_________________

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Aragoon of Hell
Habitué


Nombre de messages: 104
Age: 17
Localisation: France -> Aquitaine -> Pau
Date d'inscription: 08/02/2006

MessageSujet: Re: Zone Membres avec messagerie et admin   Mer 10 Mai - 20:15

HUm, désolé de faire chie* mais :
Citation:

CREATE TABLE `membres` (
`id` int(11) NOT NULL auto_increment,
`pseudo` varchar(30) NOT NULL default '',
`mdp` varchar(30) NOT NULL default '',
`email` varchar(75) NOT NULL default '',
`email` varchar(75) NOT NULL default '',

`rang` set('Administrateur','Utilisateur') collate latin1_general_ci NOT NULL default 'Utilisateur',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;


Un seul champ email ne suffit pas ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.mytholodgia.com/
Globe
Modérateur Illustration


Nombre de messages: 1067
Age: 19
Date d'inscription: 15/05/2005

MessageSujet: Re: Zone Membres avec messagerie et admin   Mer 10 Mai - 20:19

Eheh oui, en effet

_________________

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
despe
Langue pendue


Nombre de messages: 80
Date d'inscription: 12/11/2005

MessageSujet: Re: Zone Membres avec messagerie et admin   Mer 10 Mai - 20:23

hum le code est sympa j avou..
mais etant parano je ne suis pas sur que la fonction extract() regle les pb de sécurité.. peut etre rajouté des htmlentites() addslashes() etc ..
faut que jvois ce que fais exactement la fonction extract :p
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Globe
Modérateur Illustration


Nombre de messages: 1067
Age: 19
Date d'inscription: 15/05/2005

MessageSujet: Re: Zone Membres avec messagerie et admin   Mer 10 Mai - 20:25

Oui, mais bon comme tu sais, ce tutoriel ne servirais que pour des nouveaux venus... Donc les nouveaux venus se foutent de la securité tout comme moi

_________________

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
despe
Langue pendue


Nombre de messages: 80
Date d'inscription: 12/11/2005

MessageSujet: Re: Zone Membres avec messagerie et admin   Mer 10 Mai - 20:36

lol vu comme ca ok
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Globe
Modérateur Illustration


Nombre de messages: 1067
Age: 19
Date d'inscription: 15/05/2005

MessageSujet: Re: Zone Membres avec messagerie et admin   Jeu 11 Mai - 22:48

L'inscription !

Alors le formulaire dans le corps ( BODY ) de votre page inscription.php :
Code:
<form name="form1" method="post" action="inscription.php?inscription=1">
<table>
 <tr>
<td>Votre Pseudonyme</td>
<td><input name="pseudo" type="text" id="pseudo"></td>
</tr>
 <tr>
<td>Votre Email</td>
<td><input name="email" type="text" id="email"></td>
 </tr>
<tr>
<td>Votre Mot de Passe</td>
<td><input name="mdp" type="password" id="mdp"></td>
</tr>
 <tr>
<td>Confirmation du  Mot de Passe</td>
<td><input name="mdp2" type="password" id="mdp2"></td>
</tr>
<tr>
<td>
<input type="submit" name="Submit" value="S'inscrire"></td>
<td></td>
</tr>
</table>
</form>


Rien de bien compliqué, un champ pour le pseudo, un pour le mail, un pour le mdp et un pour la confirmation...

Maintenant, n'importe ou sur la page :

Code:
<? if (isset($_GET['inscription']) && $_GET['inscription'] == 1)
{ // Si la valeur inscription est envoyée et qu'elle veut 1
 if(isset($_POST) && !empty($_POST['pseudo']) && !empty($_POST['mdp']) && !empty($_POST['mdp2']) && !empty($_POST['email'])) { // Si tout les champs sont remplis
$pseudo2 = $_POST['pseudo'];
$mdp2 = $_POST['mdp'];
$mdp3 = $_POST['mdp2'];
$email2 = $_POST['email'];

// On recupere les valeurs
              if($mdp2==$mdp3) { [color=orange]// Si les deux mdps correspondent on insere dans la BDD[/color]
$sql = mysql_query('INSERT INTO membres VALUES("","'.$pseudo2.'", "'.$mdp2.'", "'.$email2.'")') or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

echo 'Vous êtes bien inscris !'; } else { echo' Les deux mots de passe ne correspondent pas.'; }
} else { echo'Vous devez remplir tous les champs !'; } } ?>

_________________

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
SilverNight
Nouveau


Nombre de messages: 5
Date d'inscription: 28/10/2005

MessageSujet: Re: Zone Membres avec messagerie et admin   Dim 2 Juil - 18:15

Bonjour,

Je sais que ce tuto ne date pas d'aujourd'hui, mais j'ai une question, il ne manquerait pas par exemple dans cette parti,

Code:
<? if (isset($_GET['inscription']) && $_GET['inscription'] == 1)
{ // Si la valeur inscription est envoyée et qu'elle veut 1
 if(isset($_POST) && !empty($_POST['pseudo']) && !empty($_POST['mdp']) && !empty($_POST['mdp2']) && !empty($_POST['email'])) { // Si tout les champs sont remplis
$pseudo2 = $_POST['pseudo'];
$mdp2 = $_POST['mdp'];
$mdp3 = $_POST['mdp2'];
$email2 = $_POST['email'];

// On recupere les valeurs
              if($mdp2==$mdp3) { [color=orange]// Si les deux mdps correspondent on insere dans la BDD[/color]
$sql = mysql_query('INSERT INTO membres VALUES("","'.$pseudo2.'", "'.$mdp2.'", "'.$email2.'")') or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

echo 'Vous êtes bien inscris !'; } else { echo' Les deux mots de passe ne correspondent pas.'; }
} else { echo'Vous devez remplir tous les champs !'; } } ?>


La connection a la base de donnée? ( ainsi que dans les autres parties du tuto )
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
transgohan
Langue pendue


Nombre de messages: 68
Date d'inscription: 10/06/2006

MessageSujet: Re: Zone Membres avec messagerie et admin   Dim 2 Juil - 20:03

Ouais enfin bon... Si la personne qui vient voir ce tutorial ne sait pas le faire elle même...
Elle se devra d'aller voir un autre tutorial avant. ^^
Disons que ce tutorial est fait pour quelqu'un qui a DEJA des bases en php.

_________________
Auberpg: mon jdr en construction
Version beta ouverte: necessite RP !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Saturos
Nouveau


Nombre de messages: 2
Age: 25
Date d'inscription: 07/07/2006

MessageSujet: Re: Zone Membres avec messagerie et admin   Ven 7 Juil - 20:29

Ouai et pour les gros b**let comme certain d'entre nous qui ont une base de donné comme moi :mrgreen: :mrgreen: mais je voit pas comment je pourais faire pour que les membres soient bien inscrit :suspect:
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Globe
Modérateur Illustration


Nombre de messages: 1067
Age: 19
Date d'inscription: 15/05/2005

MessageSujet: Re: Zone Membres avec messagerie et admin   Sam 8 Juil - 12:17

En fait en effet j'ai hommis de traiter de la connexion ça me paraissait trop évident, de toute manière je dois le finir ce tuto un jour ou j'aurais le courage.

Sinon Saturos, il y'a tout un post traitant de l'inscription, mon post précédent sur ce topic d'ailleurs, lis bien et si tu comprend toujours pas je ferais plus simple.

_________________

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
 

Zone Membres avec messagerie et admin

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Créer son jeu en PHP :: PROGRAMMATION :: Tutoriaux - scripts-
Poster un nouveau sujet   Répondre au sujet