Bonjour à tous.
Je viens vers vous car je pédale dans la semoule ....
En gros lorsque l'on veut se connecter sur mon site, il faut que le compte que l'on utilise soit activer. Pour cela j'ai dans ma table MySQL login, une colonne "compte_active". Lorsque la valeur est à 0, le compte est inactif et à 1 il est activé. Pour activer son compte, j'envoie un mail à la personne avec un lien d'activation. Jusque là tout fonctionne. La personne clique sur le lien et la valeur pour "compte_active" passe de 0 à 1. Lorsque que la personne se connecte, la connexion fonctionne. SAUF ! lorsque l'on a tenté de se connecter juste avant, lorsque le compte était alors inactif. En effet, lorsque le compte est inactif, une alerte s'affiche disant veuillez activer votre compte. Donc si l'on a tenté de se connecté avant d'activer son compte, on a cette alerte, mais le problème c'est qu'après activation, l'alerte revient lors d'un nouvel essai de connexion. Il faut alors fermer le navigateur et le rouvrir pour enfin pouvoir se connecter. ET ce, uniquement sur IE.
Pour afficher ce message, j'appel une fonction javascript sur un onSubmit. Cette même fonction javascript appel un fichier PHP qui verrifie la valeur de compte_active dans ma base de donné par le biais des fonctions de XMLHttpRequest etc... le fichier PHP renvoie la réponse et la fonction javascript affiche un message d'erreur si compte non activé ou alors autorise la connection.
Le problème étant qu'il ne prend pas le changement de la valeur de compte_active dans la base de données alors que tout fonctionne sur firefox et chrome.
Voici ma fonction qui est appellé sur le onsubmit :
Ca c'est ma fonction qui fait appel au fichier php voulue
et ça c'est le fichier php qui est appellé et qui renvoie si le compte est actif ou pas.
J'espère avoir été compris. Merci d'avance, et désolé par avance si mon code n'est géniale... mais ça fait un moment que je n'avais pas remis le nez dans la programmation web.
Modifié par faklex (10 Nov 2012 - 13:15)
Je viens vers vous car je pédale dans la semoule ....

En gros lorsque l'on veut se connecter sur mon site, il faut que le compte que l'on utilise soit activer. Pour cela j'ai dans ma table MySQL login, une colonne "compte_active". Lorsque la valeur est à 0, le compte est inactif et à 1 il est activé. Pour activer son compte, j'envoie un mail à la personne avec un lien d'activation. Jusque là tout fonctionne. La personne clique sur le lien et la valeur pour "compte_active" passe de 0 à 1. Lorsque que la personne se connecte, la connexion fonctionne. SAUF ! lorsque l'on a tenté de se connecter juste avant, lorsque le compte était alors inactif. En effet, lorsque le compte est inactif, une alerte s'affiche disant veuillez activer votre compte. Donc si l'on a tenté de se connecté avant d'activer son compte, on a cette alerte, mais le problème c'est qu'après activation, l'alerte revient lors d'un nouvel essai de connexion. Il faut alors fermer le navigateur et le rouvrir pour enfin pouvoir se connecter. ET ce, uniquement sur IE.
Pour afficher ce message, j'appel une fonction javascript sur un onSubmit. Cette même fonction javascript appel un fichier PHP qui verrifie la valeur de compte_active dans ma base de donné par le biais des fonctions de XMLHttpRequest etc... le fichier PHP renvoie la réponse et la fonction javascript affiche un message d'erreur si compte non activé ou alors autorise la connection.
Le problème étant qu'il ne prend pas le changement de la valeur de compte_active dans la base de données alors que tout fonctionne sur firefox et chrome.
Voici ma fonction qui est appellé sur le onsubmit :
function verif_connexion_menu()
{
var mail = document.connexion.mail.value;
var mdp = document.connexion.mdp.value;
var texte2=0;
var lien2='verif_active.php?mail='+encodeURIComponent(mail)+'&mdp='+encodeURIComponent(mdp);
texte2 = file(lien2);
if(texte2 == 2)
{
alert("Votre compte n\'est pas encore activé.");
return false;
}
else if(texte2 == 1)
{
return true;
}
else
{
alert("Erreur");
return false;
}
}
Ca c'est ma fonction qui fait appel au fichier php voulue
function file(fichier)
{
var xhr_object = (window.XMLHttpRequest) ? new XMLHttpRequest() : (window.ActiveXObject ? new ActiveXObject('Microsoft.XMLHTTP') : false);
xhr_object.open("GET", fichier, false);
xhr_object.send(null);
if(xhr_object.readyState == 4)
{
return(xhr_object.responseText);
}
else
{
return(false);
}
}
et ça c'est le fichier php qui est appellé et qui renvoie si le compte est actif ou pas.
<?php
include('id_mysql.php');
mysql_connect($adresse_BDD, $login_BDD, $password_BDD);
mysql_select_db($base_de_donnees);
mysql_query("SET NAMES UTF8");
$mail=$_GET['mail'];
$mdp=$_GET['mdp'];
// VERIFICATION
$requete="SELECT * FROM login WHERE mail='$mail' OR pseudo='$mail' AND mdp=PASSWORD('$mdp') AND compte_valide='1'";
$reponse = mysql_query($requete);
mysql_close();
if(mysql_num_rows($reponse)==1)
{
echo "1";
}
else
{
echo "2";
}
?>
J'espère avoir été compris. Merci d'avance, et désolé par avance si mon code n'est géniale... mais ça fait un moment que je n'avais pas remis le nez dans la programmation web.
Modifié par faklex (10 Nov 2012 - 13:15)