这样再试试看session_start();
$name = "abc";
$counter = $name.$name;
if(!$$counter){
session_register('$$counter');
}

解决方案 »

  1.   

    session_start()应该放在文件首。
      

  2.   

    好象不行,每次刷新页面时,session_start();都执行了
      

  3.   

    session_register('$$counter');而且好象不能这样初始化session
      

  4.   

    再次看了你的问题,你的程序的实际运行状况是这样:
    第一行命令是变量name具有值abc;
    第二步命令使变量counter具有值abcabc;
    第三步判断是否变量abcabc为false或者变量abcabc是否被初始化过;(根据前面的语句,这个判断将恒为真)
    第四步初始化session环境;
    第五部注册session变量,这个变量的名字是变量abcabc的值所以,每次刷新页面都回执行括号中的语句。我不清楚你要实现的目的,但就目前这段代码应该不是你想要的。提供以下几点参考:
    1.  session_start()通常要放在调用session变量之前,当然这根据php.ini的设置并不一定是必须的,但这种写法是绝对规范的。尤其是你想判断一个session变量是否被注册过时,这一句一定要出现在判断语句之前。
    2.  如果想要注册session变量“abcabc”,这样的写法是正确的session_register('abcabc'),注意不是session_register('$abcabc'),后者将注册一个session变量名为变量$abcabc的值的session变量
      

  5.   

    1.判断是否将末个变量或者数组注册为session,建议使用sesssion_is_registered('session_name')来判断。因为用!$session_name的方法判断只是对这个session_name的值进行判断是否为空,而不是判断是否注册了这个变量为session。
    2.如果一个变量事先没有定义,不能注册为session。也就是必须有$session_name="......";之类的或者从post和get方法传过来的变量对于你上面的,可以改为:
    session_start();//session开始,环境设置一般放在开始
    $name = "abc";
    $$counter = $name.$name;//设置要注册为session的变量名称
    $$$counter='aaaa';//要想注册$$counter必须定义他,给他附上初值
    if(!session_is_registered($$counter)){
    session_register($$counter);//注册$$counter
    echo '刚刚注册session<BR>';
    }
    print_r($HTTP_SESSION_VARS);//察看session数组