suchen
HeimBackend-EntwicklungPHP-TutorialPHP实现跨域名Cookie_PHP

Cookie

Cookie真是一个伟大的发明,它允许web开发者保留他们的用户的登录状态。然而,当你的站点或网络
有一个以上的域名时就会出现问题了。


  在Cookie规范上说,一个cookie只能用于一个域名,不能够发给其它的域名。因此,如果在浏览器中对
一个域名设置了一个cookie,这个cookie对于其它的域名将无效。如果你想让你的用户从你的站点中的其中
一个进行登录,同时也可以在其它域名上进行登录,这可真是一个大难题。


  我的解决方案将使用下面的一般框架:

一个预置的脚本将用来接受通过GET或COOKIE方式传递过来的sessionid号。它将比COOKIE优先选择GET
变量。所以,无论何时需要引用交叉的域名时,我们把sessionid做为一个URL参数进行发送。
修改Apache配置,用来实现重写所有的交叉域名的cookie。这样做的原因一会儿就会清楚了。
在任何时候出现一个交叉域名引用时使用变量。
第一步:创建预置脚本
  将下面的代码加到预置脚本中(或出现在所有脚本之前的函数中)。

<font color="#000000"> <font color="#0000BB"></font><font color="#007700"></font><font color="#0000BB">php <br><br></font><font color="#FF8000">/* 支持交叉域名cookie... */ <br><br>// 如果GET变量已经设置了,并且它与cookie变量不同 <br>//则使用get变量(更新cookie) <br></font><font color="#007700">global </font><font color="#0000BB">$HTTP_COOKIE_VARS</font><font color="#007700">, </font><font color="#0000BB">$HTTP_GET_VARS</font><font color="#007700">; <br>if (isset(</font><font color="#0000BB">$sessionid</font><font color="#007700">) && isset(</font><font color="#0000BB">$HTTP_GET_VARS</font><font color="#007700">['</font><font color="#0000BB">sessionid</font><font color="#007700">\'</font><font color="#0000BB">]) && ($HTTP_COOKIE_VARS[</font><font color="#007700">\'</font><font color="#0000BB">sessionid</font><font color="#007700">\'</font><font color="#0000BB">] != $HTTP_GET_VARS[</font><font color="#007700">\'</font><font color="#0000BB">sessionid</font><font color="#007700">\'</font><font color="#0000BB">])) { <br>SetCookie(</font><font color="#007700">\'</font><font color="#0000BB">sessionid</font><font color="#007700">\'</font><font color="#0000BB">, $HTTP_GET_VARS[</font><font color="#007700">\'</font><font color="#0000BB">sessionid</font><font color="#007700">\'</font><font color="#0000BB">], 0, </font><font color="#007700">\'</font><font color="#0000BB">/</font><font color="#007700">\'</font><font color="#0000BB">, </font><font color="#007700">\'\'</font><font color="#0000BB">); <br>$HTTP_COOKIE_VARS[</font><font color="#007700">\'</font><font color="#0000BB">sessionid</font><font color="#007700">\'</font><font color="#0000BB">] = $HTTP_GET_VARS[</font><font color="#007700">\'</font><font color="#0000BB">sessionid</font><font color="#007700">\'</font><font color="#0000BB">]; <br>$sessionid = $HTTP_GET_VARS[</font><font color="#007700">\'</font><font color="#0000BB">sessionid</font><font color="#007700">\'</font><font color="#0000BB">]; <br>} <br><br>?></font> </font>

  一旦这个代码运行之后,一个全局的\'sessionid\'变量将可以用于脚本。它将保存着用户的cookie中的
sessionid值,或者是通过GET请求发来的sessionid值。


第二步:为所有的交叉域名引用使用变量
  创建一个全局的配置文件,用于存放可以进行切换的域名的基本引用形式。例如,如果我们拥有
domain1.com和domain2.com,则如下设置:

<font color="#000000"> <font color="#0000BB"></font><font color="#007700"></font><font color="#0000BB">php <br><br>$domains</font><font color="#007700">['</font><font color="#0000BB">domain1</font><font color="#007700">\'</font><font color="#0000BB">] = "http://www.domain1.com/-$sessionid-"; <br>$domains[</font><font color="#007700">\'</font><font color="#0000BB">domain2</font><font color="#007700">\'</font><font color="#0000BB">] = "http://www.domain2.com/-$sessionid-"; <br><br>?></font> </font>

  现在,如果在代码中如下做:

<font color="#000000"> <font color="#0000BB"></font><font color="#007700"></font><font color="#0000BB">php <br><br></font><font color="#007700">echo </font><font color="#DD0000">"Click <a href="%5C%22%22</font"><font color="#007700">, </font><font color="#0000BB">$domains</font><font color="#007700">['</font><font color="#0000BB">domain2</font><font color="#007700">\'</font><font color="#0000BB">], "/contact/?email=yes\">here</font></a> to contact us."; <br><br>?></font> </font>
  你将产生如下的输出:

Click here
to contact us.

  在这里sessionid已经被插入到URL中去了。

  在这个地方,你可能会想"这样可能会在web服务器上打开名为横线,sessionid,横线的子目录?!?!?"。
然而,下面的步骤将提供一个必需的戏法,以便让它能够使用!


第三步:配置Apache
  现在,剩下的步骤就是配置apache来重写这个URL:

http://www.domain2.com/-66543afe6543asdf6asd-/contact/
  变成这样:

http://www.domain2.com/contact/?sessionid=66543afe6543asdf6asd
  并且这种url:

http://www.domain2.com/-66543afe6543asdf6asd-/contact/?email=yes
  变成这样:

http://www.domain2.com/contact/?email=yes&sessionid=66543afe6543asdf6asd
  为了实现它,简单地配置两个虚拟服务器,作为domain1和domain2,如下操作:


DocumentRoot /usr/local/www/domain1
ServerName www.domain1.com
RewriteEngine on
RewriteRule ^/-(.*)-(.*\?.*)$ $2&sessionid=$1 [L,R,QSA]
RewriteRule ^/-(.*)-(.*)$ $2?sessionid=$1 [L,R,QSA]



DocumentRoot /usr/local/www/domain2
ServerName www.domain2.com
RewriteEngine on
RewriteRule ^/-(.*)-(.*\?.*)$ $2&sessionid=$1 [L,R,QSA]
RewriteRule ^/-(.*)-(.*)$ $2?sessionid=$1 [L,R,QSA]


  这些重写的规则实现了上面两个URL重写的要求。

结论
  通过使用变量结合与apache的重写功能,交叉域名cookie可以以一种简单的方式实现。想要维护这样的
系统,无论什么时候链接交叉域名,在使用域名变量之外,什么也不用作了!在域名内部的链接不需要进行
修改,因为cookie会工作正常。

  如果你有兴趣看一下在生产网络中实际运作中的系统,请参观http://www.familyhealth.com.au/。在
一些交叉域名链接上移动你的鼠标,并且看一下当你点击后它们是如何被重写的。

  也许,使用这个技术唯一的问题就是无法删除在用户浏览器中的全部域名下的cookie。
Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
PHP und Python: Verschiedene Paradigmen erklärtPHP und Python: Verschiedene Paradigmen erklärtApr 18, 2025 am 12:26 AM

PHP ist hauptsächlich prozedurale Programmierung, unterstützt aber auch die objektorientierte Programmierung (OOP). Python unterstützt eine Vielzahl von Paradigmen, einschließlich OOP, funktionaler und prozeduraler Programmierung. PHP ist für die Webentwicklung geeignet, und Python eignet sich für eine Vielzahl von Anwendungen wie Datenanalyse und maschinelles Lernen.

PHP und Python: Ein tiefes Eintauchen in ihre GeschichtePHP und Python: Ein tiefes Eintauchen in ihre GeschichteApr 18, 2025 am 12:25 AM

PHP entstand 1994 und wurde von Rasmuslerdorf entwickelt. Es wurde ursprünglich verwendet, um Website-Besucher zu verfolgen und sich nach und nach zu einer serverseitigen Skriptsprache entwickelt und in der Webentwicklung häufig verwendet. Python wurde Ende der 1980er Jahre von Guidovan Rossum entwickelt und erstmals 1991 veröffentlicht. Es betont die Lesbarkeit und Einfachheit der Code und ist für wissenschaftliche Computer, Datenanalysen und andere Bereiche geeignet.

Wählen Sie zwischen PHP und Python: Ein LeitfadenWählen Sie zwischen PHP und Python: Ein LeitfadenApr 18, 2025 am 12:24 AM

PHP eignet sich für Webentwicklung und schnelles Prototyping, und Python eignet sich für Datenwissenschaft und maschinelles Lernen. 1.PHP wird für die dynamische Webentwicklung verwendet, mit einfacher Syntax und für schnelle Entwicklung geeignet. 2. Python hat eine kurze Syntax, ist für mehrere Felder geeignet und ein starkes Bibliotheksökosystem.

PHP und Frameworks: Modernisierung der SprachePHP und Frameworks: Modernisierung der SpracheApr 18, 2025 am 12:14 AM

PHP bleibt im Modernisierungsprozess wichtig, da es eine große Anzahl von Websites und Anwendungen unterstützt und sich den Entwicklungsbedürfnissen durch Frameworks anpasst. 1.PHP7 verbessert die Leistung und führt neue Funktionen ein. 2. Moderne Frameworks wie Laravel, Symfony und Codesigniter vereinfachen die Entwicklung und verbessern die Codequalität. 3.. Leistungsoptimierung und Best Practices verbessern die Anwendungseffizienz weiter.

Auswirkungen von PHP: Webentwicklung und darüber hinausAuswirkungen von PHP: Webentwicklung und darüber hinausApr 18, 2025 am 12:10 AM

PhPhas significantantyPactedWebDevelopmentAndendendsbeyondit.1) iTpowersMAjorPlatforms-LikewordpressandExcelsInDatabaseInteractions.2) php'SadaptabilityAllowStoscaleForLargeApplicationsfraMe-Linien-Linien-Linien-Linienkripte

Wie funktioniert der Php -Typ -Hinweis, einschließlich Skalartypen, Rückgabetypen, Gewerkschaftstypen und nullbaren Typen?Wie funktioniert der Php -Typ -Hinweis, einschließlich Skalartypen, Rückgabetypen, Gewerkschaftstypen und nullbaren Typen?Apr 17, 2025 am 12:25 AM

PHP -Typ -Eingabeaufforderungen zur Verbesserung der Codequalität und der Lesbarkeit. 1) Tipps zum Skalartyp: Da Php7.0 in den Funktionsparametern wie int, float usw. angegeben werden dürfen. 3) Eingabeaufforderung für Gewerkschaftstyp: Da Php8.0 in Funktionsparametern oder Rückgabetypen angegeben werden dürfen. 4) Nullierstyp Eingabeaufforderung: Ermöglicht die Einbeziehung von Nullwerten und Handlungsfunktionen, die Nullwerte zurückgeben können.

Wie handelt es sich bei PHP -Objektklonen (Klonschlüsselwort) und der __clone Magic -Methode?Wie handelt es sich bei PHP -Objektklonen (Klonschlüsselwort) und der __clone Magic -Methode?Apr 17, 2025 am 12:24 AM

Verwenden Sie in PHP das Klonschlüsselwort, um eine Kopie des Objekts zu erstellen und das Klonierungsverhalten über die \ _ \ _ Clone Magic -Methode anzupassen. 1. Verwenden Sie das Klonschlüsselwort, um eine flache Kopie zu erstellen und die Eigenschaften des Objekts, nicht die Eigenschaften des Objekts zu klonen. 2. Die \ _ \ _ Klonmethode kann verschachtelte Objekte tief kopieren, um flache Kopierprobleme zu vermeiden. 3. achten Sie darauf, dass kreisförmige Referenzen und Leistungsprobleme beim Klonen vermieden werden, und optimieren Sie die Klonierungsvorgänge, um die Effizienz zu verbessern.

PHP vs. Python: Anwendungsfälle und AnwendungenPHP vs. Python: Anwendungsfälle und AnwendungenApr 17, 2025 am 12:23 AM

PHP eignet sich für Webentwicklungs- und Content -Management -Systeme, und Python eignet sich für Datenwissenschafts-, maschinelles Lernen- und Automatisierungsskripte. 1.PHP hat eine gute Leistung beim Erstellen von schnellen und skalierbaren Websites und Anwendungen und wird üblicherweise in CMS wie WordPress verwendet. 2. Python hat sich in den Bereichen Datenwissenschaft und maschinelles Lernen mit reichen Bibliotheken wie Numpy und TensorFlow übertrifft.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

Dreamweaver Mac

Dreamweaver Mac

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)