j'ai un champ banni defaut 0 si elle vaut 1 alors le mec et banni, ensuite j'enregistre la timestamp futur de l'echeance du bannissement.
Donc quand je banni une personne je fat ceci: bani='1' exclu_fin='1213122625' <<timestamp futur .
Donc j'ai fait un petit truc ou je verifie deja si le membres et egale a 1 si il y est alors on verifie si le memrbes est toujours banni grace au timestamp futur et actuel
si la timestamp futur est supérieur a la timestamp de maintenant alors il reste toujours banni avec un message "vous etes toujours banni du site!" si la timestamp actuel est plus grande que la timestamp futur (enregistre dans exclu_fin) alors on fait la requete update membres et on remet a 0 banni='0', exclu_fin='0' et en lui mettan un message comme quoi il a était débanni.
Donc j'ai fait un petit truc et par contre quand je me connecte avec un compte ou la timestamp enregistrer est inférieur a la timestamp actuel il me dit compte vlider, et il change rien dans la base de donnée.
et si je me connecte avec un compte banni ou la timestamp enregistrer et supérieur a la timestamp de maintenant l me dit aussi le meme message que l'autre (compte validé!)
voici mon code:
<?php
//Démarrage de la session (à mettre avant tout code xhtml)
session_start();
//Si la variable $_SESSION['logged'] n'existe pas on la créée.
if (!isset($_SESSION['logged'])) $_SESSION['logged'] = false;
//Inclusion du fichier contenant les identifiants de connexion à la base de données.
mysql_connect(" ", " ", " ");
mysql_select_db(" ");
//Si la variable $_POST['connexion'] (bouton submit du formulaire) et la variable $_SESSION['logged'] vaut false (déconnecté) existent.
if (isset($_POST['connexion']) && $_SESSION['logged'] == false)
{
//Vérification des autres variables.
if (isset($_POST['pseudo'],$_POST['mot_passe']) && !empty($_POST['pseudo'])
&& !empty($_POST['mot_passe']))
{
//Vérification du pseudo.
$pseudo = htmlspecialchars($_POST['pseudo']);
$mot_passe = htmlspecialchars($_POST['mot_passe']);
//Requête comptant le nombre de pseudos $_POST['pseudo']
$sql = mysql_query("SELECT COUNT(*) AS nb_pseudo FROM membres WHERE
pseudo='".$pseudo."'");
//Si le pseudo existe.
if (mysql_result($sql,0,'nb_pseudo') == 1)
{
//Information sur le compte du membre.
$sql_infos = mysql_query("SELECT id, pseudo, mot_passe, confirmation, rang, banni, exclu_fin FROM membres WHERE pseudo='".$pseudo."'");
$donnees = mysql_fetch_array($sql_infos);
//Hashage du mot de passe.
$mot_passe_hash = md5($mot_passe);
//Comparaison du mot de passe.
if ($mot_passe_hash == $donnees['mot_passe'])
{
//On vérifie que le compte est confirmé.
//Si $donnees['confirmation'] vaut 1.
//on verifie si le membres n'est pas exclu
if ($donnees['confirmation'] == 1)
{
/////auto bannissement////
if (($donnees['banni']) == 0)
{
/////auto bannissement////
//se souvenir du code
if (isset($_POST['souvenir']) && $_POST['souvenir'] == 'on')
{
//Temps d'expiration des cookies (1 an).
$expire = time() + 3600 * 24 * 365;
setcookie('pseudo', $pseudo, $expire);
setcookie('mot_passe', $mot_passe_hash,
$expire);
}
//Tout est bon, on connecte le membre.
$_SESSION['logged'] = true;
//Création de 2 variables de session, contenant des informations sur le membre.
$_SESSION['id'] = $donnees['id']; //Id du membre.
$_SESSION['pseudo'] = $pseudo; //Pseudo du membre.
$_SESSION['rang'] = $donnees['rang'];
$time = time()
//Redirection vers la page membre.
header("location: index.php");
/////auto debannissement///
}
else
{
if ($donnees['exclu_fin'] < $time && $donnees['banni'] == 1)
{
mysql_query("UPDATE membres SET banni='0', exclu_fin=' ' WHERE pseudo=".$donnees['pseudo']);
echo 'Message : compte validé !<br /><a href="index.php">Accueil</a>';
}
else
{
if ($donnees['exclu_fin'] > $time && $donnees['banni'] == 1)
{
echo' désolé vous etes encore banni';
}
}
}
/////auto bannissement////
}
else echo 'Erreur : le compte n\'est pas confirmé !';
}
else echo 'Erreur : le mot de passe est incorrect !';
}
else
echo 'Erreur : le pseudo n\'existe pas !';
}
else
echo 'Erreur : veuillez remplir tous les champs !';
}
?>