Page 1 sur 1

Probleme condition dont la variable est dans une session

Posté : 19 mars 2007, 23:19
par Mitsu
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

Re: Probleme condition dont la variable est dans une session

Posté : 19 mars 2007, 23:30
par zeus
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) 

Posté : 19 mars 2007, 23:38
par ghalaad
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.

Posté : 20 mars 2007, 00:32
par Mitsu
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 :)

Posté : 20 mars 2007, 00:44
par Truc
resolu ^^
Bravo... tu peux donc cliquer sur le bouton prévu à cet effet (en haut à gauche) :)

Posté : 21 mars 2007, 22:40
par ghalaad
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.