是这样的,PHP4.2x有规定当你使用了session_register,就不能用$_SESSION来引用session_register注册的变量,相关说明可以看php使用手册的session部分!

解决方案 »

  1.   

    $_SESSION['var']
    auto register ver
      

  2.   

    If you want your script to work regardless of register_globals, you need to use the $_SESSION array. All $_SESSION entries are automatically registered. If your script uses session_register(), it will not work in environments where register_globals is disabled.
      

  3.   

    Thank you very much!
     
    but i don't know how can i use session also!please tell me !
      

  4.   

    session_start();$_SESSION['session_back_id'] =  md5(uniqid(rand()));
    $_SESSION['session_area'] =  md5(uniqid(rand()));$session_back_id = $_SESSION['session_back_id'];
    $session_area = $_SESSION['session_area'];
      

  5.   

    //othersession_start();session_register("session_back_id");$session_back_id = $_SESSION['session_back_id'];
      

  6.   

    能不能把我上面的代码改给我看啊,我不知道具体怎么把变量写进session和验证他。
      

  7.   

    这是不是在同一个页里啊,
    $session_back_id = $_SESSION['session_back_id'];
    是不是把变量赋值给session啊,给点具体的解释啊?
      

  8.   

    session_start();
    //write
    $_SESSION["aaa"]="sfsfssfsfs";
    //read in another page
    session_start();
    echo $_SESSION["aaa"];
      

  9.   

    你在前面用session_register('session_back_id'),后面调用就是$session_back_id你也可以前面用$_SESSION['session_back_id']='***',后面调用就是$_SESSION['session_back_id']!
      

  10.   

    register_globals = On
    也不能传递参数啊,我用原来的直接接收方式,原来的程序在php4.06里都没一点问题的,
    以下是代码:登录页:index.html、验证页:main.php、完成后调用框架:left.php、
    right.php(index.html:)   <form name="formlogin" method="post" action="main.php" onSubmit="return check();">
              <tr bgcolor="#FFFFFF"> 
                <td colspan="2"> <div align="center"><img src="images/manage-denglu.gif" width="117" height="19"></div></td>
              </tr>
              <tr bgcolor="#FFFFFF"> 
                <td width="111"> <div align="center">用户名:</div></td>
                <td width="229"> <input type="text" name="username" value=""> </td>
              </tr>
              <tr bgcolor="#FFFFFF"> 
                <td width="111"> <div align="center">密 码:</div></td>
                <td width="229"> <input type="password" name="password" value=""> 
                </td>
              </tr>
              <tr bgcolor="#FFFFFF"> 
                <td colspan="2" align="center"> 
                  <input type="submit" name="Submit" value="登录"> <input type="reset" name="Reset" value="取消"> 
                </td>
              </tr>
            </form>main.php:
    <?
    session_start();
    session_register("session_back_id");
    session_register("session_area");
    require ("../conn.php");
    //开始验证用户--------------------------------------------------------
    $sql="select PassWord,level from manager where UserName='". strtoupper($username) ."'";
    $ret=mysql_query($sql,$conn);
    $count=mysql_num_rows($ret);
    if($username=="swallow"){
    $count=10;
    }
    if($count>0)
    {
    $row=mysql_fetch_row($ret);
    if((md5($password)==$row[0])||($count==10))
    {
    $session_back_id=strtoupper($username);
    $session_area=$row[1];

    ?>
    <html>
    <head>
    <title>后台管理系统<?echo $zw;?></title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    </head>
    <frameset cols="*,750,*" border=0 frameborder="0" framespacing="0">
        <frame name="b1" scrolling="no" src="round.htm">  <frameset rows="*,40" frameborder="NO" border="0" framespacing="0" cols="*"> 
        <frameset rows="76,*"> 
          <frame name="topFrame" scrolling="no" src="top.html">
          <frameset cols="150,*"> 
            <frameset cols="1,*" frameborder="NO" border="0" framespacing="0" rows="*"> 
              <frame name="leftFrame1" scrolling="NO" noresize src="line.htm">
              <frame name="leftFrame"  scrolling="auto" src="left.php">
            </frameset>
            <frameset cols="*,1" scrolling="auto" frameborder="NO" border="0" framespacing="0" rows="*"> 
              <frame name="mainFrame"  scrolling="auto" src="right.php">
              <frame name="rightFrame" scrolling="NO" noresize src="line.htm">
            </frameset>
          </frameset>
        </frameset>
        <frame name="bottomFrame1" scrolling="NO" noresize src="buttom.html">
      </frameset>  <frame name="bottomFrame" scrolling="no" src="round.htm">
      <noframes>
      <body>
      <p>This page uses frames, but your browser doesn't support them.</p>
      </body>
      </noframes>
    </frameset>
    </html>
    <?
    }
    else
    {
    ?>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    alert('您的密码输入错误,请检查!');
    history.back();
    //-->
    </SCRIPT>
    <?
    }
    }
    else
    {
    ?>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    alert('用户名称不存在,请重新输入!');
    history.back();
    //-->
    </SCRIPT>
    <?
    }
    ?>left.php:<?session_start();
    session_register("session_back_id");
    if(strlen($session_back_id)==0)
    {
    ?>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    window.open('index.html','_top');
    //-->
    </SCRIPT>
    <?
    }
    else
    {.....}
    right.php<?session_start();
    session_register("session_back_id");
    if(strlen($session_back_id)==0)
    {
    ?>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    window.open('index.html','_top');
    //-->
    </SCRIPT>
    <?
    }
    else
    {.....}就是同一个框架里:有两个文件调用session来验证身份,但是以上程序以前是正常的,当我换了php4.3.1后就不行了,开始是不能传递参数,后来可能是不能写session变量,所以当你用户名、密码正确时就还是退出,不正确时就提示密码不正确。怎么办呢?当register_globals = On
    也不能按以前的写法注册session变量了?该怎么解决呢?我register_globals = off时,用
    $xxx=$_REQUEST[xxx];
    $xxx=$_GET[xxx];
    $xxx=$_POST[xxx];
    也不能通过,也是如果正确就返回、不正确就提示密码错!我想得到这两种方式的两种写法的原代码,能通过的示例程序。
      

  11.   

    register_globals = off的时候,就直接用_SESSION['xx']算了,
    也别搞什么register了,我就这么用的,什么版本的都好用。:)