没关系的,只是我要在另一文件得到 $_SESSION['userName'] 的值。

解决方案 »

  1.   

    复人: ray929(海豚) ( ) 信誉:100  2005-05-19 12:37:00  得分: 0  
     
     
       两个文件必须处于同一个浏览器进程中  
     
      

  2.   

    两个文件必须处于同一个浏览器进程中呀。但一登录后,session的值就为空了。
      

  3.   

    test1.phpsession_start();
    $_SESSION['one']='test';
    echo $_SESSION['one'];  得到值为 'test'
    test2.phpsession_start();
    echo $_SESSION['one'];  但是这个文件得到的值就为空了!查看了C:/temp里的值也为空。我的php.ini 文件的  session.save_path = c:/TEMP  是这样设置的。
    请问到底是什么问题啊?
      

  4.   

    两个文件必须处于同一个浏览器进程中我的意思是必须在同一个浏览器窗口中依次浏览这两个文件但是看样子楼主好像不存在这个问题楼主说一下你的各个配置吧
    比如系统,php运行模式等等
      

  5.   

    php版本是4.3 ,php+win2000server+mysql+IIS..
      

  6.   

    把这两个文件关于session的地方代码都贴出来看看吧?
      

  7.   

    文件1(即登录文件):<?php
    require('conn.php');
    ?>
    <?php
    $userName=$_POST['userName'];
    $userPwd=$_POST['userPwd'];
    $result = mysql_query("SELECT * FROM quanxian WHERE zh='$userName'",$db);
    $rows=mysql_fetch_array($result);
    if($rows==0){
    ?>
    <script language="javascript">
      window.alert("您的会员帐号没有相应记录,请重新登录!");
      window.location.href="login.php";
    </script>
    <?
    }else
    {
    if ($userPwd==$rows["pass"]){

     session_start();
     $_SESSION['userName']=$userName;
     $_SESSION['userPwd']=$userPwd;
     #echo $_SESSION['userName'];
     
     mysql_close($db);
     header("Location:index.php");
    }else
    {echo"<Script language='javascript'>window.alert('您的密码有错,请重新输入!');window.location.href='login.php';</Script>";}
    }
    ?>文件2:(登录后跳到文件一个框架文件,包含文件2)但session值为空.<?php
    session_start();
    echo $_SESSION['userName'];
    $zh=$_SESSION['userName'];
    require('conn.php');
    ?>
    <?
    $result = mysql_query("SELECT * FROM quanxian WHERE zh='$zh'",$db);
    echo "SELECT * FROM quanxian WHERE zh='$zh'";
    $rows=mysql_fetch_array($result);
    if($rows==0){
    ?>
    <script language="javascript">
      window.alert("对不起,您登录已超时,请重新登录!");
      window.parent.location.href="login.php";
    </script>
    <?
    }else{
    }
    ?>
      

  8.   

    如果是同一个进程,你文件2的 session_start();又何必写呢?
      

  9.   

    就算把文件2 的session_start()去掉也不行呀。
      

  10.   

    看不懂,把session_start();放在文件开头试试!前面不能有空格什么的!
      

  11.   

    在文件最开头加上
    <?ob_start();?>
    试试或是把
    <?session_start();?>
    放在最前面试试前面不能有任何输出的
    我以前有次用IIS搭配php,没有任何出错信息
    所以建议楼主把代码放到apache平台下再试试
      

  12.   

    Don't know what's wrong. But mine works fine. (Win2kPro, Apache, PHP)---------------------
    //login.php
    <?php
    if ($_POST['username']) {
    $username = $_POST['username'];
    session_start();
    $_SESSION['username'] = $username;
    header("Location:frame.htm");
    } else { ?>
    <html><head><title>login form</title></head>
    <body>
    <form method="post">
    <input type="text" name="username" value="">
    <input type="submit" name="submit1" value="Login">
    </form>
    </body></html>
    <?php } ?>
    -------------------//frame.htm
    <html><frameset rows="40,*" frameborder="NO" border="0" framespacing="0">
        <frame src="menu.htm" name="topFrame" scrolling="NO" noresize>
        <frame src="after.php" name="mainFrame">
    </frameset></html>
    ------------------------//menu.htm
    <html><body>
    <table><tr>
    <td>Item 1</td>
    <td>Item 2</td>
    </tr></table>
    </body></html>
    -----------------------//after.php
    <?php
    session_start();
    echo "this is after.php<br>";
    echo $_SESSION['username'];
    ?>------------------------
    //Output
    Item 1 Item 2 Item 3 Item 4 
    this is after.php
    ffffasdf
      

  13.   

    session_register('username');
    向服务器段注册,否则只能是当页的变量而已。
      

  14.   

    服务器注册
    //检查是否注册 注册过释放if(session_is_registered('username'))
    session_unregister('username');
    //重新注册
    session_register('username');建议查看PHP手册session部分。附登陆文件,希望对你有所帮助:
    //logon.php
    <?
    session_start();
    require('../inc/conn.php');
    require('../inc/bin.php');
    if (!$username or !$password){
    aMsg('请填写用户名和密码 !');
    }
    $DbSql = 'SELECT * FROM admin WHERE password="'.$password.'" AND username="'.$username.'"';
    $result=mysql_query($DbSql);
    if (@mysql_numrows($result)==1){
    $AID=@mysql_result($result,0,"aid");
    $ADMINNAME=@mysql_result($result,0,"username");
    $ADMINSESSION = md5($UID.time());

    //释放已经注册的session
    if(session_is_registered('AGENTID'))session_unregister('AGENTID');
    if(session_is_registered('AGENT_NAME'))session_unregister('AGENT_NAME');
    if(session_is_registered('AGENTNAME'))session_unregister('AGENTNAME');
    if(session_is_registered('AID'))session_unregister('AID');
    if(session_is_registered('ADMINNAME'))session_unregister('ADMINNAME');
    if(session_is_registered('ADMINSESSION'))session_unregister('ADMINSESSION');

    //重新注册
    session_register('AID');
    session_register('ADMINNAME');
    session_register('ADMINSESSION');

    //记录session
    $DbSql = 'UPDATE admin SET session="'.$ADMINSESSION.'" WHERE aid='.$AID;
    mysql_query($DbSql);

    //转向
    header("location: admin.php");
    }
    else{
    aMsg('用户名或者密码错误 !');
    }
    ?>
      

  15.   

    把session_start();放在程序任何输出之前,
    或者像ray929(海豚)讲的用 Output Buffer(输出缓冲) ob_ 系列函数在session_start()时,服务器会发一个cookie叫session_id,在session.save_path建session文件
    你看看这个文件有没有,
    session.save_path可以通过session_save_path()在程序里设的,应该不会有问题的
      

  16.   

    session.save_path=\temp  
    temp 文件里是有的!
    但session值就是为空。