2016-08-05 89 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 如果你想要一个独特的名字,那么只要把人想轻易地猜到,不挂靠任何东西检查这个坑其中