2.直接跳转到s2.php,就不可以
<?php
@session_start();
$_SESSION['var1']="中华人民共和国"; 
?><script >
location.href="s2.php";
</script>  s2.php
<?php
@session_id($_GET['var1']);
@session_start();
echo "传递的session变量var1的值为:".$_SESSION['var1']; 
?>不要@session_id($_GET['var1']);就可以
或者改为@session_id($_SESSION['var1']);
$_GET是得到URL中的东西

解决方案 »

  1.   

    那第一个例子是可以的, 是为什么呢??? 
     照理说 
    $url="<a href="."\"s2.php\">下一页</a>"; 
    echo $url;url中也是没有带参数的?/
      

  2.   

    我试了一个最简单的语句
    <?
    sessen_start();
    ?>用editplus编辑
    1.另存为gb2312编码时页面空白,没有错误提示,正常。
    2.另存为utf-8编码时,提示:Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at F:\php\sinofocus1\sysadm\session.php:1) in F:\php\sinofocus1\sysadm\session.php on line 1----------------------------------------
    真是搞不懂,为什么换个编码就不行了。
      

  3.   

    第二的错误是应为你取错了SESSION,你没有取到你刚才REGISTER的SESSION,
    而第一个没有sesion_id,所以取出来默认的,即你所有REGISTER的解决方法也是同理,要么默认,要么取对SESSIONTo: abcdqq(abcd) 错误原因是session_start前有HTML输出,可能是在之前有<meta>信息,这是不允许的
      

  4.   

    为什么要用那个session_id?
    换了编码不行,是因为编辑器在utf8文件头加了一个BOM特殊字符,去掉就可以。
      

  5.   

    自从一次受挫,我就从来不用session验证,建议用cookie验证和cookie仿session原理验证
      

  6.   

    第二种方法这句出现严重错误session_id($_GET['var1']);URL里的var1参数跟本没有,你用了一个空值来设置一个SessionID。这是关键所在。服务器是跟据SessionID来区分不同的,默认系统会随机生32个字符的字符串做为SessionID,并记录在服务端上。你在第一个文件里没有显式设置SessionId那么就是就是默认的。服务器一对比,认为不是同一个用户,当然无法得到数据了啦。解决办法,去掉session_id()这行