0

我正在使用 PHP、mySQL 和 Javascript 编写登录系统。我的网站实际上是一个用 javascript 编写的 1 页应用程序 - 只有 1 个 html 页面。所有交互和导航都是通过 javascript 完成的。

当用户注册时,我在激活列中使用 32 位密钥在数据库中创建他们的记录。我将此作为激活链接通过电子邮件发送给注册人。这会将他们带到一个激活他们帐户的 php 文件(如果有错误,则不会)。一切都很好。

激活(或错误)后,我可以将他们带到一个 html 页面(例如 header('somesite.com/success.html') 告诉他们他们的帐户是否已激活,但我更愿意将他们带回特定功能在我的 1 页 javascript 网站中。我该怎么做?

我可以将它们带到该站点,但是如何将消息从我的 php 重定向传递到该站点,以便它知道是显示成功消息还是错误消息?

我是否将其放在重定向的 URL 中,例如http://somesite.com?activation=success?如果是这样,我如何将此变量放入我的 javascript 中?

我可以从 php 激活脚本中设置一个会话变量并在我的代码中检查它,但这似乎很笨拙。

我可以在 URL 中设置一个哈希并在代码中选择它,但如果可以的话,我会避免使用哈希导航。关于实现这一目标的方法的任何想法?

以下帮助和网站其他地方的最终答案:

function getURLParameter(name) {
return decodeURIComponent(
    (RegExp(name + '=' + '(.+?)(&|$)').exec(location.search)||[,null])[1]
);
}

然后重定向注册,例如 somesite.com?email=somebody%40else@somewhere.com&key=7da93f78cb4942555863c161f50f258d

我可以像 getURLParameter('email') 和 getURLParameter('key') 一样简单地获取这些变量

感谢大家的帮助。一定会喜欢这个网站

4

3 回答 3

1

由于您的单页应用程序中包含所有内容,因此您也可以将其用于激活 - 将激活链接转到http://homesite.com?activation=<32characterkey>,当您的应用程序检测到 GET 参数时,使用 AJAX 调用 PHP 激活,并通知用户结果。

于 2013-02-28T10:33:06.443 回答
1

您可以使用 Javascript 从 URL 获取变量:

我实际上问了一个类似的问题(我找不到)关于使用 Javascript 获取 URL 变量,有人非常有帮助地给了我这个函数:

function getUrlVars() {
    var vars = {};
    var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {vars[key] = value});
    return vars;
}

因此,要获得一个名为 'activation' 的 GET 变量,您可以像这样简单地调用函数:

getUrlVars()['activation']
于 2013-02-28T10:34:43.017 回答
0

您应该使用 AJAX 登录并在 AJAX 成功/错误回调中调用您的函数。

$.ajax()您可以使用 jQuery函数轻松做到这一点

http://api.jquery.com/jQuery.ajax/

于 2013-02-28T10:31:32.397 回答