我正在构建一种在我的网站上模仿某个用户的方法,类似于Facebook现在使用“查看为”按钮在个人资料上进行操作的方法。
此处的目标是能够将我想要模拟的人的用户ID附加到查询字符串,如下所示:viewas=1234
。看到后,该网站将允许我(作为管理员)“模仿”该用户。
然而,问题在于在页面加载之间进行“模拟”状态。我点击的每个链接都需要调整以携带viewas=1234
。
例如,一个通常看起来像这样的链接......
<a href='http://www.example.com/profile?profileid=5678'>My Profile</a>
......必须动态地知道变成......
<a href='http://www.example.com/profile?profileid=5678&viewas=1234'>My Profile</a>
...每当我想冒充用户名为1234的用户时。这必须在网站范围内进行。
在加载后用JS在服务器端或者其他什么地方以某种方式使用JS以这种方式执行此操作是最好的方法吗?
答案 0 :(得分:2)
jQuery非常适合这类事情;为所有'a'标签创建一个选择器,并将查询字符串附加到href属性。
例如,
$('a').each(function () {
var href = $(this).attr('href');
href += '?viewas=1234';
$(this).attr('href',href);
});
答案 1 :(得分:1)
您应检测是否已设置,如果已设置,请为每个链接附加。
类似的东西:
if (isset($_GET['viewas'])){
$linkurl .= '&viewas='.$_GET['viewas'];
}
当然,您不应该对每个链接进行检查,而是将其设为变量。还要进行一些安全检查,以确保它是有效的视图。
答案 2 :(得分:1)
不确定这是否是您正在寻找的答案,但不管怎么说。我最近不得不实现一组类似的功能。我在会话变量中存储了“viewas”的值。这样,就没有必要修改HTML,javascript等 - 只有你的代码(你已经在修改它来处理查询字符串) - 在代码中检查会话变量。
当管理员从模拟中“退出”时,您可以取消设置此变量。