2016-08-05 139 views
2

我正在頁面上工作,因此沒有人可以鏈接到使用此頁面的頁面:創建URL的唯一ID

以下代碼在循環中調用。

$gentok = uniqid(); 

if(isset($_GET["action"]) && $_GET["action"] == "clean_$gentok") { 
    // stuff 
} 

然後,我有這個打電話的網址:

<a href="<?php echo admin_url("themes.php?page=cleaner&action=clean_$gentok"); ?>">Clean this and that</a> 

但是點擊鏈接,頁面刷新並在uniqid()已經改變。

我該怎麼做才能讓uniqid()頁面刷新後仍然一樣?我願意接受任何改變或更好的想法。

謝謝!

+0

保存會話唯一ID與時間戳,然後沿續訂ID af這段時間(和/或鏈接被點擊的時間)。 –

+0

我很好奇;這是用於一次性使用嗎?如果是這樣,還有更好的辦法。 –

+0

@ Fred-ii-是的,只有一次 –

回答

0

爲此使用會話。把你的唯一的ID在會話陣列

session_start(); 

$_SESSION['gentok'] = uniqid(); 

if (isset($_GET["action"]) && $_GET["action"] == "clean_" . $_SESSION['gentok']) { 
    // stuff 
} 

在你的顯示器

session_start(); 

<a href="<?= admin_url('themes.php?page=cleaner&action=clean_' . $_SESSION['gentok']) ?>">Clean this and that</a> 
+0

好的,謝謝你的回答。這也會在'foreach'中起作用嗎? –

+0

你能告訴我你的foreach循環是怎麼寫的嗎? –

+0

不是太瘋狂了,只是'foreach($ theme_names as $ theme_name){'而裏面的問題代碼 –

0

當你創建一個會話的每個網頁加載它會檢查你的價值會話時間設定值左右。否則你會重定向......你會把代碼放在最上面。 If($_SESSION['sesname']!=$value]{header location}

你會在頁面的頂部,它執行

OR 如果你想要一個獨特的名字,那麼只要把人想輕易地猜到,不掛靠任何東西檢查這個坑其中