我有一个普通管理员和超级管理员的网站,两者共享一些功能。我介绍的一个新功能是管理员序列激活。这已在普通管理员中实现,现在我正在尝试将相同的代码添加到超级管理员。如果您是普通管理员或超级管理员,您可以单击序列激活并继续激活.2.pp以激活。除非你改变主意激活序列,否则一切都运行得很好,在这种情况下你会点击“返回”或“取消”按钮返回上一个屏幕。我目前检查上一页使用php的内容:
$ref = $_SERVER['HTTP_REFERER'];
这个想法是在“后退”链接上显示不同的返回网址和“取消”按钮,具体取决于前一页是“super-admin-serials.php”还是“admin-serials.php”。我试图在$ _SERVER ['HTTP_REFERER']中匹配'super-admin-serials.php'来推断上一页是什么,并允许用户返回到他的上一页。但是我放在一起的代码不起作用,所以如果有人可以帮助这个简单的功能,那将非常感激。这是我到目前为止在独立的'activate2.php'页面上取消并返回上一页的代码:
$superpage=array('super-admin-serials.php');
$ref = $_SERVER['HTTP_REFERER'];
if (in_array($ref, $superpage)) {
echo "<a href=\"super-admin-serials.php\">back (super admin)</a>";
} else {
echo "<a href=\"admin-serials.php\">back (normal admin)</a>" ;
}
答案 0 :(得分:1)
HTTP referer可能不仅包含它所来自的脚本名称,它通常包含一个完全限定的URL,例如 http://example.com/foo/your-script.php 。
我没有观察HTTP referer(如果刷新页面会丢失),我建议您将参数从第一页传递到第二页以确定它们的来源,并将它们发送回您需要的位置。
用户将透明地访问以下任一项:
然后以下代码将执行您想要的操作:
$isSuper = !empty($_GET['super']);
if ($isSuper) {
echo "<a href=\"super-admin-serials.php\">back (super admin)</a>";
} else {
echo "<a href=\"admin-serials.php\">back (normal admin)</a>" ;
}
答案 1 :(得分:0)
我知道你有某种登录功能,你无法与两个不同的用户同时登录(如果不是这样,请确保你没有运行一个不安全的网站很容易被黑客入侵)。在这种情况下,您应该已经在服务器上拥有该信息,因此从客户端收集它是不必要的和不可靠的。所以代码看起来像这样:
if ($_SESSION['is_super']) {
echo '<a href="super-admin-serials.php">back (super admin)</a>';
} else {
echo '<a href="admin-serials.php">back (normal admin)</a>';
}
(请注意,我还删除了双引号,除了使代码更难写入和读取之外没有任何其他目的。)
无论如何,您必须知道HTTP_REFERER
:
无论如何,如果你选择它,你可能希望以parse_url()为出发点。