session_is_registered($username) 你用的是$username,这是个变量名,其值位知,多半为空你可以这样改改
function login($user,$pass)
中 $username = $arr1[user];
  $password = $arr1[pass];
  $usertype = $arr1[type];
  session_register($username);
  session_register($password);
  session_register($usertype);
修改成
session_register("userlogin");
$_SESSION['userlogin']=array();
$_SESSION['userlogin']['username']=$arr1[user];
$_SESSION['userlogin']['userpass']=$arr1[pass];
$_SESSION['userlogin']['usertype']=$arr1[type];【需要用到session验证的trends_insert.php】
之中的
 if (session_is_registered($username) and session_is_registered($password) and session_is_registered($ip))
修改成
if (session_is_registered("userlogin"))以后你可以通过
$_SESSION['userlogin']['username']
$_SESSION['userlogin']['userpass']
$_SESSION['userlogin']['usertype']
取得用户的登陆信息,进行进一步操作

解决方案 »

  1.   

    同意楼上所说,
    不过只将$sql1 = "select * from sadmin where user='$user'";
    改成$sql1 = "select * from sadmin where user=$user";
    或者改成$sql1 = "select * from sadmin where user=".$user;
    试试,我怀疑你的查询出了点问题。
      

  2.   

    session_register($username);
      session_register($password);
      session_register($usertype);
    是错误的,应该是
    session_register("username");
      session_register("password");
      session_register("usertype");而且4.23以后推荐使用$_SESSION["username"]=$username;来注册session变量.获得变量username的值方法也是$_SESSION["username"]你的session_is_registered用法也是错的,应该是session_is_registered("username")等等
      

  3.   

    我后来找了点资料看,改了改,也能验证了,但不知是否有不妥?请指教
    代码如下:
    【global.php】
    <?
     require "../webadmin/config_inc.php";
     
     function login($user,$pass)
     {
      $ip = getenv("remote_addr");
      $_SESSION["ip"] = $ip;
      //session_register($ip);
      $sql1 = "select * from sadmin where user='$user'";
      $query1 = mysql_query($sql1) or die(mysql_error());
      $arr1 = mysql_fetch_array($query1);
      
      if (!$arr1[id])
      {
       $error = "对不起,该用户名不存在!";
       backpage($error);
       exit;
      }
      if ($arr1[pass]!=$pass)
      {
       $error = "对不起,密码不正确!";
       backpage($error);
       exit;
      }
      
      $_SESSION["username"] = $arr1[user];
      $_SESSION["password"] = $arr1[pass];
      $_SESSION["usertype"] = $arr1[type];
      //session_register($username);
      //session_register($password);
      //session_register($usertype);
      echo "<META HTTP-EQUIV=REFRESH CONTENT='0;URL=trends_insert.php'>";
     }
    ?>
    【trends_insert.php】
    <? session_start();
     //if (session_is_registered($username) and session_is_registered($password) and session_is_registered($ip))
     if (isset($_SESSION["ip"]) and isset($_SESSION["username"]) and isset($_SESSION["password"]))
     {
      require "../webadmin/config_inc.php";
      require "function.php";
     
      $sql3 = "select * from trends_type order by id";
      $query3 = mysql_query($sql3) or die(mysql_error());
     }
     else
     {
      echo "对不起,您没有访问权限,网页将在5秒钟后返回……";
      echo "<META HTTP-EQUIV=REFRESH CONTENT='5;URL=index.php'>";
      exit;
     }
    ?>
      

  4.   

    我的查询没问题,user字段是char型。谢谢
      

  5.   

    我刚才不明白的就是没用session_register和session_is_registered是不是有何不好,或是以后操作起来不方便;而用了session_register("userlogin");
    $_SESSION['userlogin']=array();会对以后的操作有什么便利呢?
      

  6.   

    $_SESSION['userlogin']=array();
    是把数据作为一个数组来存区,至于优缺点吗,自己想想拉
      

  7.   

    用它的预定义变量$_SESSION当然很方便的,比如注册session只要$_SESSION["变量名"]=变量值  就行了.在其它页面直接用$_SESSION["变量名"]就可以获得它的值