LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1296|回复: 5

php登陆验证

[复制链接]
发表于 2004-8-23 00:33:59 | 显示全部楼层 |阅读模式
PHP程序中的登陆检验程序是输入用户名和明文密码
但用加密函数生成的密码每次都不同
就是为了使密码检验成功
我将原来库中的密码保存后删除
再用同一个函数或者应用程序加密第二次输入的密码
例如两次都是abc
再将现在的密码和保存的密码比较,不等
用什么方法能使这种登陆成功?
发表于 2004-8-23 11:02:44 | 显示全部楼层
你是用什么加密函数的?
发表于 2004-8-24 14:31:04 | 显示全部楼层
我用MD5进行加密,在mysql下和在PHP下生成的密码都是一样的。
MD5加密后的密码长度是32位。用果字段长度不够的话,有可能会将超长的部分截掉,致使位数不等。(我就碰到过这种傻事)。
发表于 2004-8-24 14:52:38 | 显示全部楼层
如果是用crypt()函数加密的话,他的格式是 crypt(string str,string [salt]);
使用DES模块加密。之所以每次都不一样可能是没有加salt参数。salt参数可以是任意两个字符。
 楼主| 发表于 2004-8-24 15:37:58 | 显示全部楼层
我是用一个加密程序,例如./password username password
但是每次都是随机密码
导致密码不能匹配
发表于 2004-8-31 20:16:03 | 显示全部楼层

  1. <?php
  2. session_start();
  3. if( $current_uid == "" ) {
  4.         echo "Please login";
  5.         return;
  6. }
  7. $account = $current_uid;
  8. $oldpasswd = $_POST['oldpasswd'];
  9. $newpasswd1 = $_POST['newpasswd1'];
  10. $newpasswd2 = $_POST['newpasswd2'];
  11. $fp=fopen("/opt/passwd", "r+");

  12. if ( $fp == FALSE ) {
  13.         echo "Open file is error! <br>";
  14.         break;
  15. }
  16. while(!feof($fp))
  17. {
  18.         $i=ftell($fp);
  19.         $line_buf = fgets($fp,1024);

  20.         if ( strlen($line_buf) == 0 ) return;

  21.         $arr = explode(" ", $line_buf);
  22.         $user = $arr[0];
  23.         $encryptpass = $arr[1];
  24.         $line_len = strlen($line_buf);
  25.         $passwd_len = strlen($encryptpass);
  26.         if( $user == $account )
  27.         {
  28.                 $i=$i+$line_len-$passwd_len;
  29.                         if( trim(crypt($oldpasswd,$encryptpass)," \r\n") == trim($encryptpass," \r\n") )
  30.                         {
  31.                                 $newencryptpass = crypt($newpasswd1);
  32.                                 rewind($fp);
  33.                                 fseek($fp,$i,SEEK_SET);
  34.                                 fwrite($fp,$newencryptpass);
  35.                                 echo "修改成功!";
  36.                                 break;

  37.                         } else {
  38.                                 echo "帐号或密码错误!";
  39.                                 break;
  40.                         }
  41.          }
  42. }
  43. fclose($fp);
  44. echo "<br>";
  45. echo '<center><a href="http://XXX/main.html">返回</center>';
  46. ?>
复制代码


/opt/passwd的格式是:帐号  密文

我以前写过的一个基于文本认证修改密码的PHP,里面也用到了你说的加密函数,不知道对你有没有帮助。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表