老实说,用了session这么久好像没碰到这些的问题,汗~

解决方案 »

  1.   

    有人测试一下,我给的代码段吗?
    testsession.php
    <?php  
    session_start();
    $name = "dw";
    session_register("name");
    ?>
    <center><a href="testsession2.php">goto</a></center>testsession2.php
    <?php 
      session_start();
      echo "value is:".$_SESSION['name'];
      echo "<br>Is reg?".session_is_registered('name');
    ?>
      

  2.   

    感觉还是跟目录的权限有关
    使用的ntfs分区吗?请楼主说明一下。可以创建文件,但是无法写入内容???
      

  3.   

    c:/php/temp or c:\php\tempc:\php\temp 要everyone 可写(0777)
      

  4.   

    反正我使用session_register("name");可以
    但是使用session_register($name);
    得不到正确的结果。使用session_register($name);是可以设置session的,但是恐怕名字不对,所以无法显示
    正确的内容
    第2页中使用session_is_registered('dw');,是显示1的。
      

  5.   

    If you are using $_SESSION (or $HTTP_SESSION_VARS), do not use session_register(), session_is_registered(), and session_unregister(). 
    引自php手册,希望对你们有帮助。
      

  6.   

    设置session变量的页面要这样写。
    其中的变量名称要用单引号引起来
    session_start();要在每页的开头写。
    <?
    session_start();
    session_register('username'); 
    $username = "zz";
    ?>引用session变量的页要这样写。
    <?
    session_start();
    echo $username;
    ?>
      

  7.   

    如果你的session变量名用双引号的话就出错。
    一定要用单引号。
      

  8.   

    哈哈
    我是在win2000下的程序,会出好多怪问题呢。
    比如,有时程序好好的,就是通不过。
    把机器重启,就通过了。
    唉。。
      

  9.   

    1、楼主一直没有有说明所用的php的版本号是多少,其实这是问题的关键所在
    2、从楼主的几次发贴来看,不是没有session临时目录或目录权限问题我们一般见到的比较权威的php书籍是以php4.0.6或更早的版本为基础的。但这两年php发生了重大变化。为了满足高层次的目标,php做了较大的改动,其中最为突出的是session的存储机制的改变。
    从php4.1.0开始到目前的php4.3.2,每一个小版本都有对session处理上的变化。
    对此,我建议:在讨论此类问题时,首先要说明所用php的版本。只有这样才有再现的可能。很快,php5就要正式出来了。可能会带来更多的问题,其实都是不是问题的问题。只要你不要抱做一本书不放。经验是宝贵的,但不是万能的。
      

  10.   

    使用session_register($name);是可以设置session的,但是恐怕名字不对,所以无法显示
    正确的内容这样是不行的, 呵呵.再度推荐我的写法:
    session_start()后, 注册变量用$_SESSION['变量名'] = 值用单引号的好处是防止其中的变量名有被解析掉的可能(比如和常量同名的时候)
      

  11.   

    我写了2个测试php程序:
    a.php:        
    <?
    ob_start();
    session_start();
    session_register('cc');
    $cc=10;
    echo "<a href=bbb.php>bbb</a>";
    ?>b.php:
    <?
    session_start();
    $cc++;
    echo "cc ".$cc;
    ?>
    当我按历史后退回到a.php时,再点击aaa,结果,再url上看到的PHPSESSID于之前的不一样了,是不是证明了session没有效了,然后再重新注册一个?那如果我想保持唯一的PHPSESSID,比如用来标识某一次唯一的用户,那怎么办?真的搞的一塌胡涂。然后我在b.php的echo "cc ".$cc;后面加上echo "<a href=aaa.php>aaa</a>"; 连接到aaa.php,然后再点击bbb,可以看到这时候url上的PHPSESSID就保持了跟上一次一样的值。所以,我一直搞不清楚session到低是怎样用的。
    请各位赐教
      

  12.   

    我有类似的代码:
    a.php:
    <?
    session_start();
    session_register("Name");
    $Name='jeff';
    //Header("location:test22.php");    //原来是这样写的,后来发现不行,我就改成下一行,
    //可以了
    echo "<a href=test22.php>kkk</a>";?>b.php
    <?
    session_start();
    echo $Name."**********";
    ?>
    结果,在b.php能正常显示:jeff********** ,但是我不知道为什么用
    Header("location:test22.php");   就不能显示jeff.还有
    当我按历史后退回到a.php时,再点击aaa,结果,再url上看到的PHPSESSID于之前的不一样了,是不是证明了session没有效了,然后再重新注册一个?那如果我想保持唯一的PHPSESSID,比如用来标识某一次唯一的用户,那怎么办?真的搞的一塌胡涂。然后我在b.php的echo "cc ".$cc;后面加上echo "<a href=aaa.php>aaa</a>"; 连接到aaa.php,然后再点击bbb,可以看到这时候url上的PHPSESSID就保持了跟上一次一样的值。所以,我一直搞不清楚session到低是怎样用的。
    请各位赐教
      

  13.   

    还有如下程序,我是用来测试一个session注册了一个变量后,就在当前的浏览器有没有记录该变量是否被注册了。
    aaa.php
    <?
    ob_start();
    session_start();
    if(session_is_registered('cc'))
        echo "y";
    else
      echo "not";session_register('cc');
    if(session_is_registered('cc'))
        echo "y";
    else
      echo "not";
    $cc=10;
    echo "r:".$r;
    echo "<a href=aaa.php>kkk</a>";
    ?>首先输入aaa.php
    显示:notyr:kkk 
    然后点击kkk,url显示:aaa.php?PHPSESSID=f9b30b6c9ec29d10a0dab15ba7ac5aba
    显示:yyr:kkk 
    然后再历史后退到aaa.php
    显示:notyr:kkk
    无论怎么刷新,也是显示 notyr:kkk
    证明虽然cc已经session注册了,但是在当前浏览器中,后退了就cc还是没有被注册。
    session不是贯穿直到关闭浏览器吗?为什么连后退一下就显示没有注册了?真是莫名其妙。
      

  14.   

    两个变量要存放在session,然后传给下一页要怎么做,请高手解答?
      

  15.   

    这个session真的就这么麻烦吗?
    我也是同样的错误啊,我的好像也是设置方面的,但我看过这里好多关于session的帖子,发现大家的问题都八九不离十,可没有一个解决掉的。同样的我的/tmp目录在C盘根目录下。
    还有一点,我在修改php.ini中的内容的时候,保存后,phpinfo()中的内容怎么不会跟着刷新呢?非要重起一次,真是晕。
    看来我们还没有找到问题的根源,看看我的的错误提示:
    Warning: session_start(): open(/tmp\sess_ad7bca0da5e4495dbfac7170508dc091, O_RDWR) failed: No such file or directory (2) in F:\fangdi\temp\test2.php on line 2Warning: session_start(): Cannot send session cookie - headers already sent by (output started at F:\fangdi\temp\test2.php:2) in F:\fangdi\temp\test2.php on line 2Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at F:\fangdi\temp\test2.php:2) in F:\fangdi\temp\test2.php on line 2
    Failed.源文件如下:
    ==test2.php==
    <?
    session_start();
    $name = "hello";
    session_register('name');print $_SESSION['name'];
    ?>
    <center><a href="test1.php">goto</a></center>==test1.php==
    <?
    session_start();
    print $_SESSION['name']; 
    ?>session设置如下:Session Support  enabled  
    Registered save handlers  files user  Directive Local Value Master Value 
    session.auto_start Off Off 
    session.bug_compat_42 On On 
    session.bug_compat_warn On On 
    session.cache_expire 180 180 
    session.cache_limiter nocache nocache 
    session.cookie_domain localhost localhost 
    session.cookie_lifetime 0 0 
    session.cookie_path / / 
    session.cookie_secure Off Off 
    session.entropy_file no value no value 
    session.entropy_length 0 0 
    session.gc_divisor 100 100 
    session.gc_maxlifetime 1440 1440 
    session.gc_probability 1 1 
    session.name PHPSESSID PHPSESSID 
    session.referer_check no value no value 
    session.save_handler files files 
    session.save_path /tmp /tmp 
    session.serialize_handler php php 
    session.use_cookies On On 
    session.use_only_cookies Off Off 
    session.use_trans_sid Off Off 
      

  16.   

    还是不行
    Warning: Unknown(): Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0
      

  17.   

    kingerq(多菜鸟) 
    我觉得在windows下面不能用/tmp这样的目录写法,linux下面才这样显示目录,我就用的d:\server\apache\htdocs\tmp这样的写法。session很正常
    看你的提示信息也是说目录错误,没有这样的目录(\tmp),
    在php.ini中有一个关于session_save_path的说明Note: Windows users have to change this ; variable in order to use PHP's session functions.
      

  18.   

    修改完php.ini必须重启apache服务才能修改生效
      

  19.   

    楼主的两个贴子中,关于注册session的方法都是错的
    要把$name这样的变量注册到seesion中,要session_register['name'],而不是session_register[$name]如果$name=abc这样的写法相当于是session_register['abc']解决了写法问题再看session设置目录的问题
      

  20.   

    to cao_zp(方世玉)
    那为什么我c般下的tmp目录里会有东西产生呢?我每刷新一次都会有一个关于session文件出来,打开一看里面的内容和注册的内容是相符的。
      

  21.   

    偶昨天写一程序,为了方便在网站上发布,程序中加了保存session的路径:
    <?
    ....
    session_save_path("./session_temp");
    ....
    ?>
    php中默认的session.save_path="F:/temp";结果发现在运行该程序时,session信息被写入F:/temp中,而在session_temp中也有一个同名文件,但内容是空的,请教这是怎么回事???