Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编写类似godaddy的PHP单点登录_Php - Fatal编程技术网

编写类似godaddy的PHP单点登录

编写类似godaddy的PHP单点登录,php,Php,正如您在登录Godaddy时所看到的,他们已经实现了一个单一登录系统,可以将您登录到他们网站上的多个子域。url会发生变化,随着它的变化,它会将您登录到每个url,然后返回到您登录的原始url 话虽如此 1) 我假设他们在提交表单时通过POST传递变量,然后通过POST将表单数据重新提交到另一个域,然后再提交一次,再提交一次……等等。。。这是正确的吗 2) 他们正在通过1个顶级域传递它们。是否可以将这些变量(就像它们一样)一起传递到一个新域示例:登录到domain1.com,然后它将更改为dom

正如您在登录Godaddy时所看到的,他们已经实现了一个单一登录系统,可以将您登录到他们网站上的多个子域。url会发生变化,随着它的变化,它会将您登录到每个url,然后返回到您登录的原始url

话虽如此

1) 我假设他们在提交表单时通过POST传递变量,然后通过POST将表单数据重新提交到另一个域,然后再提交一次,再提交一次……等等。。。这是正确的吗

2) 他们正在通过1个顶级域传递它们。是否可以将这些变量(就像它们一样)一起传递到一个新域示例:登录到domain1.com,然后它将更改为domains2.com,并将您登录到那里,然后再登录domain3.com,等等(按预定义列表)

3) 有没有比他们的做法更适合我的项目(如下所列)的更好的选择

我的项目:

我正在做一个项目,有几个领域,并将在未来扩大,以包括更多的领域。我正试图想出一种方法,当用户登录到其中一个时,它会以某种方式将他们全部登录到其中。这将允许用户能够在站点之间切换并保持登录状态,而无需重新登录到每个域。它全部使用1个用户数据库,然后每个站点都有自己的数据库。现在,这些域都在1台服务器上;然而,最终,每个域都会有自己的服务器

我这样做是作为一种学习经验,因为我一直对SSO感兴趣,并且如果我能设法让它高效地工作,我会尝试在生产环境中使用它


任何推荐/建议都将不胜感激。

一种选择是,您可以将一个web元素放置在两个域上,这两个域都可以从另一个域中提取。然后,您可以使用URL通知另一个域,用户位于第一个域上。这样就可以允许域B将该用户ID与其系统上的该用户相关联。有点难以解释,但我希望你能理解这一点;实际上,您希望如何对其背后的逻辑进行编码取决于您,因为有很多方法可以做到这一点

请务必注意,如果您正在使用此方法(或任何其他方法),您应该首先了解如果您没有使用正确的加密和身份验证等所存在的固有风险。我建议您进行一些研究,以防范诸如“中间人”或“重播”等攻击。但是,由于您拥有这两个域,因此为这两个域设置安全密钥应该没有问题

您还可以查看此网站,该网站提供了跨多个域共享同一cookie的演练:

您共享的链接。我注意到他们正在使用slave.asp。代码实际上是asp吗?还是php?代码实际上是用asp编写的,但同样的原则也适用。我用这个例子来演示这个理论,而不是一步一步地讲解。你明白这个概念吗?或者你有什么需要我澄清或演示的吗?让我知道你明白了什么,我们可以从那里开始工作。是的,我认为php的设置有点奇怪,但我不得不问。嗯,我其实一点也不懂ASP。我对如何在php中设置SSO系统并不熟悉,这就是我研究它的原因。我喜欢他们做这件事的方式……如果我没弄错的话。他们登录站点1。当他们到达站点2时…它会自动检查站点1以查看他们是否已登录,然后带着某种用户标识将他们带回站点1,然后将他们登录到站点2。但这就是我从中得到的全部。我想在你能够编写这段代码之前,你需要先做一些研究。这是一篇非常好的文章,概述了流程背后的理论,还提供了一个用PHP编写的可下载示例。有了这样的功能,在实时服务器上实现任何功能之前,只需确保您了解每个步骤的安全风险。当你头脑清醒时,你可以提出一个更具体的问题来帮助你解决问题。请参阅此处的信息: