IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

une variable de session qui disparaît


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de zulad
    Homme Profil pro
    creatif
    Inscrit en
    Juin 2007
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : creatif

    Informations forums :
    Inscription : Juin 2007
    Messages : 714
    Par défaut une variable de session qui disparaît
    Bonjour, je suis confronté à un problème lorsque je unset une variable de session. Je ne peux plus la printer dans le document alors que ça fonctionne quand je ne fais pas l'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unset($_SESSION['messageCommunication'])
    ou le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['messageCommunication'] = "";
    La variable est assignée dans une fonction juste avant le redirect sur la page index ci dessous. Par ailleurs il y a un ob_start() et un ob_end_flush() sur la page. Est-ce que ça joue ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    <?php
    if(!isset($_SESSION))@session_start();
     
    	ob_start();
            ...
     
    	echo "<div class='message'>".$_SESSION['messageCommunication']."</div>".$pageContent;
     
    		?>
     
    ...
     
    </html>
    <?php
    }
    ob_end_flush(); 
    unset($_SESSION['messageCommunication']); // quand je ne le mets pas ça fonctionne !
    ?>
    Quelqu'un a déjà été confronté à ce problème ?

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut
    ca change quelque chose si tu le met avant le ob_end?

    Sinon il suffirait de faire une affectation de variable, meme si c'est surement juste contourner le problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    if(!isset($_SESSION))@session_start();
     $messageComm = $_SESSION['messageCommunication'];
    	ob_start();
      /* ... */
    	echo "<div class='message'>".$messageComm ."</div>".$pageContent;
      /* ... */
    }
    ob_end_flush(); 
    unset($_SESSION['messageCommunication']); // tu peux meme le faire après l'affectation
    ?>

  3. #3
    Membre très actif Avatar de zulad
    Homme Profil pro
    creatif
    Inscrit en
    Juin 2007
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : creatif

    Informations forums :
    Inscription : Juin 2007
    Messages : 714
    Par défaut
    Bonjour, merci pour ta réponse.
    J'avais déjà essayé et ça ne marche pas.

  4. #4
    Membre expérimenté Avatar de Njörd
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 190
    Par défaut
    Bonjour zulad,

    Juste comme ça, tu as essayé en mettant le session_start() au tout début du code sans rien avant ?

  5. #5
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo "<div class='message'>".$_SESSION['messageCommunication']."</div>".$pageContent;
     unset($_SESSION['messageCommunication']);
    		?>
    ?

  6. #6
    Membre très actif Avatar de zulad
    Homme Profil pro
    creatif
    Inscrit en
    Juin 2007
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : creatif

    Informations forums :
    Inscription : Juin 2007
    Messages : 714
    Par défaut
    @Njörd : oui j'avais essayé.
    @andry.aime : Merci, mais il n'y a rien à faire... Cela ne va pas.

    Voici le code de la page à tout hasard :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    <?php
    if(!isset($_SESSION))@session_start();
    	$msg = $_SESSION['messageCommunication'];
    	ob_start();
     
        require_once('./includes/constantes.inc.php');
        require_once(DIR_INCLUDE . '/function.inc.php');
        require_once(DIR_INCLUDE . '/bbcode.inc.php');
        require_once(DIR_INCLUDE . '/pdo.inc.php');
        require_once(DIR_INCLUDE . '/date.php');
        require_once(DIR_INCLUDE . '/class_date.php');
        require_once(DIR_INCLUDE . '/fil_ariane.php');
        require_once(DIR_INCLUDE . '/classes/HeaderMail.class.php');
        require_once(DIR_INCLUDE . '/classes/Mail.class.php');
     
    	startSavedSession(); //On demarre le chargement de la session via un cookie si il existe
        memberUpdateTimeVisite(); //Rafraichissement du time connecté des membres
        updatePeopleOnline(); //Mise à jour du whosonline
     
     
    	$lien = DIR_IMAGE;
    	if(isset($_GET['m']))
    	{
    		$dirModule = DIR_MODULE . "/" . htmlspecialchars($_GET['m']);
    		$fichier = (isset($_GET['sm']) && !empty($_GET['sm'])) ? htmlspecialchars($_GET['sm']) : "index";
     
    		if(file_exists($dirModule) && file_exists($dirModule . "/" . $fichier . ".php"))
    		{
    			include $dirModule."/".$fichier.".php";
    		}
    		else
    		{
    			if(file_exists(DIR_MODULE . "/{$_GET['m']}.php"))
    				include DIR_MODULE . "/{$_GET['m']}.php";
    			else
    			{
    				include DIR_MODULE . "/404.php";
     
    				$_GET['m'] = '404';
    				$_GET['sm'] = null;
    			}
    		}
    	}
    	else
    	{
    		include DIR_MODULE . "/index.php";
    	}
     
    // debug
    /*echo '<div id="DEBUG:REQUEST" style="display:none;">';
    var_dump($_REQUEST);
    echo '</div>';*/
     
    	outputcontent();
     
    	function outputcontent()
    	{
    		global $pageContent, $pdo, $pageTitle; //, $isRedirected;
    		if(!isset($pageContent))
    			$pageContent = ob_get_contents();
     
    		ob_clean();
    ?>
    <?php 
    			/*function goMpAlert($id){
    				$reponse = new xajaxResponse();
    				$reponse->assign('mpAlert_Box'.$id,'innerHTML','Test');
    				return $reponse;
    			}
    
    			require_once('./includes/xAjax/xajax_core/xajax.inc.php');
    			$xajax = new xajax(); // On initialise l'objet xajax.
    			$xajax->configure("javascript URI","./includes/xAjax/");
    			$xajax->register(XAJAX_FUNCTION, 'goMpAlert'); // D�claration de la fonction MaFonctionPHP.
    			$xajax->processRequest(); // Fonction qui va se charger de g�n�rer le Javascript � partir des donn�es que l'on a fournies � xAjax.*/
     
    		$path = substr($_SERVER['REQUEST_URI'],strpos($_SERVER['REQUEST_URI'],"//"));
    		$epath = explode("/",$path);
    		 $bpath = "";
     
     
    		 	for($i=0;$i<count($epath)-1;$i++)
    			{
    				if($i > 0 && $i%2==0)
    					$bpath .= "/";
     
    				$bpath .= ".";
     
    			}
    	?>	
    <!DOCTYPE html>
      <html lang="fr">
     
        <head>
        <?php 
    	$desc = $pdo->query("SELECT * FROM forum_site_concept");
    	$description = $desc->fetch(PDO::FETCH_ASSOC);
    ?>
          <!-- meta -->
          <meta charset="UTF-8"/>
          <meta name="keywords" content="Site,Communautaire,Sortie organisé,Leprojet,Le projet,leprojet"/>
          <!--portable -->
    	  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    	  <meta name="description" content=""/>
    	  <meta name="author" content=""/>
     
    	  <meta name="description" content="<?php echo $description->site_description; ?>"/>
          <meta name="author" content="Tester" />
    	  <title><?php echo (isset($pageTitle)) ? htmlspecialchars($pageTitle) : SITE_NAME; ?></title>
    <?php //getDesignName() retourne le thème du site que l'utilisateur à choisi ?>
    	<link rel="stylesheet" type="text/css" href="<?php echo $bpath; ?>/design/<?php echo getDesignName(); ?>/style.css" />
    	<link rel="stylesheet" type="text/css" href="<?php echo $bpath; ?>/design/<?php echo getDesignName(); ?>/jquery-custom/jquery-ui-1.10.3.custom.min.css" />
    	<base href="http://<?php echo htmlspecialchars($_SERVER['HTTP_HOST']); ?>/" />
     
    	<!-- utils -->
    	<script type="text/javascript" src="./javasscripts/utils.js"></script>
    	<!-- jquery -->
    	<script type="text/javascript" src="./javasscripts/jquery-1.9.1.js"></script>
    	<script type="text/javascript" src="./javasscripts/jquery-ui-1.10.3.custom.min.js"></script>
    	<script type="text/javascript" src="./javasscripts/verif_pseudo.js"></script>
    	<script type="text/javascript" src="./javasscripts/verif_email.js"></script>
    	<script type="text/javascript" src="./javasscripts/tooltip.js"></script>
    	<!-- bbcode -->
    	<script type="text/javascript" src="./javasscripts/bbcode.js"></script>
    	<script type="text/javascript" src="./javasscripts/boite_de_dialogue.js"></script>
    	<script type="text/javascript" src="./javasscripts/menu_avec_habilage.js"></script>
    	<script type="text/javascript" src="./javasscripts/mperso.js"></script>
    	<script type="text/javascript" src="./javasscripts/previsualisation.js"></script>
    	<script type="text/javascript" src="./javasscripts/tous_smilies.js"></script>
    	<!-- widget -->
        <script type="text/javascript" src="./javasscripts/widgets.js"></script>
    	<!-- choix multiple -->
        <script type="text/javascript" src="./javasscripts/choix_multiple.js"></script>
    	<!-- accordion -->
        <script type="text/javascript" src="./javasscripts/accordion.js"></script>
    </head>
    <body>
    <div id="frame">
    <div id="global">
    	<?php //$xajax->printJavascript(); ?>
     
    	<a id="top" title=""></a>
        <?php getMaintenance(); ?>
     
        <?php if(defined('SITE_LOGO'))
        { ?>
        <div id="logo">
    		<a href="<?php echo getLienModule('index'); ?>"><img src="<?php echo SITE_LOGO; ?>" alt="<?php echo SITE_NAME; ?>" /></a>
    	</div>
    	<?php } ?>
     
    	<div id="header">
    		<?php require_once(DIR_INCLUDE . '/header.inc.php'); ?>
    	</div>
    	<?php
    ?>
    	<div id="menu" class="accordeon">
    		<?php require_once(DIR_INCLUDE . '/menu.inc.php'); ?>
    	</div>
     
    <script type="text/javascript">
    // prepare l'accordeon si on en en dessous de 500 en width
    $(function() {
    	if(window.innerWidth < 500)
    		{
    			$(function() {
    				$('#menu').attr("class","accordeon");
    				$( ".accordeon" ).accordion();
    			});
    		}
    });
     
    //
    window.onresize = function(event){
     
    	// restauration de l'accordeon
    	var restore = function (header,content)
    	{
    		header.attr("role","");content.attr("role","");
    		header.attr("aria-expanded","");content.attr("aria-expanded","");
    		header.attr("aria-selected","");content.attr("aria-selected","");
    		header.attr("tabindex","");content.attr("tabindex","");
    	};
     
    	if(window.innerWidth < 500)
    	{
    		$(function() {
    			$('#menu').attr("class","accordeon");
    			$( ".accordeon" ).accordion();
    		});
    	} else {
    		$(function() {
    			try
    			{
    				$('#menu').accordion('destroy');
    			}catch(err){
    			}
    			/*
    			$('.ui-icon').remove();
    			$('.ui-accordion-header').attr("class","contenuDuMenu");
    			$('.contenuDuMenu').mouseover("");
    			$('.ui-accordion-content').attr("class","contenuDuMenu");
    			$('.contenuDuMenu').mouseover("");
    			restore($('.ui-accordion-header'),$('.ui-accordion-content'));
    			$('#menu').attr("class","");
    			*/
    		});
    	}
    };
    </script>
     
     
    	<div id="content">
    		<?php
     
    			$fil = buildBreadcrumb($_GET['m'], ((!isset($_GET['sm']) || $_GET['sm'] == '') ? "index" : $_GET['sm']));
    			if(count($fil) > 0)
    			{
    				echo '<div id="fil_ariane">';
     
    				$i = 0;
     
    				foreach($fil as $url => $item)
    				{
    					$url = explode('/', $url);
    					$module = $url[0];
     
    					$section = "index";
    					if($i>0)
    					$section = $url[0];
     
    					$output = htmlspecialchars($item);
     
    					if($i < count($fil)-1 && (count($fil) > 2 && $i<>(count($fil)/2)))
    						$output = '<a href="'.getLienModule($module, $section).'">'.$output.'</a> > ';
    					else if(count($fil) > 2 && $i==(count($fil)/2))
    						$output = '<a href="javascript:void(0);" onclick="history.back(-2);">'.$output.'</a> > ';
     
    					if(count($fil)-1==1 && $i<1)
    						$output = '<a href="'.getLienModule($module, $section).'">'.$output.'</a> > ';
    					else
    						$output = $output;
     
    					echo $output;
    					$i++;
    				}
     
    				echo '</div>';
    			}
    			var_dump($_SESSION);
    			echo "<div class='message'>".$msg."</div>".$pageContent;unset($_SESSION['messageCommunication']); 
    			saveUrl($_SERVER['REQUEST_URI']);
    		?>
    	</div>
    	<div id="footer">
    		<?php require_once(DIR_INCLUDE . '/footer.inc.php'); ?>
    	</div>
     
        </div></div>
    </body>
    </html>
    <?php
    }
     
    ob_end_flush(); 
     
    ?>

  7. #7
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2010
    Messages : 31
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if(!isset($_SESSION))@session_start();
    $msg = $_SESSION['messageCommunication'];
    ob_start();
    Ne faut-il pas simplement tout le temps faire le session_start() ? pas seulement dans le cas ou il n'y a pas de $_SESSION. En gros, virer le Sauf erreur de ma part (pas le temps de tester là), on peut jouer avec la variable $_SESSION que si on a déjà fait un session_start().

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/01/2015, 10h50
  2. Une variable de session qui marche sous php4 mais pas php5
    Par Alexandrebox dans le forum Langage
    Réponses: 4
    Dernier message: 27/10/2007, 17h24
  3. Une variable de session qui change
    Par zsoh dans le forum Langage
    Réponses: 5
    Dernier message: 02/09/2007, 20h03
  4. Réponses: 3
    Dernier message: 10/08/2007, 13h42
  5. Création d'une variable de session avec un ID
    Par PrinceMaster77 dans le forum ASP
    Réponses: 4
    Dernier message: 18/10/2004, 10h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo