Wie kann ich WordPress-Cookies auf meiner Website lesen?

Lesezeit: 3 Minuten

Ich möchte meine Website mit WordPress integrieren. Ich möchte wissen, wie ich WordPress-Cookies lesen kann, damit ich Benutzer auf meiner Website nicht erneut authentifizieren muss. Ich habe versucht, die Header-Datei von WordPress in meine Website aufzunehmen, aber dann war ich Ich kann keine Verbindung zur Datenbank meiner Website herstellen. Beide sind unterschiedlich. Kann ich zusätzliche Parameter von Cookies wie Benutzerebene usw. festlegen? Meine Website ist in PHP geschrieben.

  • Das Einbinden der WP-Header-Datei ist wahrscheinlich der beste Weg. Ich würde empfehlen, das Kompatibilitätsproblem erneut zu untersuchen – es sollte möglich sein, eine WP-DB-Verbindung und eine andere Verbindung im selben Skript zu haben.

    – Pekka

    19. Februar 2012 um 15:00 Uhr


  • Betreibt Ihre Website dieselbe (Sub-)Domain wie die WP-Site? Wenn ja, schauen Sie einfach in das $_COOKIE-Array und die WP-Cookies werden dort sein. Wenn Sie sich auf einer anderen Domain befinden, ist es viel komplizierter.

    – Halber

    19. Februar 2012 um 15:01 Uhr

Benutzer-Avatar
Thomas Guillory

Fügen Sie auf Ihrer Website diesen Code oben in jeder Datei ein:

<?php 
define('WP_USE_THEMES', false);
require('./blog/wp-blog-header.php');
?>

…vorausgesetzt, Ihr Blog ist da ./blog/.

Es enthält den gesamten WordPress-Stack. Sie haben Zugriff auf alle WordPress-Funktionen in Ihrem Code. Damit können Sie ganz einfach überprüfen, ob der Benutzer angemeldet ist, Rollen und Fähigkeiten, aber auch Beiträge abrufen oder so.

Dann in Ihrem Code, um den Benutzer zu überprüfen:

if (is_user_logged_in()) { ... } 

Codex: is_user_logged_in()

Sie können auch einen Abmeldelink einfügen:

<a href="https://stackoverflow.com/questions/9350265/<?php bloginfo("url"); ?>/wp-login.php?action=logout/">Logout</a>

Wenn sich Ihr Blog und Ihre Website nicht auf derselben Domain oder Subdomain befinden, müssen Sie die Cookie-Domain anpassen wp-config.php

define('COOKIE_DOMAIN', '.domain.com'); // Share cookie on all subdomains

BEARBEITEN

Wenn Sie wirklich nur die WordPress-Cookies lesen möchten (was eine gute Wahl für die Leistung ist): Der Cookie-Name wird in einer Konstante AUTH_COOKIE gespeichert.

AUTH_COOKIE ist definiert in /wp-includes/default-constants.php -> line 171 wie

"wordpress_" + md5( get_site_option(siteurl) )

Sie müssen AUTH_COOKIE abrufen oder neu berechnen und dann $_COOKIE lesen[AUTH_COOKIE].

Um es zu analysieren, schauen Sie sich an wp_parse_auth_cookie() in wp-includes/pluggable.php @line 585
(Tatsächlich ist das Format einfach user|expiration|hmac Also spalte die Kette auf | und bekomme das erste Element)

  • Aber wenn ich den WordPress-Header in meine Website-Seiten einfüge, kann ich keine Verbindung zu meiner eigenen Datenbank herstellen. Website und Blog befinden sich in derselben Domain. Gibt es eine Möglichkeit, das Cookie zu lesen, ohne den Header zu verwenden?

    – go_ku

    19. Februar 2012 um 17:01 Uhr

  • Es gibt keinen Grund, warum Sie sich nicht mit Ihrer DB verbinden können, es sei denn, Ihr Hosting-Provider beschränkt Ihre DB-Verbindung. Ich bezweifle, da Sie sagen, dass dies zwei verschiedene DB sind. Aber siehe meine Bearbeitung für den anderen Weg …

    –Thomas Guillory

    19. Februar 2012 um 17:59 Uhr

  • @Artimuz Ich verwende jquery uploadify, um Dateien von einer WordPress-Seite hochzuladen. Ich habe es erstmal mit versucht include_once '../../../../wp-load.php'; dann mit dem von dir empfohlenen Code, aber immerhin is_user_logged_in() gibt falsch zurück. Für mich sieht es eher nach einem WordPress-Bug aus.

    – Adrian7

    13. März 2012 um 8:48 Uhr


  • tippte das Uploadify-PHP-Skript im Browser ein, und es funktionierte … also schätze, es ist irgendwo ein Uploadify-Bug.

    – Adrian7

    13. März 2012 um 8:58 Uhr

  • Ich habe eine Lösung unter stackoverflow.com/questions/40146667/… gepostet, die hilfreich sein könnte, wenn Sie die Dinge für 1,05 Sekunden einfacher machen möchten.

    – Anna Ericsson

    25. Oktober 2018 um 9:53 Uhr

Damit Cookies in WordPress funktionieren, müssen Sie es auf eine spezielle Weise wie in der functions.php einstellen

function set_newuser_cookie() {
    if (!isset($_COOKIE['sitename_newvisitor'])) {
        setcookie('sitename_newvisitor', 1, time()+1209600, COOKIEPATH, COOKIE_DOMAIN, false);
    }
}
add_action( 'init', 'set_newuser_cookie');

Der wichtige Punkt ist also
setcookie('sitename_newvisitor', 1, time()+1209600, COOKIEPATH, COOKIE_DOMAIN, false);

Es bekommen

if (isset($_COOKIE['sitename_newvisitor'])) {
     echo 'Welcome back!';
}
else {
     echo 'Hello new visitor!';
}

Notiz: Sie können den Cookie-Namen „sitename_newvisitor“, den Wert, die Zeitüberschreitung, den COOKIEPATH und die COOKIE_DOMAIN an Ihre Bedürfnisse anpassen

1369390cookie-checkWie kann ich WordPress-Cookies auf meiner Website lesen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy