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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Détruire une variable de session après l'avoir testée ??!!

par zeus » 03 nov. 2008, 15:15

Visiblement, c'est que ta session n'est pas construite normalement.

Alors, plusieurs solutions:
  • ta session est vide et tu n'es pas passé par la page qui l'instancie : recommence l'opération en t'assurant que tu passes bien dans la 1ere page.
  • ta session est vide et tu es bien passé par la page qui l'instancie : vérifie que ton code rempli bien la session, pour cela, met le var_dump juste avant le header et bloque le header.
En relisant avec attention le code, je me dit qu'il est possible que tu n'es le warning que quand ta session n'est pas rempli. Dans ce cas là, je reprendrais ton code de la sorte :
<?php 
// Si la variable de session existe
if( isset($_SESSION['ajout']) )
{
    // Si la valeur contenu ne fait pas partie d'une liste "interdite"
    if( !in_array(array('perso', 'perso'), $_SESSION['ajout']) 
    {
?> 
    <div class="shop_tip"> 
        <b>Info</b>:  
        Message d'erreur 
        <br /> 
    </div><br /> 
<?php  
    }
    // Dans tout les cas, suppression de la variable de session
    unset($_SESSION['ajout']); 
} 
?>
Comme ça, PHP ne va tenter la suppression de la variable que si cette dernière existe, ce qui évitera tout message d'erreur.
Et je pense que tu nous aurais donné le message d'erreur dès le début, nous aurions surement gagné du temps ;)

par uspy62 » 03 nov. 2008, 13:29

je l ai mise au début, il m'affiche bien toutes mes sessions sauf la session $_SESSION['ajout']

par zeus » 03 nov. 2008, 13:19

met le var_dump tout au début de ta page

par uspy62 » 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.

par zeus » 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.

par uspy62 » 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);
}

par zeus » 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

par uspy62 » 03 nov. 2008, 12:48

oui il y a bien le session_start()

par zeus » 03 nov. 2008, 12:40

il y a bien le session_start() sur la seconde page ?

par uspy62 » 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 ...

par Invité » 30 oct. 2008, 21:22

Salut,

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

par uspy62 » 30 oct. 2008, 17:07

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

par charabia » 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...

par uspy62 » 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é ...

par charabia » 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 ?