2015-04-22 58 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; 
} 
?> 

謝謝!希望我能夠收到你的回覆。希望這有助於他人。

相關問題