it-swarm.com.de

Cookie setzen und die Seite sofort aktualisieren

Ich habe ein kleines WordPress-Plugin ( mobileesp-for-wordpress ) geschrieben, das mobile Benutzer auf die mobile Website umleitet. Es basiert auf mobileesp .

Das Plugin selbst funktioniert einwandfrei. Das Problem ist, dass ich eine Option zum Anzeigen der vollständigen Site hinzugefügt habe. Diese Funktion sucht nach einem Cookie. Wenn das Cookie vorhanden ist, leiten Sie den Benutzer nicht zur mobilen Site weiter.

Dies funktioniert auch, aber der Benutzer muss zweimal auf den Link klicken. Einmal, um das Cookie zu setzen, und das zweite Mal, um sie wieder in die WordPress-Site zu übernehmen. Den vollständigen Code finden Sie hier , aber ich denke, das ist der relevante Teil.

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

}

Die vorübergehende Lösung wäre, auf der mobilen Website nach dem Cookie zu suchen und ihn dann umzuleiten. Gibt es eine bessere Möglichkeit, dies zu tun?.

2
Brooke.

Die Funktion setcookie bereitet den HTTP-Cookie-Header vor, der beim nächsten Laden der Seite gesendet wird. Aus diesem Grund wird der $_COOKIE superglobal nicht automatisch aktualisiert.

Sie können $_COOKIE manuell für die aktuelle Anforderung aktualisieren. Stellen Sie dies einfach unter Ihre setcookie()-Zeile:

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

Übrigens würde ich es vorziehen, nicht mit Zeichenfolgen wie 'true' zu arbeiten, sondern nur mit ganzen Zahlen (0 und 1). Sie können sie dann einfach folgendermaßen überprüfen: ! empty($_GET['view_full_site']).

2
Geert