Ton site est très bien, hormis ce soucis. :')
Et hélas, ceci ne règle pas la connexion, hélas.
Mais je te +1 juste pour avoir pris la peine de m'aider, et bien sur d'avoir codé le site.
Erreur d'inscription/connexion Trinity Cataweb
|
(02-09-2011 13:28)deathart a écrit :Quand je vois ça, je comprend pourquoi ça fonctionne pas très bien.Code PHP :
<?php
//////////////////////////////////////////////////
// *MaNGOS-Cata-Web* //
// //
// Site développé par Allan pour Easy-MaNGOS //
//////////////////////////////////////////////////
require_once('includes/classes/class.mcw.php');
?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr-fr">
<head>
<title><?php echo $array_site['nom']; ?> > Connexion</title>
<?php include_once('includes/html/head.html'); ?>
</head>
<body class="fr-fr homepage">
<div id="wrapper">
<?php include_once('includes/html/header/accueil.html'); ?>
<div id="content">
<div class="content-top">
<div class="content-bot">
<div id="homepage">
<div id="left">
<?php include_once('includes/html/slideshow.html'); ?>
<?php include_once('includes/html/featured-news.html'); ?>
<div id="news-updates">
<div class="news-article first-child">
<h3>
<a>Connexion</a>
</h3>
</div>
<?php
if($_SESSION['login'] && $_SESSION['login'] == TRUE)
{
echo '
<script language="javascript">
alert("Erreur : Vous êtes déjà connecté !");
document.location.href="index.php"
</script>';
}else
{
if(isset($_POST['connexion']))
{
if(!empty($_POST['login']) AND !empty($_POST['password']))
{
$login = mysql_real_escape_string(htmlentities($_POST['login']));
$password = mysql_real_escape_string(htmlentities($_POST['password']));
$account_username = doquery("SELECT * FROM `account` WHERE `username` = '".$login."'", 0, "db_realmd", FALSE);
$row_account_username = mysql_fetch_array($account_username);
$account_banned_id = doquery("SELECT * FROM `account_banned` WHERE `id` = '".$row_account_username['id']."' AND `active` = '1'", 0, "db_realmd", FALSE);
$row_account_banned_id = mysql_fetch_array($account_banned_id);
$ip_banned = doquery("SELECT * FROM `ip_banned` WHERE `ip` = '".$ip."' LIMIT 1", 0, "db_realmd", FALSE);
$row_ip_banned = mysql_fetch_array($ip_banned);
if(mysql_num_rows($ip_banned) == 0)
{
if(mysql_num_rows($account_banned_id) == 0)
{
if(mysql_num_rows($account_username) > 0)
{
$account_password = doquery("SELECT * FROM `account` WHERE `sha_pass_hash` = SHA1(CONCAT(UPPER('".$login."'),':',UPPER('".$password."')))", 0, "db_realmd", FALSE);
if(mysql_num_rows($account_password) > 0)
{
$_SESSION['login'] = TRUE;
$_SESSION['id'] = $row_account_username['id'];
$_SESSION['username'] = $login;
echo '
<script language="javascript">
alert("Connexion réussie ... Bienvenue '.$_SESSION['username'].' !");
document.location.href="index.php"
</script>';
}else
{
echo '
<script language="javascript">
alert("Erreur : Le pseudo ou le mot de passe choisis est invalide ...");
document.location.href="connexion.php"
</script>';
}
}else
{
echo '
<script language="javascript">
alert("Erreur : Le pseudo ou le mot de passe choisis est invalide ...");
document.location.href="connexion.php"
</script>';
}
}else
{
echo '
<script language="javascript">
alert("Ce compte a été BAN pour la raison suivante : '.$row_account_banned_id['banreason'].'.\n\Dans ces conséquences il vous sera impossible de vous connectez avec ce compte !");
document.location.href="connexion.php"
</script>';
}
}else
{
echo '
<script language="javascript">
alert("Cette adresse IP a été pour la raison suivante : '.$row_ip_banned['banreason'].'.\n\Dans ces conséquences il vous sera impossible de vous connectez avec cette adresse IP !");
document.location.href="index.php"
</script>';
}
}else
{
echo '
<script language="javascript">
alert("Erreur : Tous les champs ne sont pas remplis !");
document.location.href="connexion.php"
</script>';
}
}else
{
echo '
<div class="news-article">
<form action="" method="post">
Nom de compte :<br /><input type="text" name="login" />
<br /><br />
Mot de passe :<br /><input type="password" name="password" />
<br /><br />
<input type="submit" value="Connexion" name="connexion" />
</form>
</div>';
}
}
?>
</div>
</div>
<?php include_once('includes/html/right.html'); ?>
</div>
</div>
</div>
</div>
<?php include_once('includes/html/footer.html'); ?>
<?php include_once('includes/html/service.html'); ?>
</div>
</body>
</html>
Code PHP :
<?php
define('USER_LENGHT', 3); // Taille minimum du nom de compte
define('PASSWORD_LENGHT', 3); // Taille minimum du mot de passe
class Inscription
{
private $inscriptionId;
private $username;
private $password;
private $passwordRepeat;
private $cryptedPassword;
private $email;
private $inscriptionDate;
private $extension;
private $errorMsg;
private $error;
private $injection;
private function construct()
{
$this->inscriptionDate = date('Y-m-d H:i:s');
$this->error = false;
$this->errorMsg = '';
$this->injection = false;
$this->cryptedPassword = '';
}
private function verifyUsername()
{
if(strlen($this->username) <= USER_LENGHT)
{
$this->error = true;
$this->errorMsg .= '<script language="javascript">
alert("Erreur : Le nom d\'utilisateur choisit est trop court !");
document.location.href="inscription.php"
</script>';
}
$sqlUsername = doquery('SELECT COUNT(*) AS nombre FROM `account` WHERE username=\'' . $this->username.'\'', 0, "db_realmd", FALSE) or die('Erreur : '.mysql_error());
$datasUsername = mysql_fetch_assoc($sqlUsername);
if($datasUsername['nombre'] == 1)
{
$this->error = true;
$this->errorMsg .= '<script language="javascript">
alert("Erreur : Le nom d\'utilisateur choisit est déjà utilisé !");
document.location.href="inscription.php"
</script>';
}
$this->sqlDetect($this->username);
}
private function verifyPassword()
{
if(strlen($this->password) <= PASSWORD_LENGHT)
{
$this->error = true;
$this->errorMsg .= '<script language="javascript">
alert("Erreur : Le mot de passe choisi est trop court !");
document.location.href="inscription.php"
</script>';
}
if($this->password !== $this->passwordRepeat)
{
$this->error = true;
$this->errorMsg .= '<script language="javascript">
alert("Erreur : Les deux mots de passe ne sont pas identique !");
document.location.href="inscription.php"
</script>';
}
$this->sqlDetect($this->password);
}
private function verifyEmail()
{
if(!preg_match('#^[a-z0-9.-_]+@[a-z0-9.-_]{2,}\.[a-z]{2,4}$#', $this->email))
{
$this->error = true;
$this->errorMsg .= '<script language="javascript">
alert("Erreur : L\'adresse email n\'est pas correcte !");
document.location.href="inscription.php"
</script>';
}
$sqlEmail = doquery('SELECT COUNT(*) AS nombre FROM `account` WHERE email=\''.$this->email.'\'', 0, "db_realmd", FALSE) or die('Comparaison des emails : '.mysql_error());;
$datasEmail = mysql_fetch_assoc($sqlEmail);
if($datasEmail['nombre'] != 0)
{
$this->error = true;
$this->errorMsg .= '<script language="javascript">
alert("Erreur : Cette adresse email est déjà utilisé !");
document.location.href="inscription.php"
</script>';
}
$this->sqlDetect($this->email);
}
public function verifyAll()
{
$this->verifyUsername();
$this->verifyEmail();
$this->verifyPassword();
if(!$this->error)
{
$this->cryptedPassword = sha1(strtoupper($this->username).':'.strtoupper($this->password));
doquery('INSERT INTO account(username,
sha_pass_hash,
gmlevel,
email,
joindate,
last_ip,
expansion)
VALUES(\''.$this->username.'\',
\''.$this->cryptedPassword.'\',
0,
\''.$this->email.'\',
\''.$this->inscriptionDate.'\',
\''.$_SERVER['REMOTE_ADDR'].'\',
\''.$this->extension.'\')', 0, "db_realmd", FALSE) or die('Erreur : '.mysql_error());
echo '
<script language="javascript">
alert("Inscription terminée avec succès !");
document.location.href="index.php"
</script>';
}else
{
if($this->injection)
{
echo '
<script language="javascript">
alert("C\'est pas bien ça !");
document.location.href="index.php"
</script>';
}
else
{
echo '
<script language="javascript">
alert("Plusieurs erreurs ont été trouvée durant l\'inscription : '.$this->errorMsg.'");
document.location.href="inscription.php"
</script>';
}
}
}
private function sqlDetect($string)
{
if (preg_match('#INSERT|SELECT|UNION|FROM|WHERE|DELETE#', $string))
{
$this->error = true;
$this->errorMsg .= '<script language="javascript">
alert("Injection sql détectée !");
document.location.href="inscription.php"
</script>';
$this->injection = true;
}
}
public function setUsername($username)
{
$this->username = mysql_real_escape_string($username);
}
public function setPassword($password)
{
$this->password = mysql_real_escape_string($password);
}
public function setPasswordRepeat($password)
{
$this->passwordRepeat = mysql_real_escape_string($password);
}
public function setEmail($email)
{
$this->email = mysql_real_escape_string($email);
}
public function setExtension($extension)
{
$this->extension = $extension;
}
}
?>