私はこの簡単なリダイレクトおよびフラッシュメッセージシステムに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;
}
私たちに教えてくださいセッションを設定したり解除したりするコード –
PHPSESSID-cookieと関係があることが分かりました。このクッキーが設定されることをどうやって無効にすることができますか? –