在通过电子邮件链接进行验证时定位窗口

时间:2010-09-30 21:31:09

标签: php javascript html

我的网站上有一个注册页面。输入您的信息后,该网站会发送一封电子邮件来验证该用户。从该电子邮件链接:

我想知道如何将之前打开的窗口定位到我的网站? (目前会说:感谢您注册,请查看您的电子邮件以获取验证令牌)

放置在网站的body标签中:

<body onload="window.name='thesite';">

尝试使用带有Content-type:text / html的PHP的mail()函数从电子邮件发送带有target =“thesite”的<a>标记,但目标不会占用。

<body><html>    
<a href="http://www.demo.com/index.php?token=123456789" target="thesite">Verify</a>
</body></html>

似乎会这样,但它只是打开一个新窗口。

1 个答案:

答案 0 :(得分:1)

相当恼人的是没有一步到位的简单解决方案(根据我的知识你不能将打开的窗口作为目标),这是我认为可行的解决方案:

  • “点击此处验证”页面有一个脚本,每200毫秒检查一次cookie,其中包含setInterval(“CheckVerified();”,200)的效果。 CheckVerified()导航到http://www.demo.com/index.php?token=-token_from_cookie-,其中body.focus()作为onload事件。
  • 电子邮件中的链接转到一个页面,其中包含两个onload函数 - SetCookie(名称,来自电子邮件中链接参数的-token); window.close()的;

基本上,电子邮件中的链接会打开一个更改cookie的页面,然后立即关闭。显示“等待验证...”的消息的原始页面会注意到已更改的cookie,并通过导航到实际的PHP验证脚本进行响应。重要的是在一个窗口中打开原始验证页面(如果它是一个标签,它的javascript将在没有焦点时被冻结)因此需要body.focus()以引起用户的注意

虽然这种方法看起来有点乏味,但它避免了窗口交叉脚本和其他有趣的安全问题。