请告诉我,如何在此设置中(在CodeIgniter中)只运行一次PHP函数:
点击页面上的链接后,会转到href="http://foo.com/func/id/"
。 id
段基于func
网址段运行一个功能,该功能决定点击链接的用户重定向的位置。
我想要实现的目标是:
function func($id)
{
if ("first time link($id) is clicked by unique user") {
// Redirect based on $id
} else {
// Redirect to homepage
} }
基本上,第一次点击后每次点击同一链接都会触发else
案例。
如果需要,链接可以包含任何ID或类。
我希望此代码至少在当前页面关闭之前保持对点击链接的真实性,但可能会将其延长到浏览器会话,甚至可能基于计时器 - 如果可能的话 - 也许是PHP会话..?
答案 0 :(得分:0)
你想要的是保持状态(仍然,HTTP是无状态的)。
您必须保留标记服务器端,如数据库记录,文件甚至内存中的信号量。
我不明白所需的行为是“交叉”还是单个用户。
答案 1 :(得分:0)
也许,
function func($id)
{
if (@$_SESSION['linkClicked']) {
// Redirect to homepage
} else {
$_SESSION['linkClicked'] = true;
// Redirect based on $id
}
}
答案 2 :(得分:0)
PHP为您提供了2个临时存储空间:
$_COOKIE
$_SESSION
根据您存储的数据量,这些数据对您有用/无用。如果您要存储的数据太大(例如,200个链接引用),那么最好将它们存储在文件中并通过用户会话ID或SQL表链接它们。
PHP本身无法告诉谁在点击什么是服务器端编程。所以请考虑一下:
function func($Link_id){
if (in_array($Link_id, $_SESSION['my_links'])){
$_SESSION['my_links'][]=$Link_id;
// Redirect to homepage
} else {
// Redirect based on $id
}
}