用JavaScript实现邮箱快捷登录

Author: 周辉腾 Date: 2000年 第23期

  在网上逛久了,是不是经常见到别人的站点上的“免费邮箱快捷登录”等“便民”的好东东?打开这些页面的源文件一看,原来都是通过某些ASP或CGI程序登录的,这就不得不使一向喜欢贪图便利的我们小心谨慎起来——要知道,这些来历不明的ASP或CGI若想记录我们的用户名跟密码是轻而易举的事!所以,一般情况下我们都不太用它,除非这个ASP程序是自己做的——自己做的自己相信,怎样让别人也相信呢?毕竟ASP太“安全”了,客户端根本看不到真正的源代码!
  实际上,撇开其它因素不谈,这些ASP或CGI程序起的仅仅是一个转换作用而已,即将获得的用户名与密码转换为相应免费电邮登录脚本的对应格式。这种功能用JavaScript完全能够胜任,而且由于JavaScript对客户端的透明性即访客可以看到源代码,所以不会有前面的这些ASP的“信任危机”。
  先来讲讲它的原理。前面已经提到,我们要做的只是获取用户名与密码然后转换为相应登录脚本的特定格式,如“新浪免费邮件”处理登录信息的文件名及地址是“http://mail.sina.com.cn/cgi-bin/login”,“用户名”的“叫法”是“u”,“密码”是“psw”,如果用户选择了“新浪邮件”,程序要做的就是将用户输入用户名以“u”和密码以“psw”的格式发送到登录脚本,形成“http://mail.sina.com.cn/cgi-bin/login?u=user&psw=password”,然后登录。下面一起来看具体怎么做。
  先做一个登录表单,将需要数据发送给JavaScript函数。表单可参考以下代码:
  <form name=″mailForm″ action=″JavaScript:go()″ Onsubmit=″return check(this)″ method=″post″>
  <p><select name=″mailSelect″ size=″1″>
  <option selected value=″None″>请选择你的免费邮箱</option>
  <!--这些选项的顺序可以随意改变,它们的值应根据具体情况以下面的形式设定:第一部分是登录地址,余下的分别是用户名与密码的“叫法”,以半角分号“;”隔开-->
  <option value=″mail.sina.com.cn/cgi-bin/login;u;psw″>新浪免费电邮</option>
  <option value=″web.163.net/cgi/login;user;pass″>163电子邮局</option>
  <option value=″freemail.263.net/cgi/login;user;pass″>263免费电邮</option>
  <option value=″freemail.990.net/prog/login;user;pass″>990免费电邮</option>
  </select><br>
  账号:<input type=″text″ name=″name″ size=″12″ onfocus=″this.select()″><br>
  密码:<input type=″password″ name=″password″ size=″12″ onfocus=″this.select()″><br>
  <input type=″submit″ value=″登录″ style=″font-size: 9pt″ name=″submit″>
  <input type=″reset″ value=″重置″ name=″reset″ style=″font-size: 9pt″></p>
  </form>
  第二步,编写JavaScript函数,将它放在登录表单所在页面的<head>……</head>之间。
  <script language=″JavaScript″><!--
  function makeURL(){    /*登录页面地址生成函数*/
  var objForm=document.mailForm;
  var intIndex=objForm.mailSelect.options.selectedIndex;
  var varInfo=objForm.mailSelect.options[intIndex].value; /*获取的表单中邮件服务器及用户账号和密码信息*/
  var arrayInfo=varInfo.split(′;′); /*将以上获取的信息进行分割,并赋给数组变量*/
  var strName=objForm.name.value,varPasswd=objForm.password.value;
  var strProvider=arrayInfo[0],strIdName=arrayInfo[1],varPassName=arrayInfo[2]; /*将″邮件服务器地址及处理登录的文件名″、″账号″、″密码″看作变量*/
  var strUrl=′http://′+strProvider+′?′+strIdName+′=′+strName+′&′+varPassName+′=′+varPasswd; /*合并字符串,得到形如″http://mail.sina.com.cn/cgi-bin/login?u=name&psw=password″的字符串型URL*/
  return strUrl; /*返回得到的登录页面地址*/
  }
  function go(){    /*转到相应的登录页面*/
  var strLocation=makeURL();
  window.open(strLocation,′′,′′);
  }
  function check(input){ /*表单常规检查函数,可以根据具体情况编写*/
  if(input.mailSelect.options.selectedIndex==0){
  alert(″你忘了选择您的邮箱了!″);
  return false;}
  if(input.name.value==″″){
  alert(″你忘了填写您的账号名了!″);
  input.name.focus();
  return false;}
  if(input.password.value==″″ || input.password.value.length<3){
  alert(″你的密码长度小于3字符吗?还是重新填写吧!″);
  input.password.focus();
  return false;}
  else return true;
  }
  --></script>
  好了,属于大家的“免费邮箱快捷登录”完成了,现在就试一下,怎么样?我的E-mail:contion@sina.com,有问题可以来信联系。