为URL创建唯一ID


Create Unique ID for URL

我正在处理安全的页面,因此没有人可以使用以下链接到该页面:

下面的代码在循环中调用。

$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()在页面刷新后保持不变?我对你可能有的任何改变或更好的想法持开放态度。

谢谢!

将此作为社区wiki发布,因为我从中没有任何收获。

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

参考:

  • https://codex.wordpress.org/WordPress_Nonces

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

我的原始参考:

  • 如何创建和使用随机数

附加参考:

  • Wiki页面:http://en.wikipedia.org/wiki/Cryptographic_nonce

为此使用会话。将您的唯一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>

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

你会把它放在页面的顶部,这样它就会执行检查

如果你想要一个唯一的名字,那么只需放一些人们想要的东西就可以了,不要把它链接到