2017-08-30 7 views
0

私はこの簡単なリダイレクトおよびフラッシュメッセージシステムにFlash Messages Scriptを使用しています。 すべてが私のapacheのlocalhost上で正常に動作しますが、サーバ(またはApache)にアップロードするとすぐに動作しません。セッションを設定し、メッセージを正しく表示しますが、その後はメッセージの設定を解除しません。今では私のウェブサイトに「フラッシュメッセージ」がたくさんあり、すべてのセッションを強制的に解除するようにブラウザを閉じない限り、それらはますます多くなります。フラッシュメッセージが消えないPHP

私は既に1,000回ものようなドキュメントを読んでおり、サーバー上のFlash Messagesスクリプトでエラーがないか検索しました。私は何も見つけることができませんでした。

多分あなたが私を助けることができます。私のウェブサイトを展開するホストはstrato.comです。

編集:ブラウザの情報にPHPSESSIDというCookieがあります。多分、これは役に立つかもしれません。

コンストラクタ:

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'] = []; 

} 

クリアセッション機能:

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; 
} 

はセッションを追加します。

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

私たちに教えてくださいセッションを設定したり解除したりするコード –

+0

PHPSESSID-cookieと関係があることが分かりました。このクッキーが設定されることをどうやって無効にすることができますか? –

答えて

0

私はそれを修正しました。これはphp.iniファイルのPHP 7.1の変更によるものです。私がPHPバージョンをPHP 7.0にダウングレードするとすぐに、すべてが正常に機能しました。

私はこれが多くの人々に役立つことを願っています。少なくともあなたには出発点があります。

+0

iniファイルの変更点を知っていますか?それは助けになるだろう! –

関連する問題