Redirection si mail non valide

Petit nouveau ! | 8 Messages

29 déc. 2015, 23:32

Bonjour à tous,

Je viens de récupérer un site internet mais je ne suis encore que débutant en PHP/Mysql. J'essaye de mettre une redirection vers une page lorsque l'utilisateur n'a pas validé son adresse mail (via le code envoyé). Cependant je bloque, celà ne fonctionne pas (l'utilisateur qui n'a pas validé son mail n'est pas redirigé).

Est ce que quelqu’un aurait une idée de correction ?

Merci d'avance
if(strstr($_SERVER['PHP_SELF'],'mail_validation.php') == false) {
    if(identity_IsLogged() && identity_getUserId() != null && !$g_identity->isMailValide()) {
        $query = "SELECT mail_valide FROM user WHERE id_user= '";
		$result = db_query_read($query);
		if (!$result=0) {
			header( "Location: mail_validation.php" ) ;
		}else {
			header( "Location: index.php" ) ;
		}
    }
}

Mammouth du PHP | 2703 Messages

29 déc. 2015, 23:38

rajouter des echo avant et après chaque if pour savoir quelles conditions sont remplies et non remplies.

Petit nouveau ! | 8 Messages

29 déc. 2015, 23:59

je pense qu'il y a un soucis avec le ismailvalide
echo 'mail_valide : '.$g_identity->isMailValide().'<br/>';
echo 'id : '.identity_getUserId().'<br/>';
echo 'logged : '.identity_IsLogged().'<br/>';
  
if(strstr($_SERVER['PHP_SELF'],'mail_validation.php') == false) {
    echo "toto";
    if(identity_IsLogged() && identity_getUserId() != null && !$g_identity->isMailValide()) {
    echo "titi";
    }
}
ça me donne :

mail_valide : 1 (alors que non valide)
id : 2570153
logged : 1
toto
public function isMailValide()
	{
		if($this->mailValide) {
			return(true);
		}
		return(false);

Mammouth du PHP | 2703 Messages

30 déc. 2015, 00:18

quel est le code qui affecte une valeur à $this->mailValide ?

Petit nouveau ! | 8 Messages

30 déc. 2015, 00:22

/*
// Vérifie le code d'activation de l'email pour valider l'adresse de l'utilisateur
*/
function mail_validation($code_validation)
{
// Récupération de l'email de l'utilisateur pour vérifier le code
$query = "SELECT email, mail_valide FROM users WHERE id_user='" . addslashes($this->idUser) . "' LIMIT 1";
$result = db_query_read($query);
if (!($user = mysql_fetch_array($result)))
redirige("index.php");

//Appel du PIU de MP
$parameters = $this->initParameters();
$parameters['mail'] = $user['email'];
$parameters['code_validation'] = $code_validation;

$result = MPWebServices::Call($this->getConfig("identity_WebServiceAddress"), 'mail_validation', $parameters);
if ($result['statut'] != SUCCESS)
return $result['message'];
else
{
$query = "UPDATE users SET mail_valide='1' WHERE id_user='".$this->idUser."' AND mail_valide='0' LIMIT 1";
db_query_write($query);
$this->mailValide = 1;
mpsessions_add('mail_valide', $this->mailValide);


// patch pour répercuter la connexion auto du https au http
if(isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == 'on') {
$lien = "http://".$_SERVER['HTTP_HOST']."/index.php?u=".$this->getUserId()."&s=".md5($this->getUserKey().$this->getMail());
$this->disconnect(false);
header("Location: ".$lien);
exit();
}
// fin patch
//redirige("game.php?id_user=" . $this->id_user . "&clef=" . $this->key);
}
}

Petit nouveau ! | 8 Messages

30 déc. 2015, 10:23

up

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

30 déc. 2015, 10:41

up
Et donc ?
Tu as testé les conditions qui sont dans la fonction que tu as donné ?
A quel moment ça ne fonctionne pas comme voulu ?
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 8 Messages

30 déc. 2015, 10:47

j'ai un soucis avec la fonction ismailvalide qui semble toujours indiquer 1 (quand je fais echo, ça me retourne mail_valide : 1)

public function __construct() {
		//Récupération des informations contenues dans la session pour logger l'user
		$this->langue = mpsessions_get('langue');
		$this->idUser = mpsessions_get('id_user');
		$this->key = mpsessions_get('clef');
		$this->mailValide = mpsessions_get('mail_valide');
		$this->pseudo = mpsessions_get('pseudo');
		$this->newUser = mpsessions_get('new_user');
		$this->isLogged = mpsessions_get('is_logged');
		$this->sexe = mpsessions_get('sexe');
		$this->mail = mpsessions_get('mail');

Eléphant du PHP | 243 Messages

30 déc. 2015, 14:32

Eh bien maintenant, faut débuger cette petite fonction.
Regarde tout d'abord si tu arrives à bien récupérer les données de l'utilisateur, si la comparaison est bonne, etc
Dés qu'un retour te semblera anormal, tu seras à peu près ou regarder.
"Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent"
~~Lorenzo Strigini

Petit nouveau ! | 8 Messages

04 janv. 2016, 14:59

Bon ça avance lentement mais surement,

quand je met le if result = 0 , ça me redirige tout le temps vers la page mail_validation (même si le mail est validé), quand je met 1 ça redirige jamais
if(strstr($_SERVER['PHP_SELF'],'mail_validation.php') == false) {
    if(identity_IsLogged() && identity_getUserId() != null) {
$query = "SELECT mail_valide FROM users where id_user='".identity_getUserId()."';";
$req = mysql_query($query);
$result = mysql_fetch_row($req);
          
        if($result == 0) {
            header('Location: mail_validation.php');
		} else {	
		}
	}	
}

Petit nouveau ! | 8 Messages

04 janv. 2016, 18:28

Bon ça fonctionne avec ce bout de code :
if(strstr($_SERVER['PHP_SELF'],'mail_validation.php') == false) {
    if(identity_IsLogged() && identity_getUserId() != null) {
$query = "SELECT mail_valide FROM users where id_user='".identity_getUserId()."';";
$req = mysql_query($query);
$result = mysql_fetch_row($req);
        echo "resultat : ".$result[0]."<br/>";  
        if($result[0] == 0) {
            header('Location: mail_validation.php');
        } else {
        }
    } 
}
ça bloque bien tout lorsque le mail n'est pas valide.

cependant lorsque le mail est valide, certaines pages renvoient tout de même vers mail_validation, est-ce que quelqu'un aurait une idée d'où ça peut provenir ?

Petit nouveau ! | 9 Messages

04 janv. 2016, 19:23

Salut,

"cependant lorsque le mail est valide, certaines pages renvoient tout de même vers mail_validation"

Qu'est-ce-que cela signifie ? Quelles pages ?

++
EvenID - La manière la plus simple d'envoyer des e-mails à vos utilisateurs en PHP.

Petit nouveau ! | 8 Messages

04 janv. 2016, 23:09

quand je navigue sur le site, certaines pages fonctionnent (=je peux y acceder normalement), d'autres ne fonctionnent pas (= renvoi vers mail_validation, alors que le mail est bien validé dans la bdd)