老兄,我覺得你應該把
session_register("user_id");
這句放在登陸成功以後的語句後面,比如放在
$query_id=$db->query($string2);    
後面。並且接收uer_id時,最好這樣:
$user_id=$HTTP_POST_VARS[user_id];
因爲這句話session_register("user_id");
中的user_id可能來自session而不是前一個表單控件user_id

解决方案 »

  1.   

    老兄,下一步也是注册页面,这一步是必填信息,下一步分为老师和学生两个分支,所以下一步update更新时必须用user_id辨别where user_id=$user_id,
    并且这是注册页面,而不是登陆页面.
      

  2.   

    我暂时没法测试直觉觉得这句有问题$string1="select user_id from class_user where user_id='$user_id'";该成这样看看
    $string1="select user_id from class_user where user_id='".$user_id."'";
      

  3.   

    总之我觉得错不应该在session.而是sql查询
    如果session错了,应该是么都找不到
    而sql错了,才是无论如何都找到了。
      

  4.   

    我提个建议,把
    if($row)
    {
    ?>
    <script language="JavaScript">
      alert("此用户已存在,请重新填写!");
      </script>
      <a href="JavaScript:window.history.back()">回上一页</a> 
      <?
      }改为
    if($row):
    ?>
    <script language="JavaScript">
      alert("此用户已存在,请重新填写!");
      </script>
      <a href="JavaScript:window.history.back()">回上一页</a> 
    <? 
    endif;
    试试看
      

  5.   

    $row=mysql_num_rows($query_id1);
    if($row)
    {
    ?>
    <script language="JavaScript">
      alert("此用户已存在,请重新填写!");
      </script>
      <a href="JavaScript:window.history.back()">回上一页</a> 
      <?
      }
      else
      { $string2="insert into class_user (user_type,user_id,user_pass,user_name,user_sex) values ('$user_type','$user_id','$user_pass1','$user_name','$user_sex')";
    $query_id=$db->query($string2);
    ……
    最好改成:
    $row=mysql_num_rows($query_id1);
    if($row>0)
    {
    ?>
    <script language="JavaScript">
      alert("此用户已存在,请重新填写!");
      </script>
      <a href="JavaScript:window.history.back()">回上一页</a> 
      <?
      }
      else
      { $string2="insert into class_user (user_type,user_id,user_pass,user_name,user_sex) values ('$user_type','$user_id','$user_pass1','$user_name','$user_sex')";
    $query_id=$db->query($string2);
    ……另外,最好不要把你post的变量名与你数据库中的字段名相同。
    还有,我看到你的程序第一印象就觉得有点别扭,仔细一看,原来是变量和我的习惯不一样。不知大家用变量的习惯是什么样的?
    我的习惯:sql字串:$query_N或$sql_N;查询结果:$result_N;返回的记录:$row_N。
      

  6.   

    sql语句没有问题,因为我把session_start(),session_register注释掉后就可以执行成功了.后来我以为是和以前的session变量发生冲突,我改了session变量名后还是老样子.
      

  7.   

    并且我测试echo $user_id时发现它的值始终为第一次注册时的用户id名,也就是不管你以后怎么注册新用户,它的值一直没变.
      

  8.   

    当你第一次注册用户后,你也要判断用户是否存在的,所以也会执行上面的代码,结果就是session_register("user_id")被执行一次,这样$user_id变量就被保存在session中了.
    之后你再申请用户时,我估计你的申请用户代码中没有对$user_id进行修改,结果再次执行session_register("user_id")时,$user_id还是没有变化.
    总之,我认为session_register("user_id");这句话不应该放在这个部分的,应该是放在申请成功后或者登录成功之后的.判断新用户名是否存在不需要用session变量,用传递过来的变量就可以了.
      

  9.   

    如果真的要用session变量,用完之后记得用session_unregister()注销掉.
      

  10.   

    我下面两个分支注册页面(老师)和(学生)中都要用到user_id,因为下面页是选填内容,要在必填内容基础上update更新,要用where user_id=$user_id控制住.
    所以session_register只能在此页,我试着把session_register放在下面,结果还是一样.
      

  11.   

    建议你注册SESSION变量的时候不要用和FORM中的变量名字一样的变量,我注册SESSION的时候就是用$USER_ID1=$USER_ID
    session_register("USER_ID1")
    否者在你的FORM中的变量的VALUE 就不能改变了好象是!
    我是这样做的,不知道行不行!
    我一次想用IF--ELSE来控制显示两个表格中的一个或者是另一个时候,好象是两个都显示,所以我就直接用PHP写HTML了!你哪个一直是显示“已经注册”是不是这个原因!