ポップアップ ウィンドウのタイミングを制御する php スクリプトを作成しました。ポップアップして 60 秒に 1 回だけ表示したい。スクリプトは、ユーザーが最初にページにアクセスしたときに Cookie を設定し、それ以降のアクセスでは Cookie をチェックし、Cookie の有効期限が切れている場合にのみポップアップをアクティブにします。ポップアップは、変数 $_SESSION['activate_popup'] によって制御されます。
スクリプトは、ユーザーが初めてページにアクセスしたときを除いて、すべての場合に意図したとおりに機能します。Cookie は空であるため、条件 1 で Cookie を設定し、ポップアップをアクティブにする必要があります。代わりに、条件 1 で Cookie を設定し、条件 2 で出力を表示します。
$GLOBALS['popup_output'] .= '<!-- begin popup -->';
$domain = 'brocktonvilla.com';
$expiration = time() + 60;
$time_until_expires = $_COOKIE['rc_popuup2'] - time();
$GLOBALS['popup_output'] .= '<!-- time until expires: ' . $time_until_expires . ' sec -->';
/* 1 */ if ( empty($_COOKIE['rc_popuup2']) ) { // if cookie has not been set
setcookie('rc_popuup2', $expiration, $expiration, '/', $domain ); // set cookie with value of cookie equals expiration time
$_SESSION['activate_popup'] = 'yes'; // activate the popup
$GLOBALS['popup_output'] .= '<!-- cookie empty => show popup & set cookie -->';
}
/* 2 */ elseif ( $_COOKIE['rc_popuup2'] > time() ) { // cookie has been set and cookie expiration is greater than current time
$_SESSION['activate_popup'] = 'no'; // do not activate popup
$GLOBALS['popup_output'] .= '<!-- cookie set and not expired => do not show popup -->';
}
/* 3 */ elseif ( $_COOKIE['rc_popuup2'] < time() ) { // cookie has been set and cookie expiration is less than current time
$_SESSION['activate_popup'] = 'yes'; // activate the popup
setcookie('rc_popuup2', $expiration, $expiration, '/', $domain ); // reset cookie with value of cookie equals expiration time
$GLOBALS['popup_output'] .= '<!-- cookie set but has expired => show popup & reset cookie -->';
}
スクリプトの動作はhttp://www.brocktonvilla.com/で確認できます。ソース コード「begin popup」を検索すると、Cookie が条件 1 で設定されており、最初にページにアクセスしたときに条件 2 で出力が表示されることがわかります。