按我的经验是没有区别的,是不是php.ini把session写入目录写错啦,如/tmp没有空间啦呢?

解决方案 »

  1.   

    就是老出错。
    ....
    你能具体地说说 这个 老出错??到底是什么意思吗?
    可能出错的原因多了,我可以说你的服务器硬件不行,系统有问题,web服务有问题。
    程序写的不严格。配置有问题。可能出现的问题的地方实在是太多了。
    不要总是等到别人问你,你再去描述症状;发贴尽量的描述清楚一些。你这样发贴,很少会有人给你回答的,你说得太笼统了。
      

  2.   

    这是部分文件:在linux+apache+php下reg_logon.php里的echo不能能输出值,但在windowns+IIS+php下可以的,我怀疑在linux+apache+php下session有问题。index.php:<?
    include "config.inc";
      if(isAdmin())
    {
       
                      goPage("manager.php");
    exit;
    }
    ?>
    <html>
    <head>
    <title>电大在线</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <link rel="stylesheet" href="css/css.css" type="text/css">
    </head>
    <body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
    <form method=post action="reg/reg_logon.php">
    <table width="148" border="0" cellspacing="0" cellpadding="5">
    <tr><td>用户名:
    <input type="text" name="username" size="9"></td></tr>
    <tr><td>密&nbsp;&nbsp;码:
    <input type="password" name="password" size="9"></td></tr>
    <tr><td class="text" align="right"><input type="submit" name="Submit22" value="登 录"></td></tr>
    <tr><td class="text" align="center"><a href="#" onclick="window.open(\'/reg/findpass.php\',\'忘记密码\',\'width=200,height=130\');" class=a03>忘记密码</a>
     <a href=/reg/signup.php class=a03>新用户注册</a></td></tr></table>
    </form>
    </body>
    </html>
    reg_logon.php:<?
    include("../include/system_parameter.inc");
    include($ServerIncludePath."odbc.inc");
    include($ServerIncludePath."reg.inc.php");
    include($ServerIncludePath."public_user.inc");
    if(CheckInput($username) and CheckInput($password)){
    $db = new DB();
    if(logon($username, $password, $db)==1)
    {
    if(isStudent())
    {
        $arr = GetCourseIDSelected(getUserID(),$db);
    if(count($arr) > 0)
    $url = "/student_study.php";
    else
    $url = "/student.php";
    }
    else
                              echo “$USER[username]”;
                         
    $url = "/";
    }
    else
    $url = "/";
    }
    else{
    $url = "/";
    }
    ?>
    <script language="javascript">
    location.href="<?=$url?>";
    </script>
    public_user.inc:<?
    session_start();
    session_register ("USER");
    session_register ("RegUserClass");
    session_register ("RegUserName");
    function logon($username, $password, $db)
    {        global $USER,$RegUserName;
            $sql = "select * from user_info_t where username=".sqlStr($username)." and password=".sqlStr($password);
           
            $db->Query($sql);
            if($rs=$db->NextRecord())
            {       $USER[username] = $rs[username];
                    $USER[password] = $rs[password];
                    $USER[email]        = $rs[email];
                    $USER[usertype] = $rs[usertype];
                    $USER[isvaild]        = $rs[isvaild];
                    $USER[studentno] = $rs[studentno];
                    $RegUserName = $rs[username];
                    
                    if(isAdmin() and !isRoot() )// Administrator
                    {
                     $sql = "select rightcode from User_Rights_T where userid = '$USER[username]' and righttype = '4' ";
                     $db->Query($sql);
                     while($rs1 = $db->NextRecord()){
                     $USER[admin][$rs1[rightcode]] = $rs1[rightcode];
                     }               
                    }
                   return 1;
            }
            return 0;
    }function isAdmin()
    {
            global $USER;
            if($USER[usertype]==3 && ($USER[isvaild] == 1))
                    return 1;
            else
                    return 0;
    }?>
      

  3.   

    需要设置session存放目录,不知道你设置没有,
      

  4.   

    session.save_path = /tmp
    如果是在windows则
    session.save_path = d:\tmp
      

  5.   

    通过post提交的表单参数在
    reg_logon.php
    里面可以取到吗?
      

  6.   

    表单参数能在reg_logon.php里取得。
      

  7.   

    logon()这个函数返回前,用
    echo 
    exit
    输出一下
    echo “$USER[username]”;
    看看是否已经设定了
      

  8.   

    建议在注册session之前先要让被注册的变量有值
    例如:
    $myvar="abcdef";
    session_register("myvar");
      

  9.   

    在iis下echo “$USER[username]”; 有值输出,但在apache就是没有。
      

  10.   

    也就是说,如果输入了正确的用户名和密码的话,在logon函数里面
    return 1 
    返回之前
    $USER[username]
    该变量在iis里面是已经被正确的赋值了,但是apache就没有值,是吗?
      

  11.   

    goodname兄:有什么解决方法吗?
      

  12.   

    你的程序太长了,做个测试文件看一下,是否可以成功。
    多余的代码都砍掉,例如:public_user.inc
    <?
    session_start();
    session_register ("USER");
    function logon()
    {               global $USER
                    $USER[username] =  "username";
                    $USER[password] =  "password";
                    $USER[email]    =  "email";
                    $USER[usertype] =  "usertype"
                    $USER[isvaild]  =  "isvaild";
                    $USER[studentno]=  "studentno";
    }
    reg_logon.php:
    <?
    include("public_user.inc");
    logon();
    echo $USER[username];
    ?>
    这样看看是否可以显示
    另外:
    我看到你给的源文件之中
    reg_logon.php中的
    echo “$USER[username]”;似乎这个双引号,是全角的??????
      

  13.   

    更正,楼上贴
    global $USER掉了分号了
      

  14.   

    上面的测试程序分别在apache,和iis下,都运行一下。
      

  15.   

    我和你遇见了几乎同样的问题!
    但是,我的session可以写了。
    奇怪的是:从form里提交给login.php, 老实打不开,地址栏里已经是login.php了呀。再刷新一下,就可以打开login.php.
    直接访问login.php不跟参数,就很快打开了~奇怪了~
    我把一个htm文件直接改扩展名为php,都不行~session你可以这样试:
    在当前目录建目录:tmp
    注意session_save_path,是“./tmp”,好像“tmp”不行
    <?session_save_path("./tmp");
    session_start();
    if(session_register("passed") == true ) {$passed="ok";echo "注册成功!!";}
    else echo "服务器session注册失败!!";?>
    运行后,
    然后看看tmp里面有东西没有,看看大小。
      

  16.   

    1、linux下,文件查找的方式和win不同的。当前目录最好用./
    2、另外就是文件名是大小写区别的session搞的我快崩溃了~
      

  17.   

    对于*nix下的路径确实有./一说,
    *nix对文件名及其路径都很严格的区分不过,/tmp
    开头的,是表示跟目录开头的那个tmp目录,应该是可以的。
      

  18.   

    php.ini
    [Session]
    session.save_path = /tmp
    改成
    session.save_path =c:\temp在c盘下建个文件名叫temp
    就可以了!!
      

  19.   

    呵呵,我想配置LINUX系统的,应该配置tmp可读写吧?
      

  20.   

    goodnames: 上面的简化程序运行正常,但原来的程序还是有问题
    function logon($username, $password, $db)
    {        global $USER,$RegUserName;
            $sql = "select * from user_info_t where username=".sqlStr($username)." and password=".sqlStr($password);
           
            $db->Query($sql);
            if($rs=$db->NextRecord())
            {       $USER[username] = $rs[username];
                    $USER[password] = $rs[password];
                    $USER[email]        = $rs[email];
                    $USER[usertype] = $rs[usertype];
                    $USER[isvaild]        = $rs[isvaild];
                    $USER[studentno] = $rs[studentno];
                    $RegUserName = $rs[username];         echo $rs[username];
             echo $USER[username];
              }
         }echo $rs[username];  有值输出
    echo $USER[username];输出的是空值
      

  21.   

    我的问题已经解决了~答案各位一定想不到!
    在我的客户端和服务器之间竟然有基于http的过滤!!!
    我用的可是电信的虚拟主机服务器啊~黑暗啊~
    过滤的关键词是:passwd 
    我提交的变量里: 密码项 name=passwd
    所以就不行了~改成:name="mypass" 就一切OK!
     
    <form action="./login.php" method=POST>
    用户名: <input type=text size=15 maxlength=50 name="name">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    密码: <input type=password size=15 maxlength=50 name="mypass">   
    <input type=submit value="登 录" name=send>   
    <input type=reset value="重 填">   
    </form>看来是对提交的信息过滤了!!够狠的啊~
    甚至我这样试:login.htm?passwd=qqq 连login.htm都打不开了~,呵呵~~~~~~~
    看来大家以后要小心了~另:也许服务器被装了后门,监视着?嘿嘿~~~~~~~不知道了~
    可是有的人的机器就可以提交 ?passwd=qqq这样的东西。是不是说明我的网段被监视?
      

  22.   

    我的问题已经解决了~答案各位一定想不到!
    在我的客户端和服务器之间竟然有基于http的过滤!!!
    我用的可是电信的虚拟主机服务器啊~黑暗啊~
    过滤的关键词是:passwd 
    我提交的变量里: 密码项 name=passwd
    所以就不行了~改成:name="mypass" 就一切OK!
     
    <form action="./login.php" method=POST>
    用户名: <input type=text size=15 maxlength=50 name="name">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    密码: <input type=password size=15 maxlength=50 name="mypass">   
    <input type=submit value="登 录" name=send>   
    <input type=reset value="重 填">   
    </form>看来是对提交的信息过滤了!!够狠的啊~
    甚至我这样试:login.htm?passwd=qqq 连login.htm都打不开了~,呵呵~~~~~~~
    看来大家以后要小心了~另:也许服务器被装了后门,监视着?嘿嘿~~~~~~~不知道了~
    可是有的人的机器就可以提交 ?passwd=qqq这样的东西。是不是说明我的网段被监视?
      

  23.   

    echo $USER[username];
    的后面是个全角的分号吗?
      

  24.   

    goodnames:
      问题解决了,session_register ("USER");换成session_register ("XXXXXXXX");就可以了,用USER就是有问题,真是想不通。
      

  25.   

    不明白,既然测试程序使用USER可以通过,为啥你的程序就不可以,莫名其妙。