Bonjour,
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.
unset($_SESSION['messageCommunication'])
où
$_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 ?
<?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 ?
oici le code de la page à tout hasard :
<?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();
?>
J'ai essayé ça en vue de reproduire le problème mais ce n'est pas ça :
Fichier test.php :
<?php
ob_start();
if(!isset($_SESSION))@session_start();
$pageContent = '';
getContent();
function getContent()
{
global $pageContent;
$pageContent = ob_get_contents();
ob_clean();
?>
<!DOCTYPE html>
<html lang="fr">
<body>
<a href="test2.php">test2</a>
<?php
echo " -- test : ".$_SESSION['var'].$pageContent;
?>
</body>
</html>
<?php
//return $var;
}
ob_end_flush();
$_SESSION['var'] = "";
?>
Fichier test2.php :
<html><body><?php
if(!isset($_SESSION))@session_start();
var_dump($_SESSION);
$_SESSION['var'] = 'content';
?>
<a href='test.php'>test.php</a></body></html>
Merci de votre aide
même sans le @ il n'y a pas d'erreur et que le problème est toujours là.
Afficher la suite