如何在第一次触发后才能运行PHP函数?

时间:2014-10-01 08:07:29

标签: php codeigniter session

请告诉我,如何在此设置中(在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会话..?

3 个答案:

答案 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
  }

}