这样
if ($user!="" and $pass!=""){
   $result=$db->query("select pwd,username from passwd where userid='$user'");
   $db->next_record();
   $row1=$db->f(pwd);
   $userpwd=$db->query("select password('$pass') as passwd");
   $db->next_record();
   $row2=$db->f(passwd);
   if ($row1==$row2){
      include "login.php";
      exit;
   }else{
     include "false.php";
     exit;
  }

解决方案 »

  1.   

    楼上说的很对,不过好像MySQL中的password()函数是不可逆的,也就是说不能够解密!
      

  2.   

    $sql="select * from sys_user where username='$name' and password=password('$password')";
    这种写是很有问题的,可以通过特殊的输入绕过password,最好还是要海贝写的那种方法比较安全。
      

  3.   

    首先要搞清楚一点:
    password是mysql带的,不是php的函数而且password是不可逆的,你只有将原来未加密的数据用password加密后再比较才可以
      

  4.   

    我来了~~:)这两天没看邮箱~~不好意思哈~~首先我要说的是php没有password()这个函数,在抱错信息里已经说得很清楚了~~在mysql中的密码使用了加密后,在mysql中看到的是一串乱码,但是你用php程序将这个字段select出来的时候,如果将他echo出来,他还是乱码显示,但是做比较的时候却是真值,我帖个例子:mysql> use mysql
    Database changed
    mysql> grant all on *.* to yufan@localhost IDENTIFIED by '130182' with grant opt
    ion;
    Query OK, 0 rows affected (0.00 sec)mysql> select * from user;
    +-----------+-------+------------------+-------------+-------------+------------
    -+-------------+-------------+-----------+-------------+---------------+--------
    ------+-----------+------------+-----------------+------------+------------+
    | Host      | User  | Password         | Select_priv | Insert_priv | Update_priv
     | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process
    _priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv |
    +-----------+-------+------------------+-------------+-------------+------------
    -+-------------+-------------+-----------+-------------+---------------+--------
    ------+-----------+------------+-----------------+------------+------------+
    | localhost | root  |                  | Y           | Y           | Y
     | Y           | Y           | Y         | Y           | Y             | Y
          | Y         | Y          | Y               | Y          | Y          |
    | %         |       |                  | N           | N           | N
     | N           | N           | N         | N           | N             | N
          | N         | N          | N               | N          | N          |
    | localhost |       |                  | Y           | Y           | Y
     | Y           | Y           | Y         | Y           | Y             | Y
          | Y         | Y          | Y               | Y          | Y          |
    | %         | root  |                  | Y           | Y           | Y
     | Y           | Y           | Y         | Y           | Y             | Y
          | Y         | Y          | Y               | Y          | Y          |
    | localhost | yufan | 31bd15317946af85 | Y           | Y           | Y
     | Y           | Y           | Y         | Y           | Y             | Y
          | Y         | Y          | Y               | Y          | Y          |
    +-----------+-------+------------------+-------------+-------------+------------
    -+-------------+-------------+-----------+-------------+---------------+--------
    ------+-----------+------------+-----------------+------------+------------+
    5 rows in set (0.00 sec)mysql>这是我在命令行下加了一个root用户,自动加密的。
    然后我写个php脚本来说明问题所在<?
    $conn = mysql_connect('localhost','','');
    mysql_select_db('mysql');
    $sql = "select Password from user where user = 'yufan'";
    $res = mysql_query($sql);
    $pass = mysql_result($res,0);
    echo $pass;
    echo "<br>";
    if ($pass = "130182")
    {
    echo "zxyufan";
    }
    ?>然后在页面上的显示是
    31bd15317946af85
    zxyufan
      

  5.   

    这一句是赋值if ($pass = "130182")应该是if ($pass == "130182")