J'explique le fonctionnement.. l'utilisateur s'inscrit, j'envois un email à la fin de son inscription afin qu'il puisse la valider en cliquant sur un lien de la forme http://.../index.php?email=[email protected]&temp=a3hc65jGU2EH1HD
où temp est une sorte de mot de passe aléatoire que j'ai créé
en cliquant sur le lien il se retrouve sur mon index?email=.....&temp=..... je compare le temp de ma base de donnée et le $_GET['temp'] et ça affiche "votre compte vient d'être activé" (sauf erreur de $_GET['temp']) ensuite ça efface le temp et ça passe le compte en "valide" ça c'est ok
après tout le reste ça marche pas sur iE
si je reclique sur le lien de validation ça doit afficher "votre compte est déjà activé."
et mon mini formulaire pseudo/pass iE il le prend pas en considération si je clique sur l'image OK il devrait marquer "Veuillez saisir votre Login." alors qu'il ne fait rien.. et quand je rentre mon login/pass il recharge la page sans rien faire ni afficher aucun message d'erreur
alors que j'arrive à me loguer sur Mozilla : /
voici mon code:
<?php
$host = "localhost";
$user = "root";
$password = "";
$bdd = "mysql";
$email = isset($_GET['email']) ? trim($_GET['email']) : "" ;
$temp = isset($_GET['temp']) ? trim($_GET['temp']) : "" ;
$login = isset($_POST['login']) ? trim($_POST['login']) : "" ;
$pass = isset($_POST['pass']) ? trim($_POST['pass']) : "" ;
// on teste si le visiteur a soumis le formulaire de connexion
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
// on teste si le champ login est vide
if (empty($login)) {
$erreur = 'Veuillez saisir votre Login.<br>';
}
// on teste les caractères du champ Login
elseif(!preg_match('`^[[:alnum:]-_.]{6,15}$`', $login)) {
$erreur = 'Votre Login doit comporter<br>6 caractères minimum.';
}
// on teste si le champ pass est vide
elseif (empty($pass)) {
$erreur = 'Veuillez saisir votre Pass.<br>';
}
// on teste les caractères du champ Pass
elseif(!preg_match('`^[[:alnum:]-_.]{6,15}$`', $pass)) {
$erreur = 'Votre Pass doit comporter<br>6 caractères minimum.';
}
else {
$connect = mysql_connect($host, $user, $password);
mysql_select_db($bdd, $connect) or die("Impossible de se connecter à la base de donnee $bdd");
// on teste si une entrée de la base contient ce couple login / pass
$sqlloginpass = 'SELECT count(*) FROM membre WHERE login="'.addslashes($_POST['login']).'" AND pass_md5="'.md5(addslashes($_POST['pass'])).'"';
$reqloginpass = mysql_query($sqlloginpass) or die('Erreur SQL !<br />'.$sqlloginpass.'<br />'.mysql_error());
$dataloginpass = mysql_fetch_array($reqloginpass);
mysql_free_result($reqloginpass);
mysql_close();
// si on obtient une réponse, alors l'utilisateur est un membre
if ($dataloginpass[0] == 1) {
session_start();
$_SESSION['login'] = $_POST['login'];
header('Location: membre.php');
exit();
}
// si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
elseif ($dataloginpass[0] == 0) {
$erreur = 'Ce compte n\'existe pas.<br>Vérifiez votre Pseudo et votre Pass.';
}
}
}
if ($email != NULL) {
$connect = mysql_connect($host, $user, $password);
mysql_select_db($bdd, $connect) or die("Impossible de se connecter à la base de donnee $bdd");
// on recherche la valeur du champ Confirm spécifique à l email
$confirmsql = 'SELECT confirm FROM membre WHERE email="'.addslashes($email).'"';
$confirmreq = mysql_query($confirmsql) or die('Erreur SQL !<br />'.$confirmsql.'<br />'.mysql_error());
$confirmdata = mysql_fetch_array($confirmreq);
// on recherche le temp spécifique à l email
$tempsql = 'SELECT temp FROM membre WHERE email="'.addslashes($email).'"';
$tempreq = mysql_query($tempsql) or die('Erreur SQL !<br />'.$tempsql.'<br />'.mysql_error());
$tempdata = mysql_fetch_array($tempreq);
//on teste si le compte est déjà validé
if ($confirmdata[0] == "valide") {
$erreur="Votre Compte est déjà activé.<br>";
}
//on teste les deux clefs d'activation
elseif ($tempdata[0] != $temp) {
$erreur="Impossibilité d'activer votre Compte.<br /> Reportez-vous à la F.A.Q<br>";
}
//si la clef d activation est bonne on update le compte en "valide" et effacement du champ temp
elseif ($temp != NULL AND $tempdata[0] == $temp) {
$sql = 'UPDATE membre SET confirm="valide",temp="" WHERE email="'.addslashes($email).'"';
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
mysql_close();
$erreur="Votre Compte vient d'être activé.<br>";
}
}
?>
iE il doit pas aimer ma logique... c'est mes conditions else if qui merdent ? si vous pouviez me donner un peu de logique dans tout ça : (