登录口令加密函数、用户登录主Form实现方法和具体代码

类别:数据库 点击:0 评论:0 推荐:
create函数PWD:
create FUNCTION PWD(sdpassword varchar2) RETURN varchar2 IS 
  len   number; 
  szpwd varchar2(20); 
BEGIN 

   len:=length(sdpassword); 
   for i in 1..len loop 
     szpwd:=szpwd|| 
                 chr(ascii(substr(sdpassword,i,1))+(len-i)*i*i+len); 
   end loop; 
   return(szpwd); 

END; 


具体使用:
1.在Block中加一Trriggers:Key-Others,代码:null; 防止用户用Shift + F7非法进入。
2.在OK确定Button加一When-Button-Pressed,代码:
DECLARE
   szpwd         VARCHAR2 (20);         --密码
   szjmpwd       VARCHAR2 (20);         --加密码
   szjs          VARCHAR2 (10) := '4';  --角色
BEGIN
   SELECT PASSWORD, js
     INTO szpwd, szjs
     FROM prid01                       --权限管理中的用户登记表
    WHERE userid = :login.userid;

   szjmpwd := pwd (NVL (:login.PASSWORD, '@'));

   IF szpwd = szjmpwd THEN
      :GLOBAL.userid := :login.userid;
      :GLOBAL.username := :login.username;
      :GLOBAL.js := szjs;
      :GLOBAL.PASSWORD := :login.PASSWORD;
      :GLOBAL.nls_lang := :login.nls_language;
      --init_menu;            --初始化菜单权限
      --init_nav;             --初始化工具条上的ERP流程图权限
      --init_nav_hr;         --初始化工具条上的人力资源模块流程图权限
      GO_BLOCK ('MAIN');
      --SET_ITEM_PROPERTY('NO_DISPLAY_NEXT_TIME',VISIBLE,PROPERTY_TRUE);
      --SET_ITEM_PROPERTY('NO_DISPLAY_NEXT_TIME',ENABLED,PROPERTY_TRUE);
      --EXECUTE_TRIGGER('HINT');   --执行每日一帖小程序
   ELSE
      messagebox.messagebox (nls_error (nls_lang, '00004')); 
                    --这是我自做的多语言messagebox,你们可用你们的
      GO_ITEM ('LOGIN.password');
   END IF;
EXCEPTION
   WHEN NO_DATA_FOUND THEN
      messagebox.messagebox (nls_error (nls_lang, '00007'));
                    --这是我自做的多语言messagebox,你们可用你们的
      GO_ITEM ('LOGIN.userid');
   WHEN OTHERS THEN
      messagebox.messagebox (SQLERRM);
END;

本文地址:http://com.8s8s.com/it/it19311.htm