Soucis de unset avec les variables de session

foxardt

New Member
#1
Bonjour , il y a un soucis que j'essaie de résoudre depuis un moment et visiblement je n'ai pas d'erreur dans mon code.
J'utilise sur mon site les sessions pour stocker des erreurs et garder connecté à son compte un utilisateur.
Le soucis que j'ai c'est que quand j'affiche mes erreurs puis les supprime avec ce code :

PHP:
<p class="error">
    <?php
        if(isset($_SESSION['errorLogin'])){
            echo $_SESSION['errorLogin'];
            unset($_SESSION['errorLogin']);
        }
    ?>
</p>
En localhost quand je rafraîchi la page ça fonctionne mais dès que je passe sur le site hébergé les erreurs restent.
Quelqu'un à une idée de à quoi cela peut-être lié?
 

PH-Marc-André.B.

Modérateur
Membre du personnel
#4
Bonjour,

Après de plus amples vérifications il semble que vous éprouviez des soucis avec la temporisation, le fait que ça fonctionne sur un environnement local signifie que l'output buffering y est activé par défaut,

Normalement vous devriez pouvoir mettre ça en début de votre login.php pour vous aider:

<?php
// ob_start holds data in the script,
// instead of sending data in pieces
ob_start();

// your php code

// ob_flush sends all the data to the browser
ob_flush();
?>


https://www.php.net/manual/fr/function.ob-start.php
 

foxardt

New Member
#5
j'ai testé de mettre le ob_start() en tout début de page et ob_flush() en fin de page mais ça ne change rien
 

PH-Marc-André.B.

Modérateur
Membre du personnel
#6
Bonjour,

C'est très étrange, nous permettez vous de prendre une copie de votre site pour faire des test sur un environnement isolé?

Vos fichiers seront détruits aussitôt les essais effectués.
 

PH-Gabriel

Moderateur
Membre du personnel
#8
Bonjour foxardt,

Je viens de vérifier et le tout fonctionne sans problème (avec ou sans ob_start()).

Voici mon code de test:

PHP:
<?php session_start();

$_SESSION['test'] = 'this is a test';
echo "Before: ", $_SESSION['test'], "<br>\n";

unset($_SESSION['test']);
echo "After: ", $_SESSION['test'];
?>
 
Haut