如果仅来自特定页面,则允许访问页面

时间:2013-08-20 13:57:25

标签: php redirect request uri

我的情况:

  1. articlesubmitted.php - 从数据库中的特定用户名中读取最后一篇文章信息。
  2. addarticle.php - 将文章添加到数据库。
  3. 我想发表articlesubmitted.php只接受来自addarticle.php的访问,并且如果有可能被提交文章的用户只读一次。

    我在REQUEST_URI找到了一些东西但无法工作。

    我该怎么做?可以用.htaccess制作吗?

3 个答案:

答案 0 :(得分:1)

尝试将以下示例与您的现有代码一起使用:

HTML LINK(link_for_get_access.php)

<a href="get_access.php">GO HERE</a>

get_access.php

<?php

if (strstr($_SERVER['HTTP_REFERER'],"example.com/link_for_get_access.php"))

{

echo "<h1>You have access.</h1>";

}
else
{

echo "<h1>Sorry, you don't have access.</h1>";

}

?>

答案 1 :(得分:0)

我建议您使用Cookie来执行此操作。例如,使用$ _SESSION:

<?php
session_start();

// Do this at the top of every page
$_SESSION['last_page'] = isset($_SESSION['current_page']) ? $_SESSION['current_page'] : NULL;
$_SESSION['current_page'] = 'this_page.php';

if($_SESSION['last_page'] !== 'addarticle.php')
   throw new ...

...

答案 2 :(得分:0)

在http服务器重写模块中,如果用户解析链接(点击链接)以加载网址,则可以评估通常包含在任何http请求中的“HTTP_REFERRER”。当指定的引荐来源匹配允许的引用时,您可以将请求重定向到您想要的任何位置。在该级别上运行比在php内部运行更快 。请注意,这通常还会阻止通过单击链接以通常方式触发的任何请求。

将请求限制为仅一次尝试的第二个要求很难在服务器级别上实现。正如其他人在此指出的那样,在用户会话中控制它要容易得多。