Probleme condition dont la variable est dans une session

Petit nouveau ! | 2 Messages

19 mars 2007, 23:19

Bonjour

voila j'ai un probleme avec ma session mais surtout avec le fait de ne pas pouvoir verifier une condition a partir de celle ci. Je vous montre mon code source car je pense que ca sera plus lisible que mes expliquation ^^
<?php
include("variable.php");
	
$db_user = $user_mysql;
$db_pass = $pass_mysql;

$user_name = $_GET['user_name'];
$connection = mysql_connect('localhost', $db_user, $db_pass) or die(mysql_error());
mysql_select_db('utilisateur', $connection) or die(mysql_error());

	if(isset($_SESSION['compteur']) >= '1')
	{

		$refus = $_SESSION['compteur'] + 1;		
		$valeur= $refus;
		
		print(" $valeur ");
		
		print(" $user_name");
		
		if( $valeur >3)
		{
				$query= "UPDATE `membres` SET `id` = '' WHERE nom = 'user_name'";
				$result = mysql_query($query);
		}
		$_SESSION['compteur'] = $valeur;		

	}
	else
	{
	
		$valeur = 1;	
		Print (" valeur 1er cookie : $valeur ");
		/* Envoie du cookie */
		$_SESSION['compteur'] = $valeur;		
		
 		echo 'La variable  existe et vaut: ' . $_SESSION['compteur'];

	}
	

	
?>
En clair ce qu'il devrait ce passer c'est:

L'utilisateur s'identifie ( sur la page precedente) je verif qu'il est bien dans ma base de donée, et si c'est pas le cas c'est la que ce script doit se lancer. Ca ca marche, maintenant afin d'eviter que la personne tente d'essayer plusieur mot de passe je veux limiter a trois tentative.
j'utilise donc ma session en cours pour faire incrementer un compteur.
Lrs de la 1ere visite de cette page pas de pb, je passe par "else", et la variable dans la session prend bien la valeur 1, mais apres ca j'aimerais verifier la condition suivante disant que si la variable contenue dans la session est >= 1, j'applique le code suivant.
Et la c'est le drame ca marche pas je ne rentre pas dans le if. J'ai pourtant regardé pas mal de tuto et ma syntaxe me semble bonne.

Merci de bien vouloir m'aider c'est tres urgent c'est un projet que je fait a la FAc et que je dois rendre mercredi :s

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

19 mars 2007, 23:30

Merci de bien vouloir m'aider c'est tres urgent c'est un projet que je fait a la FAc et que je dois rendre mercredi :s
Ca, c'est TON soucis, nous n'avonspas à rattraper ton retard ...

Sinon, tu ne peux tester à la fois l'existence et la valeur d'un champ.
isset($_SESSION['compteur']) retourne TRUE ou FALSE, ce qui ne correspond pas à ce que tu veux comparer ;)

De plus, si tu cherches à comparer à un chiffre, pas la peine de mettre des ' autour du chiffre en question
if(isset($_SESSION['compteur']) >= '1')
devient donc
if ( isset($_SESSION['compteur']) && ($_SESSION['compteur'] >= 1) 
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 49 Messages

19 mars 2007, 23:38

Effectivement, tester une condition numérique sur des chaines de caractères est une mauvaise idée...
Une chaine a une valeur numérique de 0.
isset() renvoie true ou false.

Donc :
"si true est supérieur à 0 rentrer dans la boucle"... On peut considérer que php n'est pas tatillon et pense que true=1 :p
Alors ? 1>0 ? non.

Je complèterai la solution proposée par :
if(isset($_SESSION['compteur']) && (double)$_SESSION['compteur']>=1)
Histoire d'être bien sûr que c'est un nombre qu'on compare à 1.


De toute façon :
 $query= "UPDATE `membres` SET `id` = '' WHERE nom = 'user_name'"; 
va forcément te générer une erreur si id est la clef primaire de ta table membres.

Petit nouveau ! | 2 Messages

20 mars 2007, 00:32

resolu ^^

j'ai utilisé ca :
	if($_SESSION['compteur'] >= 1)
pour l'id a 0 c'est normal grace a ca je verifie derriere si l'id est a zero ca veux dire que le compte est bloqué et que l'utilisateur doit faire une demande de reactivation de son compte.

Merci de m'avoir repondu en tout cas :)

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

20 mars 2007, 00:44

resolu ^^
Bravo... tu peux donc cliquer sur le bouton prévu à cet effet (en haut à gauche) :)

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 49 Messages

21 mars 2007, 22:40

resolu ^^

j'ai utilisé ca :
	if($_SESSION['compteur'] >= 1)
pour l'id a 0 c'est normal grace a ca je verifie derriere si l'id est a zero ca veux dire que le compte est bloqué et que l'utilisateur doit faire une demande de reactivation de son compte.

Merci de m'avoir repondu en tout cas :)
Sauf qu'il ne sera pas à 0 mais à vide. De plus, la requête ne sera pas exécutée si tu violes les règles d'intégrité: il est impossible d'avoir plusieurs fois la même clef primaire dans une table; tu ne peux donc pas avoir plusieurs id à 0.