Lassen Sie zu, dass PHP-Sitzungen auf Subdomains übertragen werden

Lesezeit: 4 Minuten

Lassen Sie zu dass PHP Sitzungen auf Subdomains ubertragen werden
Antonius

Ich verwende PHP-Sitzungen (keine Cookies, außer Sitzungs-ID-Cookies) für alle Benutzerdaten, und wenn ein Benutzer zu seinem Profil user.mydomain.com geht, wird er sofort “abgemeldet”, bis dann die Subdomain entfernt wird.

Gibt es eine Möglichkeit, Sitzungen von allen Domains zu akzeptieren, solange es *.mydomain.com ist

  • Zuerst, ini_set('session.cookie_domain', '.example.com'), dann session_start() oder Session::start() von github.com/delight-im/PHP-Cookie

    – kräh

    12. Juli 2016 um 23:49 Uhr

1647290646 561 Lassen Sie zu dass PHP Sitzungen auf Subdomains ubertragen werden
CTT

Hier sind 4 Optionen.

Fügen Sie dies in Ihre php.ini ein:

session.cookie_domain = ".example.com"

Oder in deinem .htaccess:

php_value session.cookie_domain .example.com

Oder als erstes in Ihrem Skript:

ini_set('session.cookie_domain', '.example.com' );

Oder in Ihrer php-fpm-Pool-Konfiguration für Ihre Site:

php_value[session.cookie_domain] = .example.com

  • Leider haben alle 3 nicht funktioniert, muss da ein Stern * sein?

    – Antonius

    14. März 2009 um 0:11 Uhr

  • Sehr seltsam, ich habe diese Methoden schon einmal verwendet und sie funktionieren gut. Haben Sie zufällig Suhosin installiert, ich erinnere mich, dass es eine Einstellung gab, die geändert werden musste, um dies zu ermöglichen? Wenn nicht, können Sie weitere Informationen zu Ihrer Installation posten (z. B. Apache-, Lighttpd-, PHP-Version)?

    – CTT

    14. März 2009 um 0:25 Uhr

  • @CTT bitte fügen Sie Ihrer Antwort eine vierte Option hinzu: session_set_cookie_params(0, '/', 'example.com', false, false);

    – Heilige Socken

    5. Juni 2012 um 9:05 Uhr


  • Vergessen Sie nicht, den Browser tatsächlich zu schließen und dann erneut zu öffnen. Sonst dreht man sich im Kreis! .. Ich tat

    – AndreasC

    8. Mai 2013 um 16:11 Uhr

  • Eine weitere Erinnerung für dumme Leute wie mich: Stellen Sie sicher ini_set('session.cookie_domain', '.example.com'); kommt Vor session_start();

    – Ben Y

    21. September 2013 um 0:25 Uhr

        if(isset($_COOKIE['session_id']))
            session_id($_COOKIE['session_id']);
        Zend_Session::start(); //or session_start();
        if(!isset($_COOKIE['session_id']))
            setcookie('session_id', session_id(), 0, "https://stackoverflow.com/", '.yourdomain.com');

Sicherheit sei verdammt, wenn Sie von unvollständigen oder schlechten Antworten so frustriert sind wie ich, ist dies Ihre Rettung. Es funktioniert einfach.

  • das hat bei mir funktioniert, aber ich verstehe das Sicherheitsproblem nicht. Könnten Sie erklären, welche Sicherheitsprobleme es geben könnte?

    – Neo

    17. Oktober 2017 um 5:38 Uhr

Ändern Sie den Sitzungsnamen oben in der Kernfunktionsdatei wie

 session_name('mysession');

Verwenden Sie dann den folgenden Code in der PHP-Seite

  session_set_cookie_params(0,"https://stackoverflow.com/",".example.com",FALSE,FALSE);
  setcookie(session_name(), session_id(),0,"https://stackoverflow.com/","example.com");
  session_start();

Ändern Sie schließlich den Standard-Sitzungsnamen der Subdomain und entfernen Sie das Standard-Cookie in der Kernfunktionsdatei der Subdomain wie folgt:

 /*default session name*/
 session_name("mysession");
 /*remove the PHPSESSID and default session name from subdomain's cookie*/
 setcookie( "mysession", "",1,"https://stackoverflow.com/" );
 setcookie( "PHPSESSID", "",1,"https://stackoverflow.com/" );

Wenn Sie weiterhin Ihren Cookie-Namen als PHPSESSID verwenden, entfernen Sie einfach alle Funktionen mit

 "mysession" string like session_name('mysession'), setcookie( "mysession", "",1,"https://stackoverflow.com/" );

Überprüfen Sie dann die vorhandenen Cookies Ihres Browsers, entfernen Sie einfach alle Cookies der Domain und Subdomain und wiederholen Sie den Vorgang.

  • Dies hat die Arbeit für mich erledigt. Keine der anderen Antworten in dieser Frage hat funktioniert.

    – Art Geigel

    5. Februar 2016 um 18:37 Uhr

Ich weiß, dass dies ziemlich alt ist – aber um den Vorschlag von @CTT weiter auszubauen – musste ich eine php.ini-Datei in jedem Unterverzeichnis (das PHP-Code ausführt und die Sitzung erfordert) meiner Subdomain mit dem folgenden Text hinzufügen:

suhosin.session.cryptdocroot=Off
suhosin.cookie.cryptdocroot=Off

Ich hoffe, das hilft (ich habe Ewigkeiten gebraucht, um das herauszufinden).

Lassen Sie zu dass PHP Sitzungen auf Subdomains ubertragen werden
Laurent Duverge

Eine andere Option, die für mich funktioniert hat, besteht darin, den Namen der Sitzung zu erzwingen:

session_name("myWebsite");
session_start(); 

  • Dies scheint bei weitem die einfachste Lösung zu sein

    – Adam

    1. Juni 2018 um 4:31 Uhr

1647290647 722 Lassen Sie zu dass PHP Sitzungen auf Subdomains ubertragen werden
techraf

Jawohl. ini_set funktioniert. aber denken Sie daran, alle Caches und Cookies des Browsers zu zerstören, um zu sehen, dass es funktioniert.

  1. Zerstöre alle Caches und Cookies deines Browsers
  2. in deiner xxx.example.com und yyy.example.comIhre PHP-Dateien sollten so beginnen.

    ini_set('session.cookie_domain', '.example.com' ); session_start();
    

  • Dies scheint bei weitem die einfachste Lösung zu sein

    – Adam

    1. Juni 2018 um 4:31 Uhr

1647290647 235 Lassen Sie zu dass PHP Sitzungen auf Subdomains ubertragen werden
Mike

Ich hatte gerade dieses Problem und es stellte sich heraus, dass ich verschiedene php.ini-Dateien für zwei verschiedene Subdomains verwendet habe. Diese Ini-Dateien sind unterschiedlich angegeben session.save_path Variablen. Aus offensichtlichen Gründen muss dies für alle Subdomains gleich sein, die Sitzungen teilen müssen.

1003090cookie-checkLassen Sie zu, dass PHP-Sitzungen auf Subdomains übertragen werden

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

Privacy policy