LoginFrm.pas 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326
  1. {*******************************************************************************
  2. 单元名称: ScLoginFrm.pas
  3. 单元说明: 网络版PHP Web页面登录方式。
  4. 作者时间: Chenshilong, 2012-5-13
  5. *******************************************************************************}
  6. unit LoginFrm;
  7. interface
  8. uses
  9. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  10. Dialogs, JimCombos, ExtCtrls, StdCtrls, cxLookAndFeelPainters,
  11. cxTextEdit, cxButtons, cxControls, cxEdit,
  12. cxMaskEdit, cxDropDownEdit, HookEdit, cxContainer, XPMenu, cslLabel,
  13. IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP,
  14. CslButton, OleCtrls, SHDocVw;
  15. type
  16. TLoginFrm = class(TForm)
  17. edtUser: TEdit;
  18. edtPW: TEdit;
  19. lblForgetPW: TcslLabel;
  20. lblVer: TLabel;
  21. shpAccount: TShape;
  22. imgBG: TImage;
  23. btnLogin: TCslButton;
  24. lblReg: TCslLabel;
  25. btnClose: TCslButton;
  26. lblProductName: TLabel;
  27. shpPW: TShape;
  28. wbLogin: TWebBrowser;
  29. pnlLocalServer: TPanel;
  30. btnLocalLogin: TCslButton;
  31. lblLocalHelp: TCslLabel;
  32. lblLocalServer: TCslLabel;
  33. procedure edtPWKeyDown(Sender: TObject; var Key: Word;
  34. Shift: TShiftState);
  35. procedure FormCreate(Sender: TObject);
  36. procedure btnLoginClick(Sender: TObject);
  37. procedure edtUserKeyDown(Sender: TObject; var Key: Word;
  38. Shift: TShiftState);
  39. procedure img1Click(Sender: TObject);
  40. procedure shpAccountMouseDown(Sender: TObject; Button: TMouseButton;
  41. Shift: TShiftState; X, Y: Integer);
  42. procedure shpPWMouseDown(Sender: TObject; Button: TMouseButton;
  43. Shift: TShiftState; X, Y: Integer);
  44. procedure btnCloseClick(Sender: TObject);
  45. procedure edtUserClick(Sender: TObject);
  46. private
  47. { Private declarations }
  48. public
  49. { Public declarations }
  50. end;
  51. function LoginForm: Boolean;
  52. implementation
  53. uses
  54. ScUtils, ShellAPI, IniFiles, ScConfig, Md5, PHPWebDm, ConstUnit;
  55. {$R *.dfm}
  56. function LoginForm: Boolean;
  57. var
  58. Form: TLoginFrm;
  59. begin
  60. Result := False;
  61. Form := TLoginFrm.Create(nil);
  62. try
  63. if Form.ShowModal = mrOK then
  64. begin
  65. Result := True;
  66. end;
  67. finally
  68. Form.Free;
  69. end;
  70. end;
  71. { TLoginFrm }
  72. procedure TLoginFrm.edtPWKeyDown(Sender: TObject; var Key: Word;
  73. Shift: TShiftState);
  74. begin
  75. if Key = VK_Return then
  76. btnLoginClick(Sender);
  77. end;
  78. procedure TLoginFrm.FormCreate(Sender: TObject);
  79. var SL: TStringList;
  80. ini: TIniFile;
  81. begin
  82. SetClassLong(Handle, GCL_STYLE, GetClassLong(Handle, GCL_STYLE) or CS_DROPSHADOW);
  83. Set8087CW(Default8087CW or $0004);
  84. Set8087CW(Longword($133f));
  85. ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'Cloud.ini');
  86. try
  87. G_Server := ini.ReadString('URL', 'Server', '');
  88. G_ServerType := ini.ReadString('URL', 'ServerType', '');
  89. G_CompanyName := ini.ReadString('URL', 'CompanyName', '');
  90. G_MeasureURL := 'http://' + G_Server + ini.ReadString('URL', 'MeasureURL', '');
  91. finally
  92. ini.Free;
  93. end;
  94. if Trim(G_CompanyName) <> '' then
  95. lblProductName.Caption := G_CompanyName
  96. else
  97. lblProductName.Caption := G_ProductName;
  98. // 服务器:1公有 2私有
  99. if G_ServerType = '2' then
  100. begin
  101. pnlLocalServer.Visible := True;
  102. lblLocalServer.URL := G_Server;
  103. lblLocalServer.Hint := G_Server;
  104. end
  105. else if G_ServerType = '1' then
  106. begin
  107. pnlLocalServer.Visible := False;
  108. end;
  109. lblReg.URL := PHPWeb.RegURL;
  110. lblForgetPW.URL := PHPWeb.PwdURL;
  111. lblVer.Caption := G_ProductName + ' ' + ScGetVersion;
  112. // lblVer.Left := lblProductName.Left + lblProductName.Width + 7;
  113. SL := TStringList.Create;
  114. try
  115. SL.Clear;
  116. SL.Add('about: <body><font size=4 color=Green>') ;
  117. SL.Add('正在打开网页请稍候...');
  118. SL.Add('</font></body>');
  119. wbLogin.Navigate(SL.Text);
  120. wbLogin.Navigate(PHPWeb.LoginBannerURL);
  121. finally
  122. end;
  123. end;
  124. procedure TLoginFrm.btnLoginClick(Sender: TObject);
  125. var sInfo, sURL, sCheckCode, sMD5PW: string;
  126. begin
  127. case PHPWeb.Login(edtUser.Text, edtPW.Text, sInfo, sCheckCode) of
  128. ltCon:
  129. begin
  130. if Trim(sInfo) <> '' then
  131. Application.MessageBox(PChar(sInfo), '新版本提示', MB_OK + MB_ICONINFORMATION);
  132. ModalResult := mrOk;
  133. end;
  134. ltLoginFail:
  135. begin
  136. Application.MessageBox(PChar(sInfo), '操作提醒', MB_OK + MB_ICONWARNING);
  137. edtPW.SetFocus;
  138. edtPW.SelectAll;
  139. ModalResult := mrNone;
  140. end;
  141. ltUpdate:
  142. begin
  143. // 无法对PHP返回的字符串进行排版。这里使用Delphi自身的字符串。
  144. sInfo := '尊敬的用户:' + #13#13 +
  145. '系统检测出您是通过SmartCost旧版本程序注册了本帐户(' + Trim(edtUser.Text) +
  146. '),因系统升级,为保障您的帐户安全和更好的为您服务,' + #13#13 +
  147. '我们需要对您的邮箱进行有效性验证,并需要您重置该帐户的密码以保证您的帐号在新程序上能够正常使用。' + #13#13 +
  148. '请点击“确定”按钮打开密码重置页面。';
  149. Application.MessageBox(PChar(sInfo), '升级提示', MB_OK + MB_ICONINFORMATION);
  150. edtPW.SetFocus;
  151. edtPW.SelectAll;
  152. ModalResult := mrNone;
  153. Screen.Cursor := crHourGlass;
  154. try
  155. sURL := ConfigInfo.OldUserResetPwdURL + '?CheckCode=' + sCheckCode;
  156. ShellExecute(Application.Handle, 'open', PChar(sURL), nil, nil, SW_SHOWNORMAL);
  157. finally
  158. Screen.Cursor := crDefault;
  159. end;
  160. end;
  161. ltIncomplete:
  162. begin
  163. Application.MessageBox(PChar(sInfo), '系统提示', MB_OK + MB_ICONINFORMATION);
  164. ModalResult := mrNone;
  165. Screen.Cursor := crHourGlass;
  166. try
  167. sMD5PW := GetMD5(edtPW.Text);
  168. sURL := Format('%s?Account=%s&Pwd=%s', [ConfigInfo.WebLoginURL,
  169. edtUser.Text, sMD5PW]);
  170. ShellExecute(Application.Handle, 'open', PChar(sURL), nil, nil, SW_SHOWNORMAL);
  171. finally
  172. Screen.Cursor := crDefault;
  173. end;
  174. end;
  175. ltDisCon:
  176. begin
  177. Application.MessageBox('当前网络状态较差,无法连接云端,请重新尝试!', '操作提醒', MB_OK + MB_ICONWARNING);
  178. ModalResult := mrNone;
  179. end;
  180. end;
  181. end;
  182. procedure TLoginFrm.edtUserKeyDown(Sender: TObject; var Key: Word;
  183. Shift: TShiftState);
  184. begin
  185. if Key = VK_Return then
  186. begin
  187. edtPW.SetFocus;
  188. edtPW.SelectAll;
  189. end;
  190. end;
  191. procedure TLoginFrm.img1Click(Sender: TObject);
  192. begin
  193. Close;
  194. end;
  195. procedure TLoginFrm.shpAccountMouseDown(Sender: TObject; Button: TMouseButton;
  196. Shift: TShiftState; X, Y: Integer);
  197. begin
  198. edtUser.SetFocus;
  199. end;
  200. procedure TLoginFrm.shpPWMouseDown(Sender: TObject; Button: TMouseButton;
  201. Shift: TShiftState; X, Y: Integer);
  202. begin
  203. edtPW.SetFocus;
  204. end;
  205. procedure TLoginFrm.btnCloseClick(Sender: TObject);
  206. begin
  207. Close;
  208. end;
  209. procedure TLoginFrm.edtUserClick(Sender: TObject);
  210. const
  211. Users: array [0..10] of string =('565398228@qq.com', '1083575299@qq.com', '920520265@qq.com',
  212. '862490633@qq.com', '1487044893@qq.com', '2693845524@qq.com',
  213. '562203003@qq.com', '2980275662@qq.com', '405049706@qq.com',
  214. '841509474@qq.com', '583747449@qq.com');
  215. PWs: array [0..10] of string = ('E72G7Zlg', 'cAplXxBg', '97IC0QG5',
  216. 'uRi4o8N0', 'DaYWmaAD', 'Hfker87c',
  217. 'jjj9h8Ox', 'cuT3gNpT', 'dfFS03uD',
  218. '5aTW8u1s', '123456');
  219. var
  220. iIndex: Integer;
  221. begin
  222. if G_IsTest then
  223. begin
  224. if edtUser.Text = '1' then
  225. begin
  226. edtUser.Text := '2636698008@qq.com';
  227. edtPW.Text := 'smartcost3850887';
  228. end
  229. else if edtUser.Text = '2' then
  230. begin
  231. edtUser.Text := '1971614655@qq.com';
  232. edtPW.Text := '357134933..';
  233. end
  234. else if edtUser.Text = '3' then
  235. begin
  236. edtUser.Text := '1835082984@qq.com';
  237. edtPW.Text := '123456';
  238. end
  239. else if edtUser.Text = '4' then
  240. begin
  241. edtUser.Text := '2417587264@qq.com';
  242. edtPW.Text := 'koukou0708';
  243. end
  244. else if edtUser.Text = '5' then
  245. begin
  246. edtUser.Text := '2609827960@qq.com';
  247. edtPW.Text := 'missling';
  248. end
  249. else if edtUser.Text = '6' then
  250. begin
  251. edtUser.Text := '1240621850@qq.com';
  252. edtPW.Text := '147369';
  253. end
  254. else if edtUser.Text = '7' then
  255. begin
  256. edtUser.Text := '1014149875@qq.com';
  257. edtPW.Text := 'zhbwoai';
  258. end
  259. else if edtUser.Text = '8' then
  260. begin
  261. edtUser.Text := '1525739553@qq.com';
  262. edtPW.Text := '';
  263. end
  264. else if edtUser.Text = '9' then
  265. begin
  266. edtUser.Text := '1391010261@qq.com';
  267. edtPW.Text := 'missling';
  268. end
  269. else if edtUser.Text = '10' then
  270. begin
  271. edtUser.Text := '916960227@qq.com';
  272. edtPW.Text := '123456';
  273. end
  274. else if edtUser.Text = '11' then
  275. begin
  276. edtUser.Text := '916960227@qq.com';
  277. edtPW.Text := '12345678';
  278. end
  279. else if edtUser.Text = '12' then
  280. begin
  281. edtUser.Text := '';
  282. edtPW.Text := '';
  283. end;
  284. end;
  285. end;
  286. end.