Détruire une variable de session après l'avoir testée ??!!

Eléphant du PHP | 117 Messages

30 oct. 2008, 12:00

Bonjour à tous, j'ai un petit soucis avec un de mes scripts.
J'utilise des variables de session mais dans une de mes pages je voudrais tester si la variable de session existe et si elle est égale à une chaine de caractère et ensuite je voudrais détruire cette variable de session de manière à ce que lorsqu'on recharge la page, il n y ait plus le message d'erreur.

Voici mon code :
<?php 
if(isset($_SESSION['test]) && $_SESSION['test']=="perso"){?>
	<div class="toto">
		<b>Info</b>: 
		Ca marche
		<br />
	</div><br />
<?php 
}
unset($_SESSION['test']);

?>

Le probleme est que lorsque je ne mets pas le unset, mon script fonctionne mais la session n'est pas détruite et quand je mets le unset ma session est détruire mais mon script ne fonctionne plus, en fait ma session n'a plus de valeur dès le début du script.

Quelqu'un aurait-il une solution ?

Merci d'avance.[/code]

Avatar du membre
ViPHP
ViPHP | 3008 Messages

30 oct. 2008, 12:16

Les couleurs de ton code devraient t'alerter.
$_SESSION['test]
Il y a comme un oubli à ce niveau.

Eléphant du PHP | 117 Messages

30 oct. 2008, 12:23

Non pardon, c'est une erreur en recopiant le code, voici mon code exact :
<?php  
if(isset($_SESSION['test']) && $_SESSION['test']=="perso"){?> 
    <div class="toto"> 
        <b>Info</b>:  
        Ca marche 
        <br /> 
    </div><br /> 
<?php  
} 
unset($_SESSION['test']); 

?> 

Avatar du membre
ViPHP
ViPHP | 3008 Messages

30 oct. 2008, 12:36

Quand tu parles de ton "script" c'est quoi ? C'est l'affichage de "ça marche" ?

Là si ta session est définie et si on va sur cette page, on verra le texte une première fois. Mais à une prochaine tentative on n'aura plus rien vu que la session est détruite.

C'est pas ça que tu veux faire ?

Eléphant du PHP | 117 Messages

30 oct. 2008, 13:00

Oui c'est ce que je veux faire mais ça ne fonctionne pas, en fait j'ai un script derriere qui me dit si le produit est particulier alors je crée un session et je lui donne la valeur "perso" sinon je ne fais rien.

Mais quand je mets la valeur "perso" dans ma session et que je vais sur ma page avec le bout de code que je t'ai montré, la session se détruit, on dirait qu'il détruit la session avant de faire le test ...
Si j'enlève mon unset, le test est bien effectué ...

Avatar du membre
ViPHP
ViPHP | 3008 Messages

30 oct. 2008, 13:05

Je viens de tester. J'ai initialisé une session "perso" et quand je vais sur la page, j'ai le texte. Je recharge je n'ai plus rien. Si je met une autre valeur que perso, page blanche, donc ça fonctionne comme tu veux normalement...

Eléphant du PHP | 117 Messages

30 oct. 2008, 17:07

ba non, voila mon problème, c'est que je ne sais pas de où ça peut venir ...

Invité
Invité n'ayant pas de compte PHPfrance

30 oct. 2008, 21:22

Salut,

Ca ne viendrait pas de l'initialisation de ta variable de session... ?

Eléphant du PHP | 117 Messages

03 nov. 2008, 12:24

ba non elle est initialisée normalement ...

voici mon bout de code php :
<?php
if(isset($_SESSION['ajout']) && $_SESSION['ajout']!="perso"  && $_SESSION['ajout']!="comple"){?>
	<div class="shop_tip">
		<b>Info</b>: 
		Message d'erreur
		<br />
	</div><br />
<?php 
}
unset($_SESSION['ajout']);
?>
si je laisse le unset(session), ça ne m'affiche pas le message d'erreur et si je le commente ça me met le message d'erreur, donc j'en conclu que ça vient forcemment de cette ligne unset ...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

03 nov. 2008, 12:40

il y a bien le session_start() sur la seconde page ?
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éphant du PHP | 117 Messages

03 nov. 2008, 12:48

oui il y a bien le session_start()

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

03 nov. 2008, 12:55

charabia nous a montré que le script en cours n'avait aucune raison de ne pas fonctionner.

Est-ce qu'il est possible de voir l'autre script, celui qui rempli la variable de session ?

edit : et donne nous le message d'erreur stp
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éphant du PHP | 117 Messages

03 nov. 2008, 13:07

Voici le script d'appel, et il n'y a aucun message d'erreur ...
$req2="select ....................";
$result2=mysql_query($req2);

if(!gestion_panier(post('panier'),$url)){
$_SESSION['ajout']="erreur";
header("Location: ".racine_site().$url);
}

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

03 nov. 2008, 13:12

Dans le second script (celui qui affiche le message d'erreur), fait un
var_dump($_SESSION);
pour voir l'état de ta session.
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éphant du PHP | 117 Messages

03 nov. 2008, 13:17

quand je mets le var_dump($_SESSION); il ne m'affiche rien et si je décommente ma ligne unset($_SESSION['ajout']); le var_dump($_SESSION); m'affiche toutes mes sessions en cours.