f_chk_login.srf 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. $PBExportHeader$f_chk_login.srf
  2. global type f_chk_login from function_object
  3. end type
  4. forward prototypes
  5. global function boolean f_chk_login (string arg_msg)
  6. end prototypes
  7. global function boolean f_chk_login (string arg_msg);Boolean rslt = True
  8. IF sys_if_network = 1 THEN return rslt
  9. //Int arg_type
  10. String ls_host, ls_ip, ls_userid
  11. DateTime ldt_logintime, ldt_chktime
  12. Date ld_login, ld_chk, ld_
  13. Time lt_login, lt_chk
  14. Long cnt
  15. Boolean lb_reset = False, lb_login_allow = False
  16. SELECT host, ip, logintime, chktime, userid
  17. INTO :ls_host, :ls_ip, :ldt_logintime, :ldt_chktime, :ls_userid
  18. From sys_lck;
  19. IF sqlca.SQLCode <> 0 THEN
  20. //arg_msg = "查询用户在线信息失败,"+sqlca.sqlerrtext
  21. rslt = False
  22. GOTO ext
  23. END IF
  24. //临时的措施
  25. IF ls_userid <> '' THEN
  26. ld_login = Date(ldt_logintime)
  27. ld_chk = Date(ldt_chktime)
  28. IF DaysAfter (ld_chk, Today() ) > 1 THEN //默认退出
  29. lb_reset = True
  30. GOTO chkout
  31. END IF
  32. lt_login = Time(ldt_logintime)
  33. lt_chk = Time(ldt_chktime)
  34. IF SecondsAfter ( lt_chk, Now() ) > 3600 THEN //默认退出
  35. lb_reset = True
  36. GOTO chkout
  37. END IF
  38. chkout:
  39. IF lb_reset THEN
  40. f_update_login(0)
  41. lb_login_allow = True
  42. ELSE
  43. lb_login_allow = False
  44. arg_msg = "用户["+ls_userid+"]登录中..."
  45. END IF
  46. ELSE
  47. lb_login_allow = True
  48. END IF
  49. rslt = lb_login_allow
  50. ext:
  51. RETURN rslt
  52. end function