PHP Système de connexion et de gestion de compte // MaNGOS
Voici un script que j'ai codé en grande partie ; c'est un système de connexion/ gestion de compte qui permet de visualiser ses persos et de changer ses informations personnelles telles que mot de passe, adresse email et expansion.
Vous pouvez télécharger directement le pack ici ou mettre les scripts dans votre site web

Fichier config.php :
Code :
<?php
$host = 'localhost';          //hote mysql
$user = 'root';             //nom d'utilisateur mysql
$pass = '';                   //mot de passe mysql
$realmd = 'realmd';          //base de données des comptes
$mangos = 'mangos';          //base de données mangos
$characters = 'characters';          //base de données des personnages

// NE PAS TOUCHER //
$connexion = mysql_connect($host ,$user ,$pass) or die(mysql_error());
$connect = TRUE;
$ip = "127.0.0.1";
$port = "3306";
$alow_connexion = "1";
$installed = 1;
?>

Fichier log.php:
Code :
<?php
session_start();
error_reporting(0);
include ('config.php');
mysql_select_db($realmd,$connexion) or die(mysql_error());
if (isset($_POST['connexion']))
{
    if (!empty($_POST['pseudo']) and !empty($_POST['pass']))
    {
        $pseudo = htmlentities($_POST['pseudo']);
        $pass = htmlentities($_POST['pass']);
        echo $pseudo,'<br>';
        echo $pass,'<br>';
        mysql_select_db($realmd);
        
        $requete = mysql_query("SELECT COUNT(*) AS nb_pseudo FROM account WHERE username='".$pseudo."'") or die (mysql_error());
        $retour_nb_pseudo = mysql_fetch_assoc($requete);
        
        
        if ($retour_nb_pseudo['nb_pseudo'] == 1)
        {
            $compte = mysql_fetch_assoc(mysql_query("SELECT * FROM account WHERE username='".$pseudo."'")) or die (mysql_error());                
            {                        
                $sql = mysql_query("SELECT COUNT(*) AS nombre FROM account WHERE sha_pass_hash=SHA1(CONCAT(UPPER('$pseudo'),':',UPPER('$pass'​)))");
                $sha = mysql_fetch_assoc($sql);
                if ($sha['nombre'] == 1)
                {
                        $_SESSION['logged'] = true;
                        $_SESSION['id'] = $compte['id'];                                        
                        $_SESSION['pseudo'] = $pseudo;
                        $_SESSION['niveau'] = $compte['gmlevel'];    
                        $_SESSION['username'] = $compte['username'];                            
                        ?>                            
                        <script language="JavaScript">
                            <!--
                            window.location.href="membre.php"
                            //-->
                        </script>
                        <p>Vous avez ete connecte. <a href="membre.php?page=membre">Gestion de compte</a>.</p>
                        <?php
                }
                else
                {
                    echo '<div class="erreur">Le mot de passe n\'est pas bon.</div>';
                }
            }
        }
        else
        {
            echo '<div class="erreur">Le pseudo n\'existe pas.</div>';
        }
    }
    else
    {
        echo '<div class="erreur">Tout les champs ne sont pas remplis</div>';
    }
}
?>

Fichier connexion.php:
Code :
<?php include "log.php" ;
if ($_SESSION['logged'] == 0)
echo'                        <form action="?action=connexion" method="post">
                        
                            <label for="labe25"><center>Nom de compte : </label></center>
                            <center><input type="text" name="pseudo"></center>
                            <label for="labe26"><center>Mot de passe :</label></center>
                            <center><input type="password" name="pass"></center>
                            <center><br><input type="submit" value="Connexion" name="connexion"></center>
                        </form>';
else
echo'Vous etes deja connecte';
                        ?>

Fichier membre.php :
Code :
<?php
session_start();
error_reporting(0);
include ('config.php');

function deconnexion()
{
    $_SESSION = array(); //Destruction des variables.
    session_destroy(); //Destruction de la session.
    ?>
    <script language="JavaScript">
    <!--
    window.location.href="index.php"
    //-->
    </script>
    <?php
}

mysql_select_db($realmd);
  $points = mysql_query("SELECT * FROM account WHERE id = '$_SESSION[id]'");
  $donnees = mysql_fetch_array($points);
if ($_SESSION['logged'] == 0)
{
if ($_SESSION['logged'] == 0)
            {
            echo "
<h3><center><b>Vous devez etre connecte pour acceder a cette partie !</center></b></h3>
<center>
<form action=\"connexion.php?action=connexion\" method=\"post\">
<b>Nom de compte :</b></font><br /><input type=\"text\" name=\"pseudo\"><br />
<b>Mot de passe  :</b></font><br <input type=\"password\" name=\"pass\"><br /><br />
<input type=\"submit\" value=\"Connexion\" name=\"connexion\" >
</center></form>";
            }
            else
            {
            echo "
<h3><center><b>Une erreur est survenue merci de la signaler au WebMaster</center></b></h3>
<center><a href=\"membre.php\">Retour</a></center>";
            }
}
else
{
if ($alow_connexion == 0)
{
?>
<center><h2><u>Gestion de compte :</u><h2></center>
<center><h3>La gestion de compte est en maintenance.<h3></center>
<meta http-equiv="refresh" content="5;url=index.php" />
<center>Vous alez être redirige dans 5 secontes !</center>
<?php
}
else
{
?>
    <?php
mysql_select_db($realmd,$connexion) or die(mysql_error());
        $post = $_SESSION['id'];
            $sql="SELECT * FROM account WHERE id='$post'";
            $resultat=mysql_query($sql) or die ("Erreur requette SQL");
            $info=mysql_fetch_array($resultat);?>
<center><h2><u>Gestion de Compte :</h2></u><br />
    Bienvenue, <b><?php echo $_SESSION['username']; ?>!<br /></b>
    <u>Votre compte est de niveau <b><?php if ($_SESSION['niveau'] ==0) echo 'joueur';
    if ($_SESSION['niveau'] ==1) echo 'moderateur';
if ($_SESSION['niveau'] ==2) echo 'maitre de jeu';
if ($_SESSION['niveau'] ==3) echo 'administrateur';
    ?></b></u><br />
    <u>Adresse email : <b><?php echo $info["email"];  ?></b></u><br />
    <u>Expansion du compte : <b><?php  if ($info["expansion"] ==0) echo 'World of Warcraft classique';  
    if ($info["expansion"] ==1) echo 'The Burning Crusade';
    if ($info["expansion"] ==2) echo 'Wrath of The Lich King';
    if ($info["expansion"] ==3) echo 'Cataclysme';
    ?></b></u><br />
    <u>Derniere adresse IP : <b><?php echo $info["last_ip"]; ?></b></u><br />
    <u>Votre derniere connexion date de : <b><?php echo $info["last_login"]; ?>
</b></u><br />
      <?php
mysql_select_db($mangos,$connexion) or die(include('install.php'));
if (!$_SESSION['logged']) // Les opérations de quand on est loggé
{
    $_SESSION['logged'] = false;
    $_SESSION['securite'] = 0;
}
if (isset($_GET['deconnexion']))
{
    deconnexion();
}
?>
      <hr size="1" noshade="noshade" />
      &nbsp;&nbsp;&nbsp;&nbsp;<a href="mespersos.php"><img src="img/perso.png" /></a><br />
      &nbsp;&nbsp;&nbsp;&nbsp;<a href="mpass.php"><img src="img/mdp.png" /></a><br />
      &nbsp;&nbsp;&nbsp;&nbsp;<a href="mmail.php"><img src="img/email.png" /></a><br />
      &nbsp;&nbsp;&nbsp;&nbsp;<a href="mexp.php"><img src="img/exp.png" /></a><br />
      &nbsp;&nbsp;&nbsp;&nbsp;<a href="membre.php?deconnexion" class="deconnexion"> Deconnexion</a>

          <br />
          <br />
          <br />
<?php
}
}
?>

Fichier mespersos.php :
Code :
<?php include
session_start();
error_reporting(0);?>
<h3>Mes personnages</h3>
<?php
include ('config/config.php');
mysql_select_db($realmd);
  $points = mysql_query("SELECT * FROM account WHERE id = '$_SESSION[id]'");
  $donnees = mysql_fetch_array($points);
if ($_SESSION['logged'] == 0)
{
if ($_SESSION['logged'] == 0)
            {
            echo "
<h3><center><b>Vous devez etre connecte pour acceder a cette partie !</center></b></h3>
<center>
<form action=\"connexion.php?action=connexion\" method=\"post\">
<b>Nom de compte :</b></font><br /><input type=\"text\" name=\"pseudo\"><br />
<b>Mot de passe  :</b></font><br <input type=\"password\" name=\"pass\"><br /><br />
<input type=\"submit\" value=\"Connexion\" name=\"connexion\" >
</center></form>";
            }
            else
            {
            echo "
<h3><center><b>Une erreur est survenue merci de la signaler au WebMaster</center></b></h3>
<center><a href=\"membre.php\">Retour</a></center>";
            }
}
else
{
if ($alow_connexion == 0)
{
?>
<center><h2><u>Gestion de compte :</u><h2></center>
<center><h3>La gestion de compte est en maintenance.<h3></center>
<meta http-equiv="refresh" content="5;url=index.php" />
<center>Vous alez être redirige dans 5 secontes !</center>
<?php
}
else
{
?>
<?php
include "config.php";
mysql_select_db($characters) or die();
$query = "SELECT * FROM `characters` WHERE account='".$_SESSION['id']."' ORDER BY `name` ASC";
$result = mysql_query($query) or die (mysql_error());
echo  '<table width=520 height=50 border "1">
</tr><th> Nom </th><th>Race </th><th> Classe </th><th> niveau </th><th><center> Argent </center></th></tr>';
while ($row = mysql_fetch_array($result)){
    if($cpt % 2){
        $cssclass = 'background-color: #;';
    }
    else{
        $cssclass = 'background-color: #;';
    }
    echo '<center><tr style="'.$cssclass.'">
                <td><center>'.$row['name'].'</td>
                <td>';
    if ($row['race']==1){
        echo '<center><img src="img/classes/1-0.gif" title="Humain" alt="Humain"/></td>';
    }
    else if ($row['race']==2){
        echo '<center><img src="img/classes/2-0.gif" title="Orc" alt="Orc"/></td>';
    }
    else if ($row['race']==3){
        echo '<center><img src="img/classes/3-0.gif" title="Nain" alt="Nain"/></td>';
    }
    else if ($row['race']==4){
        echo '<center><img src="img/classes/4-0.gif" title="Elf de la nuit " alt="Elfe de la nuit"/></td>';
    }
    else if ($row['race']==5){
        echo '<center><img src="img/classes/5-0.gif" title="Un-dead" alt="Mort vivant"/></td>';
    }
    else if ($row['race']==6){
        echo '<center><img src="img/classes/6-0.gif" title="Tauren" alt="Tauren"/></td>';
    }
    else if ($row['race']==7){
        echo '<center><img src="img/classes/7-0.gif" title="Gnome" alt="Gnome"/></td>';
    }
    else if($row['race']==8){
        echo '<center><img src="img/classes/8-0.gif" title="Troll" alt="Troll"/></td>';
    }
    else if($row['race']==9){
        echo '<center><img src="img/classes/9-0.gif" title="Troll" alt="Troll"/></td>';
    }
    else if($row['race']==10){
        echo '<center><img src="img/classes/10-0.gif" title="Kikooelf" alt="Elfe de sang"/></td>';
    }
    else if($row['race']==11){
        echo '<center><img src="img/classes/11-0.gif" title="Draneil" alt="Draenei"/></td>';
    }
    $class = $row['class'];
        
        switch ($class){
    
        case "1" :
            echo '<td><center><img src="img/classes/guerrier.gif" title="Guerrier" alt="Guerrier"/></td>';
        break;
        
        case "2" :
            echo '<td><center><img src="img/classes/paladin.gif" title="Palagay :p"alt="Paladin"/></td>';
        break;
            
        case "3" :
            echo '<td><center><img src="img/classes/chasseur.gif" title="Chasseur" alt="Chasseur"/></td>';
        break;
                    
        case "4" :
            echo '<td><center><img src="img/classes/voleur.gif" title="Voleur" alt="Voleur"/></td>';
        break;
                    
        case "5" :
            echo '<td><center><img src="img/classes/prêtre.gif" title="Prêtre" alt="Prêtre"/></td>';
        break;
                case "6" :
            echo '<td><center><img src="img/classes/dk.gif" title="Chevalier de la mort" alt="Chevalier de la mort"/></td>';
        break;
                
        case "7" :
            echo '<td><center><img src="img/classes/chaman.gif" title="Chaman" alt="Chaman"/></td>';
        break;
                    
        case "8" :
            echo '<td><center><img src="img/classes/mage.gif" title="Mage" alt="Mage"/></td>';
        break;
                    
        case "9" :
            echo '<td><center><img src="img/classes/demoniste.gif" title="Démoniste" alt="Démoniste"/></td>';
        break;
                    
                                case "11" :
                                                echo '<td><center><img src="img/classes/druide.gif" alt="Druide"/></td>';
                                break;
}


$cpt++;
echo '<td><center>'.$row['level'].'</td>';
echo '<td><div align="right">';
$money = $row['money'];
$inverse_money = strrev($money) ;
$pieces = str_split($inverse_money, 2);
$pa_pc = (str_split($inverse_money, 4));
$endroit_papc = strrev($pa_pc[0]);
$remplace = array($endroit_papc);
$po = str_replace($remplace, "", $money);
$pc = strrev($pieces[0]);
$pa = strrev($pieces[1]);
switch ($money) {

case 0 :
    echo "0&nbsp;<img src='img/or.gif' />&nbsp;";
    break;
default:
    switch ($po) {
    
    case! '' :
    echo $po . "&nbsp;<img src='img/or.gif' />&nbsp;";
    break;
    
    default:
    break;
    
    }
    
    switch ($pa) {
    
    case! '' :
    echo $pa . "&nbsp;<img src='img/argent.gif' />&nbsp;";
    break;
    
    default:
    break;
    
    }
    
    switch ($pc) {
    
    case! '' :
    echo $pc . "&nbsp;<img src='img/cuivre.gif' />&nbsp;";
    break;
    
    default:
    break;
    
    }
    
    break;

}
echo '</td></div>';
echo '</tr>';
}
echo '</table>';
?>    <br />  &nbsp;&nbsp;&nbsp;&nbsp;<a href="membre.php">Retour a la gestion de compte</a>

<?php
}
}
?>

Fichier mexp.php :
Code :
<?php
session_start();
error_reporting(0);
include ('config.php');
include ('log.php');
mysql_select_db($realmd,$connexion) or die(mysql_error());
        $post = $_SESSION['id'];
            $sql="SELECT * FROM account WHERE id='$post'";
            $resultat=mysql_query($sql) or die ("Erreur requette SQL");
            $info=mysql_fetch_array($resultat);
            $datas2 = mysql_query("SELECT * FROM account WHERE id= '$id'");
$donnees3 = mysql_fetch_array($datas2);
            
if ($_SESSION['logged'] == 1)
echo'                <center><form action="mexp.php?action=valide_modify" method="POST">
                        
                            <b><u>Nom de compte :
                            <input readonly disabled type="text" name="username" value="'.$info["username"].'" size="30" maxsize="50"><br />

                    <label for="label30">Nouvelle Expansion :</label>
                                        <select name="newexp" id="label30">
                                            <option value="2"><font color="#006666">Wrath of the Lich King</font></option>
                                            <option value="1">Burning Crusade</option>
                                            <option value="0">World of Warcraft</option>
                                        </select>                        
                    <br><input type="submit" value="Modifier"></form>
                    <a href="membre.php">Retour</a><br><br>';
                    else
                    echo 'Vous devez vous connecter pour avoir acces a cette partie du site. <br><br>                        
                    <form action="?action=connexion" method="post">
                        
                            <label for="labe25"><center>Nom de compte : </label></center>
                            <center><input type="text" name="pseudo"></center>
                            <label for="labe26"><center>Mot de passe :</label></center>
                            <center><input type="password" name="pass"></center>
                            <center><br><input type="submit" value="Connexion" name="connexion"></center>
                        </form>';
                    switch ($_GET['action'])
                    {
                    case "valide_modify":
$id = $_SESSION['id'];

if ($donnees1['online'] == 1)
{
?>
<center><p><h3>Vous êtes actuelement connecté en jeu.<h3><h4> merci de vous déconnecter.</h4></p></center>
<?php
}
else
{
        $id = $_SESSION['id'];
        $username = trim(htmlspecialchars($_SESSION['pseudo']));
        $expansion = $_POST['newexp'];
        mysql_select_db($realmd,$connexion) or die(mysql_error());
            mysql_query("UPDATE account SET expansion = '".$_POST['newexp']."' WHERE username = '".$_SESSION['pseudo']."'");
            echo "<center><h3>Votre expansion a bien ete modifiee !</h3></center>";
}
break;
}
?>

Fichier mmail.php :
Code :
<?php
session_start();
error_reporting(0);
include ('config.php');
include ('log.php');
mysql_select_db($realmd,$connexion) or die(mysql_error());
        $post = $_SESSION['id'];
            $sql="SELECT * FROM account WHERE id='$post'";
            $resultat=mysql_query($sql) or die ("Erreur requette SQL");
            $info=mysql_fetch_array($resultat);
            $datas2 = mysql_query("SELECT * FROM account WHERE id= '$id'");
$donnees3 = mysql_fetch_array($datas2);
            
if ($_SESSION['logged'] == 1)
echo'                <center><form action="mmail.php?action=valide_modify" method="POST">
                        
                            <b><u>Nom de compte :
                            <input readonly disabled type="text" name="username" value="'.$info["username"].'" size="30" maxsize="50"><br />
                        
                            <b><u>Adresse E-mail :
                            <input type="text" name="newmail" value="'.$info["email"].'" size="30" maxsize="50"><br />
                    
                    <br><input type="submit" value="Modifier"></form>
                    <a href="membre.php">Retour</a><br><br>';
                    else
                    echo 'Vous devez vous connecter pour avoir acces a cette partie du site. <br><br>                        
                    <form action="?action=connexion" method="post">
                        
                            <label for="labe25"><center>Nom de compte : </label></center>
                            <center><input type="text" name="pseudo"></center>
                            <label for="labe26"><center>Mot de passe :</label></center>
                            <center><input type="password" name="pass"></center>
                            <center><br><input type="submit" value="Connexion" name="connexion"></center>
                        </form>';
                    switch ($_GET['action'])
                    {
                    case "valide_modify":
$id = $_SESSION['id'];

if ($donnees1['online'] == 1)
{
?>
<center><p><h3>Vous êtes actuelement connecté en jeu.<h3><h4> merci de vous déconnecter.</h4></p></center>
<?php
}
else
{
        $id = $_SESSION['id'];
        $username = trim(htmlspecialchars($_SESSION['pseudo']));
        $email = $_POST['newmail'];
        mysql_select_db($realmd,$connexion) or die(mysql_error());
            mysql_query("UPDATE account SET email = '".$_POST['newmail']."' WHERE username = '".$_SESSION['pseudo']."'");
            echo "<center><h3>Votre adresse email a bien ete modifiee !</h3></center>";
}
break;
}
?>

Fichier mpass.php :
Code :
<?php
session_start();
error_reporting(0);
include ('config.php');
include ('log.php');
mysql_select_db($realmd,$connexion) or die(mysql_error());
        $post = $_SESSION['id'];
            $sql="SELECT * FROM account WHERE id='$post'";
            $resultat=mysql_query($sql) or die ("Erreur requette SQL");
            $info=mysql_fetch_array($resultat);
            $datas2 = mysql_query("SELECT * FROM account WHERE id= '$id'");
$donnees3 = mysql_fetch_array($datas2);
            
if ($_SESSION['logged'] == 1)
echo'                <center><form action="mpass.php?action=valide_modify" method="POST">
                        
                            <b><u>Nom du compte :
                            <input readonly disabled type="text" name="username" value="'.$info["username"].'" size="30" maxsize="50"><br />
                        
                        
                            <b><u>Mot de passe :
                            <input type="password" name="passnew" value="******" size="30" maxsize="40"><br />
                    
                    <br><input type="submit" value="Modifier"></form>
                    <a href="membre.php">Retour</a><br><br>';
                    else
                    echo 'Vous devez vous connecter pour avoir acces a cette partie du site. <br><br>                        
                    <form action="?action=connexion" method="post">
                        
                            <label for="labe25"><center>Nom de compte : </label></center>
                            <center><input type="text" name="pseudo"></center>
                            <label for="labe26"><center>Mot de passe :</label></center>
                            <center><input type="password" name="pass"></center>
                            <center><br><input type="submit" value="Connexion" name="connexion"></center>
                        </form>';
                    switch ($_GET['action'])
                    {
                    case "valide_modify":
$id = $_SESSION['id'];

if ($donnees1['online'] == 1)
{
?>
<center><p><h3>Vous êtes actuelement connecté en jeu.<h3><h4> merci de vous déconnecter.</h4></p></center>
<?php
}
else
{
        $id = $_SESSION['id'];
        $username = trim(htmlspecialchars($_SESSION['pseudo']));
        $password = $_POST['passnew'];
        mysql_select_db($realmd,$connexion) or die(mysql_error());
            mysql_query("UPDATE account SET sha_pass_hash=SHA1(CONCAT(UPPER('$username'),':',UPPER('$pas​sword'))) WHERE id='$id'");
            echo "<center><h3>Votre mot de passe a bien été modifié !</h3></center>";
}
break;
}
?>

Dossier img:http://www.mediafire.com/?o3nprxznl9tpq
Merci, cela peut me servir.
Salut,

J'ai passé un bref coup d'oeil à ton script et j'y ai trouvé un petit problème.

Dans le script "Log.php" on trouve cette ligne :
Code PHP :
$sql mysql_query("SELECT COUNT(*) AS nombre FROM account WHERE sha_pass_hash=SHA1(CONCAT(UPPER('$pseudo'),':',UPPER('$pass')))"); 
En faisant ça, tu va juste chercher dans la table account si ce mot de passe existe.
Mais le but est de savoir si ce mot de passe correspond bien au nom de compte choisi.

Donc il faut modifier la ligne de cette façon :
Code PHP :
$sql mysql_query("SELECT COUNT(*) AS nombre FROM account WHERE `sha_pass_hash` = SHA1(CONCAT(UPPER('".$pseudo."'),':',UPPER('".$pass."'))) AND `username` = '".$pseudo."' LIMIT 1"); 

Je n'ai pas encore regarder tous les scripts et je ne compte pas le faire mais je pense qu'il y a encore pas mal d'erreurs de ce genre.

Bonne continuation !
Bonjour,
J'ai cette erreur dans mespersos.php :

Code PHP :
Warning: include(1) [function.include]: failed to open streamNo such file or directory in mespersos.php on line 2

Warning
: include() [function.include]: Failed opening '1' for inclusion (include_path='.;C:\php5\pear'in mespersos.php on line 2 

Sinon super truc Gg
Normal regarde le code de mesperso.php ...
<?php include

on va pas aller loin avec ça.

Mais ne vous en faites pas, http://code.google.com/p/woxys/ sera bientôt dispo..
Code :
$pseudo = htmlentities($_POST['pseudo']);
$pass = htmlentities($_POST['pass']);
Inutile et dangereux ! Clin
<?php //Niveau du compte
if ($_SESSION['gmlevel'] =<1) echo 'moderateur';
if ($_SESSION['gmlevel'] =<2) echo 'maitre de jeu';
if ($_SESSION['gmlevel'] =<3) echo 'Chef de royaume';
?>

ce truc la ne m'affiche pas réellement le niveau du compte en faite il reste a joueur... tu as une solution ?
Les champs GMlevel ont changé de table depuis.. donc sois tu refais le système sois tu fais ton site toi même (apprendre le php ca peut être pratique aussi car le langage est super simple et tu peux modifier le script comme tu en as envie surtout que là le script est vraiment pas compliqué Clin

De plus, l'utilisation des fonctions procédurales de type mysql_XXX sont à proscrire.

Il faut utiliser désormais la version objet de mysqli ou PDO.

C'est comme si tu roulais en 2CV aujourd'hui alors que tu pourrais te payer une bagnole hybride.
Ca a changer Oo je savasi pas x) un bye que j'ai pas toucher au core x)
T'es sûr que ça a changer ? C'est sous Trinity que ça a changer mais sous MaNGOS il me semble que c'est toujours la même chose !! Smile

Retourner en haut Accueil