PHP Script de déblocage de personnage // MaNGOS
Bonjour, je viens de réaliser un script php qui permet de débloquer son personnage:
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
$characters = 'characters';          //base de données des personnages

// NE PAS TOUCHER //
$connexion = mysql_connect($host ,$user ,$pass) or die(mysql_error());
?>

Fichier unlock.php:
Code :
<?php
session_start();
error_reporting(0);
include ('config.php');
echo'<center>';
switch ($_GET['action'])
        {
        case "":
        echo'<h2>Deloquer mon personnage</h2>
<form action="unlock.php?action=unlock" 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 />
<b>Personnage :</b></font><br /><input type="text" name="character"><br /><br />
<input type="submit" value="Debloquer" name="connexion" >
</form>';
break;

case "unlock":
mysql_select_db($realmd,$connexion) or die("Impossible de se connecter à la base de données");
        $username = $_POST['pseudo'];
        $password = $_POST['pass'];
        $character = $_POST['character'];
if (preg_match('#INSERT|SELECT|UNION|FROM|WHERE|DELETE#', $username) OR preg_match('#INSERT|SELECT|UNION|FROM|WHERE|DELETE#', $password) OR preg_match('#INSERT|SELECT|UNION|FROM|WHERE|DELETE#', $character))
        {
        echo 'Injection SQL detectee.<br /><a href=unlock.php>Reessayer</a>';
        }
        else {
if (empty($username) OR empty($password) OR empty($character))
    {
    echo '- Tous les champs ne sont pas remplis.<br /><a href=unlock.php>Reessayer</a>';
    $remp = 0;
    }
    else {
    $cous = mysql_query("SELECT * FROM account WHERE username='$username'");
    $countus = mysql_num_rows($cous);
if ($countus == 0)
{
echo 'Le compte d\'utilisateur n\'existe pas.<br /><a href=unlock.php>Reessayer</a>';
}
else
{
    $acci = mysql_query("SELECT * FROM account WHERE username='$username'");
    $account=  mysql_fetch_assoc($acci);
    
    $sha = ''.$username.':'.$password.'';
    $shapass= sha1($sha);
    $shacc = $account['sha_pass_hash'];
    if($shapass == $shacc)
    {
    mysql_select_db($characters,$connexion) or die("Impossible de se connecter à la base de données.<a href=unlock.php>Reessayer</a>");
    $coch = mysql_query("SELECT * FROM characters WHERE name='$character'");
    $countch = mysql_num_rows($coch);
    if ($countch == 0)
{
echo 'Le personnage n\'existe pas.<br><a href=unlock.php>Reessayer</a>';
}
else
{
    $char = mysql_query("SELECT * FROM characters WHERE name='$character'");
    $charact=  mysql_fetch_assoc($char);
if($charact['account'] != $account['id'])
{
echo 'Ce personnage n\'est pas sur votre compte.<br /><a href=unlock.php>Reessayer</a>';
}
else
{
if ($charact['online'] ==1)
{
echo 'Ce personnage est en ligne. Veuillez vous deconnecter pour le debloquer.<br /><a href=unlock.php>Reessayer</a>';
}
else
{
$guid = $charact['guid'];
$homebinb = mysql_query("SELECT * FROM character_homebind WHERE guid='$guid'");
    $homb = mysql_fetch_assoc($homebind);
    $map = $homb['map'];
    $zonex = $homb['position_x'];
    $zoney = $homb['position_y'];
    $zonez = $homb['position_z'];
    $zone = $homb['zone'];
mysql_query("UPDATE characters SET map='$map', position_x='$zonex', position_y='$zoney', position_z='$zonez', zone='$zone' WHERE name=$character");
echo 'Votre personnage a &eacute;t&eacute; d&eacute;bloqu&eacute; avec succes. Il est maintenant dans son auberge.<br><a href=index.php>Retour</a>';

}
}
}
}
    else
    {
    echo 'Le mot de passe n\'est pas bon !<br /><a href=unlock.php>Reessayer</a>';
    }
}
}
}
}
echo '</center>';
?>
Sympa, par contre c'est un peu Usine à gaz Clin
Tu n'as pas compris le principe des injections SQL. Regarde ici : https://www.owasp.org/index.php/SQL_Injection
Salut,

Merci pour petit script.
Par contre il y en a vraiment de partout ! Smile
Tu devrais faire quelques petites fonctions pour raccourcir le tout ! Clin

Amicalement Allan.
C'est pour cela qu'à mon humble avis il serait d'une plus grande utilité de se baser sur un framework Web autour des tables de wow. Au lieu d'éparpiller des scripts redondants par ci et par là
(08-08-2011 18:55)Elmsroth a écrit :  C'est pour cela qu'à mon humble avis il serait d'une plus grande utilité de se baser sur un framework Web autour des tables de wow. Au lieu d'éparpiller des scripts redondants par ci et par là

Sur le coup je te suis ! Pour ma part je préfère codé des scripts à partir d'une structure plutôt que de faire des scripts à part et complètement différent au niveau de leurs structures.
Après je pense que dans son cas, il voulais juste faire plaisir en partageant et il n'a pas fait attention que si on voulait adapté son script ce serait la misère ! Heureux

Retourner en haut Accueil