2017-08-30 11 views
0

J'utilise ce Flash Messages Script pour un système simple de redirection et de message flash. Tout fonctionne correctement sur mon apache localhost, mais dès que je le télécharge sur un serveur (également apache) cela ne fonctionne pas. Il définit les sessions et affiche également les messages correctement, mais il ne supprime pas les messages par la suite. Maintenant, j'ai un tas de "messages Flash" sur mon site Web et ils obtiendront de plus en plus à moins que vous fermiez votre navigateur pour désactiver toutes les sessions avec force.Les messages Flash ne disparaissent pas PHP

J'ai déjà lu la documentation un millier de fois et ai également recherché dans le script de messages Flash sur le serveur pour des erreurs. Je n'ai pas pu en trouver.

Peut-être que vous pouvez m'aider. L'hôte sur lequel je vais déployer mon site web est strato.com.

Modifier: J'ai trouvé un cookie appelé PHPSESSID dans les informations de mon navigateur. Peut-être que cela pourrait être utile.

Constructeur:

public function __construct() 
{ 

    // Generate a unique ID for this user and session 
    $this->msgId = sha1(uniqid()); 

    // Create session array to hold our messages if it doesn't already exist 
    if (!array_key_exists('flash_messages', $_SESSION)) $_SESSION['flash_messages'] = []; 

} 

fonction Effacer la session:

protected function clear($types=[]) 
{ 
    if ((is_array($types) && empty($types)) || is_null($types) || !$types) { 
     unset($_SESSION['flash_messages']); 
    } elseif (!is_array($types)) { 
     $types = [$types]; 
    } 

    foreach ($types as $type) { 
     unset($_SESSION['flash_messages'][$type]); 
    } 

    return $this; 
} 

Ajouter Sessions:

public function add($message, $type=self::defaultType, $redirectUrl=null, $sticky=false) 
{ 

    // Make sure a message and valid type was passed 
    if (!isset($message[0])) return false; 
    if (strlen(trim($type)) > 1) $type = strtolower($type[0]); 
    if (!array_key_exists($type, $this->msgTypes)) $type = $this->defaultType; 

    // Add the message to the session data 
    if (!array_key_exists($type, $_SESSION['flash_messages'])) $_SESSION['flash_messages'][$type] = array(); 
    $_SESSION['flash_messages'][$type][] = ['sticky' => $sticky, 'message' => $message]; 

    // Handle the redirect if needed 
    if (!is_null($redirectUrl)) $this->redirectUrl = $redirectUrl; 
    $this->doRedirect(); 

    return $this; 
} 
+0

Montrez-nous Votre code qui définit et désactive la session S'il vous plaît –

+0

J'ai découvert que c'est quelque chose à voir avec le cookie PHPSESSID. Comment puis-je désactiver ce cookie? –

Répondre

0

Je l'ai fixé. C'était dû à une modification de PHP 7.1 dans le fichier php.ini. Dès que j'ai rétrogradé ma version PHP vers PHP 7.0, tout a bien fonctionné. J'espère que cela aidera beaucoup de gens. Au moins, vous avez un point de départ maintenant.

+0

Savez-vous quel était le changement dans le fichier ini? Cela serait utile! –