从外部站点发送脚本时的用户登录会话

时间:2011-03-15 10:46:13

标签: php javascript session login bookmarklet

我正在开发一个与Instapaper具有类似功能的书签解决方案(书签功能,而非网站功能)。

对于我的第一个书签版本,我将用户发送到了mysite.com/add.php?url=[url],然后在后端做了我想做的事情(在数据库中添加了url等),只要用户之前登录过我的网站(使用cookie保持活动状态)。然后用户必须按后退按钮才能返回原始站点。这符合预期。

现在我想让用户留在原始网站上(就像instapaper bookmarklet一样),同时我在后台执行后端工作,因此:
- 书签现在将javascript函数附加到原始站点
- javascript使用表单并将URL提交到mysite.com/add.php,其中url作为变量(add.php不变)
- 我将add.php的状态输出到orignal网站上出现的iframe

这样做到目前为止,网址被发送到add.php,而用户仍留在原始网站上,状态将打印在我暂时显示在原始网站上的iframe中。

但是,从脚本的角度来看,即使他/她直接访问mysite.com,用户也不会再登录。我正在使用这个登录系统(http://www.evolt.org/node/60384)。

你能指出我正确的方向吗?如果您需要更多信息,请告诉我。

由于

2 个答案:

答案 0 :(得分:0)

Cookie实际上是否被发送到add.php文件?您是否使用任何类型的开发工具进行了检查或尝试过“var_dump($ _ COOKIE)”?

您在哪些浏览器中进行了测试?

从我给出的内容开始,我猜这是浏览器的安全预防措施 - 否则任何网站都可能包含iFrame,并且通过JavaScript开始在其他网站上执行操作,而不是知识。

环顾四周,我确实发现了this potential workaround特别指的是IE7,但我不知道它是否与你的问题有关,因为我不知道这是否只是你的IE问题。

答案 1 :(得分:0)

由于我在IE中工作,但不是在Firefox或Chrome中工作,我倾向于得出结论,这是由于浏览器的安全预防措施,并且我不会仅通过使用php会话来使其工作

因此,我想出了一个替代解决方案来实现我想要实现的目标,我希望由你来管理。

请评论:

1)当用户在我的网站注册时,我为该用户创建了一个随机的唯一静态标识符(RUSI)(即不是用户名或散列的pwd)
2)我将此RUSI附加到书签代码(意味着只有在用户登录我的网站时才能添加书签)
3)当用户按下书签时,我的脚本会检查RUSI对应的用户名,并检查该用户名是否在我的active_user表中(包含所有已登录的用户名) 4)如果active_user表中存在用户名,那么bookmarklet会执行它应该执行的操作,否则我会打印“请登录”或类似。

如上所述,请对此解决方案发表评论,因为我很难弄清楚这是一个好的还是非常糟糕的方法。显而易见的缺点当然是找到其他用户RUSI的用户只要他/她已登录就可以代表他/她执行脚本。

感谢。