web-dev-qa-db-ja.com

Cookieを設定してからすぐにページを更新する

モバイルユーザーをモバイルサイトにリダイレクトする小さなWordPressプラグイン( mobileesp-for-wordpress )を書きました。これは mobileesp に基づいています。

プラグイン自体は問題なく動作しますが、サイト全体を表示するオプションを追加しました。この機能はクッキーをチェックすることによって機能し、クッキーがあるかどうかはユーザーをモバイルサイトにリダイレクトしません。

これも機能しますが、ユーザーはリンクを2回クリックする必要があります。一度クッキーを設定し、それらをWordPressサイトに戻すために2回目。完全なコードはこちら で見つけることができます が、これが関連する部分だと思います。

$get_cookie_check = $_GET['view_full_site'];
if(isset($get_cookie_check)){
    if($get_cookie_check =='true'){
        //set the cookie
        setcookie("mobileesp_wp_full_site", 'true', time()+86400, "/", $domain);
    }
}
//cookie variable
$full_site_cookie= $_COOKIE['mobileesp_wp_full_site']; 

//make sure the target url is set and full site cookie isn't set
if((get_option('mobileesp_wp_target_url') != '') && ($full_site_cookie !="true")){
    //check for a mobile browser and redirect the user 
}

}

一時的な解決策は、モバイルサイトのクッキーを確認してからリダイレクトすることですが、これを行うにはより良い方法があります。

2
Brooke.

setcookie 関数は、次のページのロード時に送信されるHTTP cookieヘッダーを準備します。 $_COOKIEスーパーグローバルが自動的に更新されないのはそのためです。

現在のリクエストで使用するために$_COOKIEを手動で更新することができます。これをsetcookie()行の下に置くだけです。

$_COOKIE['mobileesp_wp_full_site'] = 'true';

ところで、私は'true'のような文字列ではなく、整数(01)だけで作業することを望みます。そうすれば、それらを単に! empty($_GET['view_full_site'])のようにチェックすることができます。

2
Geert