t1.php 
没有
session_start(); 

解决方案 »

  1.   


    加上之后测试,效果一样。
    用不用都一样,并且PHP配置中已经让SESSION自动运行了。
    所以,可以确认跟这个没有关系。
      

  2.   

    你的seesion的 tmp目录配置好没有?
      

  3.   

    配置好了,设定是:C:/php5/temp
    并且每次写入SESSION时,有两个文件产生,其中一个是SESS_127001,内容就是我写入的内容,另一个文件是空的,0k。
      

  4.   

    把所有session都加多个"_x"吧,如$_SESSION['password_x'],试试看。
      

  5.   

    t1.php
    <?PHP
    global $TransIp;
    if ( !empty($_SERVER["HTTP_X_FORWARDED_FOR"]) )
    {
    $tempip = split(",", $_SERVER["HTTP_X_FORWARDED_FOR"]);
    $UserIp = $tempip[0];
    }
    else
    {
    $UserIp = $_SERVER["REMOTE_ADDR"];
    }
    $TransIp =str_replace(".","",$UserIp);
    session_id($TransIp); // 用 session_id() 可避免user的cookie沒開的問題
     
    //echo "写入的SESSION值是:".$_SESSION["address"];
    ?>t2.php<?php
    include_once 't1.php'; // 時隔一年多,已忘了這行有沒有必要加,你可以先不加這行試試看
    session_start();
    $id = "8881"; //strtoupper($_POST['id']);
    $password = "12345611111";//$_POST['password'];
    $_SESSION['userid'] = $id;
    $_SESSION['password'] = $password;// 以下類推隨你加
    echo "session_id is : ".session_id()." <br>";;  //读出来的值是:127001
    echo "写入的SESSION值是: <br>".$_SESSION['userid']." <br>".$_SESSION['password'];  //这里读出来的结果正常。
    ?>t3.php<?PHP
    include_once('t1.php'); 
    session_start();
    echo "session_id is : ".session_id()." <br>";        //读出来的值是127001
    echo "读出的SEESION值是: <br>".$_SESSION['userid']." <br>";  //读出来的是空值;
    echo $_SESSION['password']." <br>";                        //读出来的是空值;
    echo session_id()." <br>结束";
    ?> 
      

  6.   

    就是指定session_id一定要在session_start之前
    session_id( 'xxxx' );
    session_start();
      

  7.   

    不行啊,TX们!不管是:
    session_id( 'xxxx' ); 
    session_start(); 还是session_start(); 
    session_id( 'xxxx' ); 都没用,效果是一样的,另外,这样
    //session_start(); 
    //session_id( 'xxxx' ); 
    即不指定ID和不使用手动启动,都是一样的,还是只能在当前页输出SESSION。还得有劳大家啊。搞了一天多了,没有效果。
      

  8.   

    cookie设置是允许
    第一方、第三方。总之是没有限制。我怀疑是不是系统配置(PHP.ini)还有什么没有设置对。
      

  9.   

    把你的php.ini贴出来大家看看呀
      

  10.   

    呵呵 你对session的理解有误
    只有通过页面间链接的传递session才能保持
    你对t2和t3页面的访问相当于再次访问主机 与第一次的t1访问之间没有任何联系 因此每次访问产生了一个新的session
    解决方案
    t2.php与t3.php开头的位置分别加上:
    session_start(); 
    session_id( 'xxxx' ); p.s.session_start()要写在前面 谢谢~~
      

  11.   

    楼上正解t1.php
    <?PHP    //用IP来作为SESSION_ID
    global $TransIp;
    if ( !empty($_SERVER["HTTP_X_FORWARDED_FOR"]) )//有經過代理主機
    {
    $tempip = split(",", $_SERVER["HTTP_X_FORWARDED_FOR"]);
    $UserIp = $tempip[0];
    }
    else
    {
    $UserIp = $_SERVER["REMOTE_ADDR"];
    }
    $TransIp =str_replace(".","",$UserIp);
    session_id($TransIp); // 用 session_id() 可避免user的cookie沒開的問題
    session_start();//echo "写入的SESSION值是:".$_SESSION["address"];
    ?> t2.php
    <?php
    include_once 't1.php'; // 時隔一年多,已忘了這行有沒有必要加,你可以先不加這行試試看
    $id = "8881"; //strtoupper($_POST['id']);
    $password = "12345611111";//$_POST['password'];
    $_SESSION['userid'] = $id;
    $_SESSION['password'] = $password;// 以下類推隨你加
    echo "session_id is : ".session_id($TransIp)." <br>";;  //读出来的值是:127001
    echo "写入的SESSION值是: <br>".$_SESSION['userid']." <br>".$_SESSION['password'];  //这里读出来的结果正常。
    ?> t3.php
    <?PHP
    include_once('t1.php');
    echo "session_id is : ".session_id($TransIp)." <br>";        //读出来的值是127001
    echo "读出的SEESION值是: <br>".$_SESSION['userid']." <br>";  //读出来的是空值;
    echo $_SESSION['password']." <br>";                        //读出来的是空值;
    echo session_id($TransIp)." <br>结束";
    ?> 
      

  12.   

    问题搞定了,小小恭喜一下。
    看来我的判断是正确的,就是PHP.ini配置的问题,从头配置一次以后就可以了,上面的代码怎么修改都可以实现。谢谢以上热心的TX!!!!
      

  13.   

    是session的path、domain、expires相关的几个设置用了错误的值吧。
      

  14.   

    好像不是这几个值得问题,我第一次是用下载包里面默认的php.ini修改的,结果不能用。
    第二次是用php.ini-dist修改的。就可以了,估计是有我没有注意到的参数吧。