如何在PHP中每个用户会话运行一次代码?

时间:2011-12-07 19:30:41

标签: php session runonce

好的,我四处搜寻,发现应该怎么做。例如,找到this question。然而,这对我不起作用,所以我一定做错了什么,但是如果我知道什么的话,我会大胆的。

好的......这是我的小代码块:

<?php
    session_start();

    if(!isset($_SESSION['didit'])) {
        $url = "http://www.mysite.com/clients/vatera.asmx/DoSomething";
        file_get_contents($url);
        $_SESSION['didit'] = true; 
    }
?>

网址 file_get_contents完美无瑕。唯一不起作用的是&#34;运行一次&#34;校验。它每次都在页面中运行 url 代码。它应该只在您第一次在会话中点击页面时运行它。此块位于我页面中的<html>标记后面。

我尝试过的其他一些事情:

if(empty($_SESSION['didit']))
if($_SESSION['didit'] != true)
if($_SESSION['didit'] <> true)

我也尝试将设置变量的行移到 $ url 分配之前。

这些都没有奏效。它会在页面加载时继续运行代码。 提前谢谢!

2 个答案:

答案 0 :(得分:2)

当您说“关注 <html>标记”时,您的意思是之前,对吗?是session_start()必须先出现输出

答案 1 :(得分:1)

你如何测试你的代码?它只适用于真正的浏览器。因此,如果您使用wgetcurl进行测试,您的条件代码将始终以b / c wget&amp; curl默认不保留会话cookie。

另外请确保您不在浏览器中阻止Cookie。