需安装phpstudy永久免费版搭建PHP+MySQL环境,配置PHP 7.4及mysqli扩展,创建member_system数据库与users表,实现带密码哈希、预处理语句和会话管理的注册登录功能。

安装PHP永久免费版运行环境
要在本地快速搭建可运行PHP会员系统的开发环境,必须先部署一套稳定、免授权、无需续费的PHP+MySQL+Web服务器组合。phpstudy免费版是目前最符合“永久免费”要求的集成方案,它内置Apache/Nginx双引擎、PHP多版本切换、MySQL 5.7/8.0及Redis支持,且无功能阉割或弹窗广告。
前往phpstudy官网下载最新版安装包(截至2026年8月为phpstudy Pro v2026.07),双击运行后全程默认选项即可,【安装路径严禁含中文或空格】,否则后续PHP脚本无法加载扩展模块。
安装完成启动面板,勾选“Apache”和“MySQL”,点击“启动”;右侧状态栏全部变绿即表示服务就绪。在浏览器访问 http://localhost ,看到“phpstudy欢迎页”说明基础环境已通。
打开面板右上角“设置”→“PHP设置”,将PHP版本切换为7.4(兼容性最佳,避免高版本中废弃的mysql_connect函数报错);再点击“配置文件”→“php.ini”,用Ctrl+F搜索 `extension_dir`,确认路径指向 `ext` 文件夹且未被注释;最后搜索 `;extension=mysqli`,删掉前面的分号启用mysqli扩展——这一步不做,后续所有数据库连接都会失败。
立即学习“PHP免费学习笔记(深入)”;
创建会员系统数据库与用户表
会员系统依赖结构清晰的数据库支撑,不能直接用默认test库或root用户操作,必须新建专用库与最小权限账号,防止开发阶段误删系统表。
在phpstudy面板点击“数据库管理”→“public”(默认phpMyAdmin入口),登录用户名 root,密码为空;左侧导航栏点击“新建”,数据库名填 `member_system`,排序规则选 `utf8mb4_unicode_ci`(支持emoji和中文全角字符)。
点击刚建好的 `member_system` → “SQL”,粘贴以下建表语句并执行:
CREATE TABLE users (<br> id INT AUTO_INCREMENT PRIMARY KEY,<br> username VARCHAR(50) NOT NULL UNIQUE,<br> password VARCHAR(255) NOT NULL,<br> email VARCHAR(100) NOT NULL UNIQUE,<br> created_at DATETIME DEFAULT CURRENT_TIMESTAMP,<br> status TINYINT DEFAULT 1<br>);
注意:password字段长度设为255是为兼容bcrypt哈希(比md5更安全),若用旧式md5只需64位,但2026年已不推荐;【status字段值为1表示启用,0为禁用,后续登录验证必须校验此字段】。
实现注册功能:表单提交与数据入库
注册是会员系统第一道入口,必须同时满足前端校验防误输、后端过滤防注入、密码强哈希防泄露三重防护,缺一不可。
在phpstudy的WWW根目录(如 C:\phpstudy_pro\WWW\ )下新建文件夹 `member`,其内创建 `register.php`,写入HTML注册表单代码,表单method设为POST,action指向 `do_register.php`。
在同一目录下创建 `do_register.php`,按顺序执行以下操作:
① 启动会话并连接数据库:
session_start();<br>$conn = new mysqli("localhost", "root", "", "member_system");<br>if ($conn->connect_error) die("连接失败: " . $conn->connect_error);
② 获取并过滤输入:
用 `filter_var($_POST['email'], FILTER_SANITIZE_EMAIL)` 清洗邮箱;
用 `trim($_POST['username'])` 去除用户名首尾空格;
拒绝空用户名、非法邮箱格式、密码少于6位——任一不满足立即 `exit("注册失败:信息不合法")`。
③ 密码加密与插入:
使用 `password_hash($_POST['password'], PASSWORD_ARGON2ID)` 生成不可逆哈希(PHP 7.4+原生支持,比md5+盐值更可靠);
用预处理语句插入:
$stmt = $conn->prepare("INSERT INTO users (username, password, email) VALUES (?, ?, ?)");<br>$stmt->bind_param("sss", $user, $hash, $email);<br>$stmt->execute();执行成功后跳转至 `login.php`,失败则提示“用户名或邮箱已被注册”。
实现登录验证与会话保持
登录不是简单比对明文密码,而是要查库→验哈希→启会话→设状态→跳转,每步都影响安全性与用户体验。
创建 `login.php`,放置含 username/password 字段的POST表单,action 指向 `do_login.php`。
创建 `do_login.php`,执行以下两步核心逻辑:
方法一:传统mysqli流程
连接数据库后,用预处理语句查 `SELECT id, username, password, status FROM users WHERE username = ? OR email = ?`,绑定输入的账号值;
查到记录后,先判断 `status != 1` 则终止并提示“账号已被禁用”;
再用 `password_verify($_POST['password'], $row['password'])` 校验密码,通过则 `$_SESSION['user_id'] = $row['id']` 并 `header("Location: dashboard.php")`。
方法二:简化版(适合调试)
若暂不处理邮箱登录,可直接查 `WHERE username = ? AND status = 1`,减少一次数据库匹配;
【绝对禁止拼接SQL字符串,如 "WHERE username = '{$_POST['u']}'",这是SQL注入高危写法】。
构建首页仪表盘与退出机制
用户登录成功后必须进入有身份标识的页面,且能主动结束会话,否则Session残留会导致他人冒用。
创建 `dashboard.php`,顶部加入会话验证代码:session_start(); if (!isset($_SESSION['user_id'])) { header("Location: login.php"); exit; }
页面主体显示欢迎语:“欢迎回来,”,其中 `htmlspecialchars()` 防止XSS攻击,即使数据库被注入恶意脚本也不会执行。
添加退出链接 `退出登录`,对应 `https://www.php.cn/link/3eab15ca29e2eda700eee12aba312805` 内容仅三行:
session_start();<br>$_SESSION = [];<br>session_destroy();
之后跳转回 `login.php`。



















