为URL创建唯一ID

时间:2016-08-05 22:05:37

标签: php loops unique

我正在处理受保护的页面,因此没有人可以使用此链接到该页面:

以下代码在循环内调用。

$gentok = uniqid();

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

然后,我将其调用URL:

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

但是,点击该链接后,页面会刷新,uniqid()已经更改。

如何在页面刷新后使uniqid()仍然相同?我愿意为您提供任何改变或更好的想法。

谢谢!

3 个答案:

答案 0 :(得分:1)

将此作为社区维基发布,因为我无从中获益。

我在使用nonce的评论中提出的建议使OP使用nonce的WordPress版本作为他们的解决方案。

参考:

旁注:说实话,我不知道WordPress有一个并且在互联网上找到了参考链接。

我的原始参考:

补充参考:

答案 1 :(得分: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>

答案 2 :(得分:0)

创建会话时设置一个值,以便每次加载页面时都会检查该值是否为会话。否则你会重定向......你会把代码放在最上面。 If($_SESSION['sesname']!=$value]{header location}

您可以将其放在页面顶部,以便执行检查

如果你想要一个独特的名字,那么只需要放一些人们想要容易猜到的东西,不要把它链接到任何地方