conflit ob_start et session ? comment unsetter ?

Petit nouveau ! | 2 Messages

12 sept. 2013, 21:33

Bonjour,

j'ai une page qui me pose un sérieux problème. Quand j'utilise l'ob_start je ne peux pas faire d'unset de la var de session sinon elle ne s'affiche plus.
J'ai essayé de reproduire le problème sans succès, je ne comprends pas... Est-ce que quelqu'un voit quelque chose ?

Ne faites pas attention aux include's... La page doit afficher une variable de session $msg = $_SESSION['messageCommunication']; sans succès...
Idéalement je voulais faire l'unset dans le dernier tag php avant le ob_end_flush().
<?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&#65533;claration de la fonction MaFonctionPHP.
			$xajax->processRequest(); // Fonction qui va se charger de g&#65533;n&#65533;rer le Javascript &#65533; partir des donn&#65533;es que l'on a fournies &#65533; 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(); 
 
?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

13 sept. 2013, 21:10

Modération :
Le multipostage est interdit sur le forum.

Ce sujet a été verrouillé et sera supprimé sous peu.
Des réponses peuvent être apportées à cette adresse :
php-avance/conflit-start-session-commen ... 69067.html

Merci de prendre le temps de lire les règlements.
Il en faut peu pour être heureux ......