# BSPHP-Delphi-Login-DEMO

![密码登录](../演示截图与配置/1.png)

Delphi 10（VCL）登录模式 GUI 演示。

---

## 简体中文

### 功能

- 13 个 Tab：密码登录、短信/邮箱登录、注册、解绑、充值、找回密码、修改密码、意见反馈等
- 验证码图片下载与刷新（按 Tab 独立）
- 控制台窗口（登录后 API 测试）
- Web 登录窗口（内嵌 IE WebBrowser + 系统浏览器打开 + 心跳检测）
- BSPHP 加密通信（MD5 / AES-128-CBC / RSA / WinHTTP）

### 工程结构

```text
BsphpLoginDemo.dpr        主程序
LoginForm.pas/dfm         主登录窗体 (760×430)
ConsoleForm.pas/dfm       控制台窗体 (900×698)
WebLoginForm.pas/dfm      Web 登录窗体 (720×580)
bsphp_demo.ini            演示配置（推荐修改此文件）
core/
  BsPhpClient.pas         API 客户端
  BsPhpCrypto.pas         加密与 HTTP
  BsPhpConfig.pas         演示配置
  BsPhpMachineId.pas      机器码
```

### 构建与运行

1. 用 Delphi 10.x 打开 `BsphpLoginDemo.dpr`（或 `Project1.dproj`）
2. 目标平台 **Win32**，编译运行
3. 演示 `appid=8888888`，配置文件为程序目录下的 `bsphp_demo.ini`

### 配置

初始化参数集中在 **`TBsPhpInitConfig`**（见 `core\BsPhpConfig.pas`）。

**方式一：INI 文件（推荐）**

```ini
[API]
Url=https://demo.bsphp.com/AppEn.php?appid=8888888&m=...
MutualKey=6600cfcd5ac01b9bb3f2460eb416daa8
DaiHao=8888888

[Keys]
ServerPrivateKey=...Base64 私钥一行...
ClientPublicKey=...Base64 公钥...

[URLs]
CodeUrlPrefix=https://demo.bsphp.com/index.php?m=coode&sessl=
WebLoginUrlPrefix=...
```

程序通过 `ActiveBsPhpInitConfig` 加载：有 INI 用 INI，没有则用内置 `DefaultBsPhpInitConfig`。

**方式二：改代码默认值**

在 `core\BsPhpConfig.pas` 的 `DefaultBsPhpInitConfig` 中修改各字段。

### Web 登录说明

Delphi 版使用 `TWebBrowser`（IE 内核）。若内嵌页黑屏：

1. 点击「系统浏览器打开」用 Edge/Chrome 登录
2. 登录后点击「检测心跳」（`timeout.lg` 返回 code=5031 视为成功）

### 演示账号

密码登录 Tab 默认：`admin` / `admin`

---

## 繁體中文

### 功能

- 13 個 Tab：密碼登入、簡訊/郵箱登入、註冊、解綁、充值、找回密碼、修改密碼、意見回饋等
- 驗證碼圖片下載與刷新（各 Tab 獨立）
- 控制台視窗（登入後 API 測試）
- Web 登入視窗（內嵌 IE WebBrowser + 系統瀏覽器開啟 + 心跳檢測）
- BSPHP 加密通訊（MD5 / AES-128-CBC / RSA / WinHTTP）

### 工程結構

```text
BsphpLoginDemo.dpr        主程式
LoginForm.pas/dfm         主登入窗體
ConsoleForm.pas/dfm       控制台窗體
WebLoginForm.pas/dfm      Web 登入窗體
bsphp_demo.ini            示範設定
core/                     BSPHP 客戶端與加密通訊
```

### 建置與執行

1. 以 Delphi 10.x 開啟 `BsphpLoginDemo.dpr`
2. 目標平台 **Win32**，編譯執行
3. 示範 `appid=8888888`，設定檔為 `bsphp_demo.ini`

### Web 登入說明

Delphi 版使用 `TWebBrowser`（IE 核心）。若內嵌頁異常，請用系統瀏覽器開啟後檢測心跳。

### 示範帳號

密碼登入 Tab 預設：`admin` / `admin`

---

## English

### Features

- 13 tabs: password login, SMS/email login, register, unbind, recharge, password recovery, feedback, and more
- Captcha image download and refresh (per tab)
- Console window for post-login API testing
- Web login window (`TWebBrowser` + system browser + heartbeat check)
- BSPHP encrypted HTTP (MD5 / AES-128-CBC / RSA / WinHTTP)

### Project layout

```text
BsphpLoginDemo.dpr        Main program
LoginForm.pas/dfm         Main login form (760×430)
ConsoleForm.pas/dfm       Console form (900×698)
WebLoginForm.pas/dfm      Web login form (720×580)
bsphp_demo.ini            Demo configuration
core/                     BSPHP client and crypto
```

### Build & run

1. Open `BsphpLoginDemo.dpr` in Delphi 10.x
2. Target **Win32**, build and run
3. Demo `appid=8888888`; config file: `bsphp_demo.ini`

### Configuration

See `core\BsPhpConfig.pas` for `TBsPhpInitConfig` fields.

### Web login

This Delphi demo uses `TWebBrowser` (IE). If the embedded page is blank, open in the system browser and run the heartbeat check.

### Demo account

Password tab defaults: `admin` / `admin`
