在哪里Session_start()?
在$conn->setSession();的时候已经有Session_start()过了。
也试过在Test1.php页面里加上Session_start(),但仍无效。

解决方案 »

  1.   

    config.php
      里面有输出没?
    header前面不能包含任何输出的内容
      

  2.   

    config.php<?php
    include "Login.php";
    $server="localhost";
    $dbport="3306";
    $username="root";
    $password="123456";
    $database="dbname";
    //$conn=mysql_connect($server,$username,$password) or die($couldNotConnectMysql);
    //mysql_select_db($database,$conn) or die($couldNotOpenDatabase);
    $conn=new Login($server,$dbport,$username,$password,$database);
    $conn->error_report=true;
    $conn->cookietime=3600*24*30;
    ?>
    这个是Config.php的内容
      

  3.   

    再附一个“login.php”的代码login.php
    <?
    /*
    * 名称:CnkknD PHP Login Class
    * 描述:PHP用于登录的类,基于MySQL
    * 作者:Daniel King,[email protected]
    * 日期:2003/8/25
    */class Login
    {
    var $username; //用户名
    var $password; //密码
    var $uid; //用户id
    var $groupid; //用户级别var $authtable="members"; //验证用数据表var $usecookie=true; //使用cookie保存sessionid
    var $cookiepath='/'; //cookie路径
    var $cookietime=108000; //cookie有效时间var $err_mysql="mysql error"; //mysql出错提示
    var $err_username="username invalid"; //用户名无效提示
    var $err_user="user invalid"; //用户无效提示(被封禁)
    var $err_password="password error"; //密码错误提示var $err; //出错提示
    var $errorreport=false; //显示错误function Login($dbserv,$dbport,$dbuser,$dbpass,$dbname) //构造函数,连接数据库
    {
    if(@mysql_pconnect($dbserv.":".$dbport,$dbuser,$dbpass))
    {
    mysql_select_db($dbname);
    }
    else
    {
    $this->errReport($this->err_mysql);
    $this->err=$this->err_mysql;
    }
    }function isLoggedin() //判断是否登录
    {
    if(isset($_COOKIE['sid'])) //如果cookie中保存有sid
    {
    session_id($_COOKIE['sid']);
    session_start();
    $this->username=$_SESSION['username'];
    $this->uid=$_SESSION['uid'];
    $this->groupid=$_SESSION['groupid'];
    return true;
    }
    else //如果cookie中未保存sid,则直接检查session
    {
    session_start();
    if(isset($_SESSION['username']))
    return true;
    }
    return false;
    }function userAuth($username,$password) //用户认证
    {
    $this->username=$username;
    $this->password=$password;
    $query="select * from `".$this->authtable."` where `username`='$username';";
    $result=mysql_query($query);
    if(mysql_num_rows($result)!=0) //找到此用户
    {
    $row=mysql_fetch_array($result);
    if($row['publicmail']==1) //此用户被封禁
    {
    $this->errReport($this->err_user);
    $this->err=$this->err_user;
    return false;
    }
    elseif(md5($password)==$row['password']) //密码匹配
    {
    $this->uid=$row['uid'];
    $this->groupid=$row['groupid'];
    return true;
    }
    else //密码不匹配
    {
    $this->errReport($this->err_password);
    $this->err=$this->err_password;
    return false;
    }
    }
    else //没有找到此用户
    {
    $this->errReport($this->err_username);
    $this->err=$this->err_username;
    return false;
    }
    }function setSession() //置session
    {
    $sid=uniqid('sid'); //生成sid
    session_id($sid);
    session_start();
    $_SESSION['username']=$this->username; //给session变量赋值
    $_SESSION['uid']=$this->uid; //..
    $_SESSION['groupid']=$this->groupid; //..
    if($this->use_cookie) //如果使用cookie保存sid
    {
    if(!setcookie('sid',$sid,time()+$this->cookietime,$this->cookiepath))
    $this->errReport("set cookie failed");
    }
    else
    setcookie('sid','',time()-3600); //清除cookie中的sid
    }function userLogout() //用户注销
    {
    session_start();
    unset($_SESSION['username']); //清除session中的username
    if(setcookie('sid','',time()-3600))
    //清除cookie中的sid
    return true;
    else 
    return false;
    }function errReport($str) //报错
    {
    if($this->error_report)
    echo "ERROR: $str";
    }
    }
    ?> 
      

  4.   

    晕了,用Opera浏览器查看就没问题用IE8和FOX查看就不行~~~
      

  5.   

    uniqid 是不断在改变的,你怎么能用它做sid呢?
    除非它只被调用了一次.test1.php 也需要session_start()的.
    Php并不能在这样的情况下保持跨页面的会话,所以 不能在A页面start了,在B页面就不用start了.
      

  6.   

    我在单一入口文件index.php中,统一设置了star后,就没问题了~
      

  7.   

    在公共文件中写入session.start()..
      

  8.   

    session丢失的问题吧,在session_start();前加上session_id(SID);详细看我的blog吧http://www.5dhome.net/myblog/read.php?154
      

  9.   

    小爱同学,session会自己生成id
    不需要你
        $sid=uniqid('sid'); //生成sid
        session_id($sid);