允许访问一个页面如果仅仅从一个特定的页面来

问题描述:

我的情况:允许访问一个页面如果仅仅从一个特定的页面来

  1. articlesubmitted.php - 读从数据库中的特定用户名的最后一个项目的信息。
  2. addarticle.php - 将文章添加到数据库。

我想做articlesubmitted.php只接受来自addarticle.php的访问,并且如果可能仅由他提交文章的用户提供一次。

我找到了一些REQUEST_URI,但无法工作。

我该怎么做?有可能由.htaccess制作?

+1

为了让您更容易帮助您,请告诉我们您尝试过的方法以及它的工作原理? – Anigel

+0

尝试使用REQUEST_URI,但我没有发现任何设置,以便仅接受来自特定页面的访问。 –

+0

是的,您是如何尝试使用哪些代码的? – Anigel

尝试使用您的本次代码下面的例子:

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

This Works,also I added:if(!isset($ _ SERVER ['HTTP_REFERER'])){header(“location:/”); } –

+0

@JohnSmith这是伟大的约翰,很高兴听到它为你工作:) –

我建议您使用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 ... 

... 

在HTTP服务器重写模块中,您可以评估通常包含在“HTTP_REFERRER”中的“HTTP_REFERRER”如果用户解析链接(点击链接)以加载url,则返回http请求。当指定的引用者确实不是与允许的匹配时,您可以将请求重定向到任何您想要的位置。在那个级别上运行的是,比在php里面做事要快得多。请注意,这通常会通过单击链接来阻止任何不以常规方式触发的请求。

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