+ -
当前位置:首页 → 问答吧 → 生成加密传输的密码输入框

生成加密传输的密码输入框

时间:2010-01-22

来源:互联网

spAcl类中,不仅有权限控制的机制,同时还拥有了另一个非常实用的功能:生成加密传输的密码输入框。
加密传输的密码输入框,是在页面端把访问者输入的密码先用MD5加密,然后再通过网络传输。这种机制在一定程度上可以避免网络通讯的过程中密码明码方式传输带来的安全问题。
spAcl的密码输入框,涉及到pwinput()和pwvalue()两个成员函数。要注意的是,在使用spAcl的这两个函数之前,必须先载入spAcl文件。
页面上显示加密输入框:


复制代码
  1. import("spAcl.php"); // 先载入spAcl.php文件
  2. class main extends spController
  3. {
  4.  function index(){
  5.   // 请注意在加密输入框所在的form,务必要加上onsubmit='aclcode();'的代码来激活加密功能
  6.   echo "<form action='" . spUrl("main", "show") . "' method='post'>";
  7.   echo "您的帐号:<input type='text' name='username'><br />";
  8.   echo "您的密码:".spClass("spAcl")->pwinput("myid") ."<br />";
  9.   echo "<input type='submit' value='提交'></form>";
  10.  }
  11.  function show(){
  12.   // 在接受提交参数的时候,我们要使用pwvalue()来接收传输的代码
  13.   $md5_password = spClass("spAcl")->pwvalue();
  14.   echo $md5_password;
  15.  }
  16. }


在浏览器中,我们就可以看到一个 id="myid" 的密码输入框。在查看网页源代码中,我们还可以看到许多的javascript代码,这些都是供加密使用的。
在Smarty中也可以使用pwinput函数:

复制代码
  1. import("spAcl.php");
  2. class main extends spController
  3. {
  4.  function index(){
  5.   $this->display("form.html");
  6.  }
  7.  function show(){
  8.   // 在接受提交参数的时候,我们要使用pwvalue()来接收传输的代码
  9.   $md5_password = spClass("spAcl")->pwvalue();
  10.   echo $md5_password;
  11.  }
  12. }


模板form.html

复制代码
  1. <form action='<{spUrl c=main a=show}>' method='post'>
  2. 您的帐号:<input type='text' name='username'><br />
  3. 您的密码:<{pwinput id="myid" add="class = 'cssinput'"}><br />
  4. <input type='submit' value='提交'></form>


对于加密输入框的一些说明:
  • 同一页面上仅能存在一个加密的输入框。
  • 获取到的密码是经过MD5加密的,由于MD5加密是不可逆的,所以开发者在数据库中保存的密码也需要MD5编码后才能与网络获取的密码进行对比。
  • 在显示密码输入框的HTML表单上,务必要在<form>标签上加入onsubmit='aclcode();',以在表单提交的时候激活密码加密操作。
  • 密码输入框生成使用了hash技术,即是使用了一个临时的SESSION值以避免表单被远程提交。所以在接收密码值的时候,一定要使用pwvalue()方能获取到正确密码。而且,访问者也不可以用直接刷新的方式来重新提交表单。
  • pwinput函数的定义是pwinput($id, $add = null),参数$id是<input>标签的ID,务必要填写。参数$add是<input>标签内其他的内容,比如pwinput("myid","class='csspassword' size='200'");将会生成:
    <input type="password" id="myid" class='csspassword' size='200'>
  • pwvalue()的返回值有三种情况:一、返回密码的MD5值。二、返回-1,表示hash不正确,有可能是重复刷新提交或是远程提交。三、返回0,表示无法获取到密码,有可能是远程提交或是没有输入密码。
  • 本功能需要SpeedPHP框架2.2.986版本及以上才能使用。

作者: jake   发布时间: 2010-01-22

hao !

作者: tianyu2009   发布时间: 2010-01-22



不错不错。

支持楼主、、

作者: 潮流馆   发布时间: 2010-01-22