我正在处理受保护的页面,因此没有人可以使用此链接到该页面:
以下代码在循环内调用。
$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()
仍然相同?我愿意为您提供任何改变或更好的想法。
谢谢!
答案 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}
您可以将其放在页面顶部,以便执行检查
或强> 如果你想要一个独特的名字,那么只需要放一些人们想要容易猜到的东西,不要把它链接到任何地方