session_start(); 
$user= $_GET['user']; 
$password = $_GET['password']; 
if ($user && $password) 

  try 
  { 
    login($user,$password); 
    
    $_SESSION['valid_user'] = $user; 
  } 
  catch(Exception $e) 
  { 
    
    
    echo 'You could not be logged in. 
          You must be logged in to view this page.'; 
    
  
    exit; 
  }      
} function login($user, $password) {   
  $link= mysql_connect('localhost','root','225201')or die('could not connect:'.mysql_error());   mysql_select_db('forum') or die('could not select database'); 
  
  $result =mysql_query("select * from forum 
                        where user='$user' 
                        and passward = sha1('$password')"); 
  
  if (!$result) 
    throw new Exception('Could not log you in.'); 
  
  if (mysql_num_rows($result)>0) 
    return true; 
  else 
    throw new Exception('Could not log you in.'); 

我一用sha1()加密后,登录老提示'You could not be logged in. 
          You must be logged in to view this page这个错误。不用sha1就可以了。$query="insert into forum(id,user,passward,email) values 
                        ('','$user',sha1('$passwd'), '$email')"; 我在入库时加密了    求助 

解决方案 »

  1.   

    你把sql语句打印出来,直接到数据库里进行查询操作,看看结果是什么
      

  2.   

    抛出 SQL 语句,到  PHPMYADMIN 试试看
      

  3.   

    ??LZ把我的帖删了还是管理员??怪怪??PS. lz不知道我的方法解决没解决你的问题?
      

  4.   

    TOTO你回复的那帖子还在,刚我看见了,楼主这是又新开了一个。。
      

  5.   


    eh .....我说呢。还说帖子怎么无辜就被删了,我很怀疑就是我说的那个问题。= =|| 所以lz一定要注意 ' 与"的区别阿
      

  6.   

    应该是sql语句的问题,这段代码:
     $result =mysql_query("select * from forum
                            where user='$user'
                            and passward = sha1('$password')"); 
    sha1函数写在双引号中并不会被执行,楼主改成
     $result =mysql_query("select * from forum
                            where user='$user'
                            and passward = '".sha1($password)."'"); 另外这里是passward不是password??
      

  7.   


    ^^嗬嗬,csdn挣分太难了,兄弟混了多久混出这样的成绩来,佩服佩服
      

  8.   


    呵呵没有当然不是怕lz你不给分了,只不过就是说这么来回来去的回复可用分也不加,弄了半天还是乞丐kaka怎么样问题解决了?
      

  9.   

    首先,这个语句是把sha1看成是mysql的一个函数。你可以查查手册,mysql有没有这个函数。或者在mysql里面运行一下select sha1('ab');看看有没有输出还是抱错经查证,mysql是带这个函数的。mysql> select sha1('df');
    +------------------------------------------+
    | sha1('df')                               |
    +------------------------------------------+
    | 4a8a9fc31dc15a4b87bb145b05db3ae0bf2333e4 |
    +------------------------------------------+
    1 row in set (0.03 sec)另外,你返回的地方,具体位置不能确定在那里。
    if (!$result) 
        throw new Exception('Could not log you in.'); 
      
      if (mysql_num_rows($result)>0) 
        return true; 
      else 
        throw new Exception('Could not log you in.'); 
    有两个地方输出的内容是一样的,这个你不好定位是result错误还是mysql_num_rows错误。输出的地方做点小变化,提醒自己具体是哪个地方出错。最好就是你把sql语句也打印出来看看。我估计的是,你提交的方式是post,而你取值的方式是get。估计就是这里没有能取到值。看看html是不是用get方式提交的吧