一,引言 再连接MySQL数据库时,我们的先为我们的登录页面作一些逻辑判断, 这样更加方便存储我们想要的数据,也提高了数据的安全性。 因此,我们得为我们的前端代码添加一些PHP逻辑判断代码,如下;如图红色字体的提示符,就是我们需要的效果,像这种逻辑判断给我们带来的好处有: 1.1 提升用户体验 即时反馈:当用户输入不符合格式要求时,能立刻收到提示,无需提交表单后才发现错误。 比如注册邮箱时,若格式不对,可即时修正,避免重复操作,节省时间,让注册流程更顺畅。 减少挫败感:若用户反复因格式错误注册失败,会产生挫败感甚至放弃注册。 格式判断及时提示,能降低这种负面情绪,提升用户对产品的好感度。 1.2 保证数据质量 数据准确性:确保收集到的数据符合规范,如手机号格式正确,后续短信验证等功能才能正常使用; 邮箱格式正确,才能准确发送激活邮件等,保证业务流程顺利进行。 数据一致性:使数据库中存储的数据格式统一,便于后续数据管理、分析和处理。 比如用户生日按统一格式存储,统计年龄分布等操作会更便捷。 1.3 增强系统安全性 防止恶意输入:可拦截一些恶意的特殊字符输入,避免 SQL 注入、跨站脚本攻击(XSS)等安全风险。 例如对用户名、密码等输入进行格式判断,阻止非法字符,保障系统安全。 二,代码升级 2.1 像这种效果我们仅需在代码里添加php逻辑代码,将它添加至前端代码的 <head> </head> 里;
2.2 php代码如下:
<?php$user = a($_POST[‘user’]);$pwd = a($_POST[‘pwd’]);$qrpwd = a($_POST[‘qrpwd’]);$phone = a($_POST[‘phone’]);$usernull = $pwdnull = $qrpwdnull = $phonenull = “”;//isset 判断是否接受前端数据提交;if (isset($_POST[‘submit’])) {//empty 判断变量是否为空;if (!empty($user)) {if (!preg_match(“/^[a-zA-Z0-9_]{3,16}$/”, $user)) {$usernull = “用户名格式不正确!”;} else if (!empty($pwd)) {if (!preg_match(“/^[a-zA-Z0-9_]{3,16}$/”, $pwd)) {$pwdnull = “密码格式有问题!”;} else if (!empty($qrpwd)) {if (!($pwd == $qrpwd)) {$qrpwdnull = “两次密码不一致!”;} else if (!empty($phone)) {if (!preg_match(“/^1[0-9]{2,3}[-]?\d{7,8}$/”, $phone)) {$phonenull = “手机号有问题!”;}} else {$phonenull = “请输入11位手机号”;}} else {$qrpwdnull = “确认密码不能为空”;}} else {$pwdnull = “密码不能为空”;}} else {$usernull = “用户名不能为空”;}}function a($abc){$abc = trim($abc);$abc = stripcslashes($abc);$abc = htmlspecialchars($abc);return $abc;}?>2.3 以上代码解释;$user = a($_POST[‘user’]);$pwd = a($_POST[‘pwd’]);$qrpwd = a($_POST[‘qrpwd’]);$fhone = a($_POST[‘fhone’]);这段代码主要从 $_POST 超全局数组中获取用户通过表单提交的数据,
然后调用函数 a 对这些数据进行处理,
最后将处理后的数据分别赋值给变量 $user、$pwd、$qrpwd 和 $phone。$usernull = $pwdnull = $qrpwdnull = $phonenull = ""; 这行 PHP 代码 $usernull = $pwdnull = $qrpwdnull = $phonenull = ""; 是在同时初始化多个变量,并将它们的值都设置为空字符串。 然后在php逻辑代码里变量赋值自己想要的值,则可输出想要的前端页面提升;并且,我们还得在前端代码里添加一些php代码,如图下所示: 1. <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>" method="post" autocomplete="on"> 此代码是 HTML 表单标签 <form>,用于创建一个 HTML 表单,使用户能够向服务器提交数据。 该表单会把数据以 POST 方法发送到当前页面。 2. <span style="color: red; font-size: 15px;"><?php echo 你对应的变量名; ?></span> 输出上图你变量赋的值,让它输出在你的前端页面你想显示的位置,小白跟着写就好了;
$usersql = “select username from user where username = ‘$user'”;$sqllj = mysqli_query($conn, $usersql);$userarr = mysqli_fetch_row($sqllj);这行代码是mysql的内容,$usersql 意思是查找名为username的字段,来自user表,并判断username等于前端接收的$user变量数据;$sqllj 意思是连接数据库并执行;$userarr 意思是将数据库里的所有字段转化为数组形式;function a($abc){ $abc = trim($abc); $abc = stripcslashes($abc); $abc = htmlspecialchars($abc); return $abc; } 这是一个函数; 该函数接收一个字符串参数 $abc,并对其执行以下三步处理: 去除首尾空白字符:使用 trim() 函数去除字符串开头和结尾的空白字符, 像空格、制表符、换行符等。 去除反斜杠转义字符: 运用 stripcslashes() 函数去除字符串中的反斜杠转义字符,例如将 \' 还原为 '。 转换特殊字符为 HTML 实体:利用 htmlspecialchars() 函数把字符串里的 特殊字符(如 <、>、& 等)转换为对应的 HTML 实体(如 <、>、&), 避免在 HTML 页面中出现解析错误或引发 XSS 攻击; 三,PHP及MySQL所有代码配置 3.1 我们回到PHP前端链接mysql数据库教程(一)的第三步的3.1步骤, 在D:\phpstudy_pro\WWW文件创建三个文件名: 1,database.php --- 用于接收连接MySQL;(将MySQL连接源代码写在一个文件里,方便所有文件代码引用) 2,dl.php --- 前端登录的PHP页面;(测试我们注册的账号及密码是否成功) 3,grzx.php --- 前端个人中心展示PHP页面(学习升级将我们注册的账号密码进行一个修改)3.2 三个文件建好之后,我们分别复制对应的代码至对应的文件;代码如下: 3.2.1 复制以下代码至 database.php ; <?php $conn = mysqli_connect("127.0.0.1","root","777777") or die("数据库链接失败!"); $select = mysqli_select_db($conn,"login"); mysqli_query($conn,"set name 'utf8'"); ?> 3.2.2 复制以下代码至 dl.php ;
<!DOCTYPE html>
<html lang=”en”><head>
<meta charset=”UTF-8″>
<meta name=”viewport” content=”width=device-width, initial-scale=1.0″>
<link rel=”stylesheet” href=”login.css”>
<link rel=”icon” href=”/img/icon.png”>
<title>登录</title><?php
include(“database.php”);
$user = a($_POST[‘user’]);
$pwd = a($_POST[‘pwd’]);
$phone = a($_POST[‘phone’]);$sql = “select password from user where username = ‘$user'”;
$sqllj = mysqli_query($conn, $sql);
$sqlarr = mysqli_fetch_row($sqllj);
if (!empty($sqlarr) && $sqlarr[0] == $pwd) {
echo “<script>alert(‘登录成功’); window.location.href = ‘grzx.php?username=$user'</script>”;
} else if($sqlarr[0] != $pwd) {
echo “<script>alert(‘账号或密码错误!’);</script>”;
}function a($abc){
$abc = trim($abc);
$abc = stripcslashes($abc);
$abc = htmlspecialchars($abc);
return $abc;
}
?></head>
<style>
</style>
<body>
<div class=”login”>
<h1>登录</h1>
<form action=”<?php echo htmlspecialchars($_SERVER[‘PHP_SELF’]) ?>” method=”post” autocomplete=”on”>
<table>
<tr>
<td>
<input type=”text” name=”user” placeholder=”用户名” value=”<?php echo $user; ?>”>
<span style=”color: red; font-size: 15px;”>
</td></tr>
<tr>
<td>
<input type=”password” name=”pwd” placeholder=”密码” value=”<?php echo $pwd; ?>”>
<span style=”color: red; font-size: 15px;”>
</td></tr>
<tr>
<td><input type=”submit” name=”submit” class=”zhuce” value=”登录”></td>
</tr>
</table>
<h5>没有账号?<a href=”login.php”>注册</a></h5>
</form>
</div>
</body></html>
3.2.3 复制以下代码至 grzx.php ;
<!DOCTYPE html>
<html lang=”en”><head>
<meta charset=”UTF-8″>
<meta name=”viewport” content=”width=device-width, initial-scale=1.0″>
<link rel=”stylesheet” href=”login.css”>
<title>Document</title>
<?php
include(“database.php”);
$username = a($_GET[‘username’]);
$sql = “select * from user where username = ‘$username'”;
$sqllj = mysqli_query($conn, $sql);
$sqlarr = mysqli_fetch_row($sqllj);if (isset($_POST[‘submit’])) {
$pwd = a($_POST[‘pwd’]);
$phone = a($_POST[‘phone’]);
$updatesql = “UPDATE user SET password = ‘$pwd’, phone = ‘$phone’where username = ‘$username'”;
$sqllj = mysqli_query($conn, $updatesql);
}function a($abc)
{
$abc = trim($abc);
$abc = stripcslashes($abc);
$abc = htmlspecialchars($abc);
return $abc;
}
?></head>
<body>
<div class=”login”>
<h1>个人中心</h1>
<form action=”#” method=”post” autocomplete=”on”>
<table>
<tr>
<td>
<h2> 欢迎<?php echo $username; ?>用户</h2>
</td><tr>
<td>
<h3>您的手机是:<?php echo $sqlarr[3]; ?></h3>
</td>
</tr><tr>
<td>
<h3>您的原密码是:<?php echo $sqlarr[2]; ?></h3>
</td>
</tr>
</tr><tr>
<td>
修改密码:<input type=”password” name=”pwd” placeholder=”确认密码”>
</td>
</tr>
<tr>
<td>
修改手机:<input type=”text” name=”phone” placeholder=”手机号”>
</td>
</tr>
<tr>
<td><input type=”submit” name=”submit” class=”zhuce” value=”修改”></td>
</tr>
</table>
<h5><a href=”dl.php”>退出账号</a></h5>
</form>
</div>
</body></html>
ok,今天就到此为止了,明天就正式进入MySQL连接PHP的教学,谢谢支持!
2025.4.19
@7sirCN论坛