2015-04-22 38 views
1

为了安全起见,我只需要显示一个页面给用户,如果他们来自特定的网站,而不是直接访问者。如何根据随机URL字符串重定向用户?

我现在设置它的方式,会有一个随机的12个字符的字符串生成并附加到网址。例如:

http://www.example.com?skey=a72bzy321bgf 

的SKEY参数将始终是随机的,但总是有12个字符。所以基本上,如果我的网址有一个& key =带有12个随机字符的参数,则页面显示正确。如果不是,游客去别的地方。

任何关于如何将代码写入页面的帮助,或者我应该如何Google找到必要的说明?我已经找遍了,并没有找到如何去继续这件事,我也不知道究竟要寻找什么。所以任何帮助将不胜感激。

谢谢!

+1

'只显示一个页面给用户,如果他们来自一个特定的网站'所以你使用refer http变量?有些浏览器不会发送该消息,有时甚至是不正确的。如果您可以控制这两个站点,那么您应该在这两个站点之间创建通信,并且只允许来自第一个站点的用户使用随机密钥,以便他们可以连接到第二个站点。 –

回答

1

请求skey价值出发,找到值。如果长度的长度不等于12,然后用模具()来防止用户看到page.Use在目标页面如下:(http://www.example.com/index.php?skey=a72bzy321bgf

<?php 
    if(!isset($_REQUEST['skey']) || strlen($_REQUEST['skey']) != 12){ 
     die("Soory,You came to this page in a Wrong Way."); 
    } 
?> 
//Your Code will goes here. 
+0

谢谢@Pravat! 这完美的作品。我结合了其他人的建议,以下是我的代码目前的设置: <?php if(!isset($ _ REQUEST ['skey'])|| strlen($ _ REQUEST ['skey' ])!= 12){ header(“Location:http://example.org/not-allowed.php”); \t \t exit; } ?> 谢谢! – Andrew

1

你可以得到键URL,然后检查你的功能,因为它是有效的在你的网页

$key = trim($_GET['key']); 

if(!isValidKey($key)){ 
    //die('Invalid Key'); //or 
    header("Location: wrongkey.html"); 
    exit; 
} 
1

您需要检查是否$_GET['skey']isset(),如果string length是12通道aracters。

if (isset ($_GET['skey']) && strlen($_GET['skey']) == 12) { 
    // Get in 
} 
else { 
    // Go away 
} 

这当然是不正确的方法来检查用户从哪里,因为你的引荐来源网址,就需要有skey设置为URL的一部分莫名其妙来到了。

您可以改为检查您的$_SERVER['HTTP_REFERER']isset()

+0

感谢您的建议 - 我会按照您的指示查看$ _SERVER ['HTTP_REFERER'] isset()。 – Andrew

1

谢谢大家!

根据您的建议,我结合了一些东西,这是我到目前为止工作完美:

<?php 
if(!isset($_REQUEST['skey']) || strlen($_REQUEST['skey']) != 12){ 
    header("Location: http://example.org/not-allowed.php"); 
    exit; 
} 
?> 

谢谢!希望我能够收到你的回复。希望这有助于他人。

相关问题