给下面代码增加一个用户可以修改密码的功能 <?php require './common/init.php'; require './common/function.php'; session_start(); if($_SESSION['username']){ echo "下午好!{$_SESSION['username']}<br>"; echo "<a href='xiugai.php'>修改密码</a><br>"; } else { echo "<a href='login.php'>登录</a><br>"; echo "<a href='reg.php'>注册</a><br>"; } // 获取当前页码 $page = max(input('get', 'page', 'd'), 1); // 每页显示的条数 $size = 4; $sql = 'SELECT count(*) FROM `wish`'; if (!$res = mysqli_query($link, $sql)) { exit("SQL[$sql]执行失败:" . mysqli_error($link)); } $total = (int) mysqli_fetch_row($res)[0]; // 查询所有愿望 $sql = 'SELECT `id`,`name`,`content`,`time`,`color` FROM `wish` ORDER BY `id` DESC LIMIT ' . page_sql($page, $size); if (!$res = mysqli_query($link, $sql)) { exit("SQL[$sql]执行失败:" . mysqli_error($link)); } $data = mysqli_fetch_all($res, MYSQLI_ASSOC); mysqli_free_result($res); // 查询结果为空时,自动返回第1页 if (empty($data) && $page > 1) { header('Location: ./index.php?page=1'); exit; } // 编辑或删除愿望 $id = max(input('get', 'id', 'd'), 0); $action = input('get', 'action', 's'); if ($id) { $password = input('post', 'password', 's'); $sql = 'SELECT `name`,`content`,`color`,`password` FROM `wish` WHERE `id`=' . $id; if (!$res = mysqli_query($link, $sql)) { exit("SQL[$sql]执行失败:" . mysqli_error($link) . $sql); } if (!$edit = mysqli_fetch_assoc($res)) { exit('该愿望不存在!'); } mysqli_free_result($res); $checked = isset($_POST['password']) || empty($edit['password']); if ($checked && $password !== $edit['password']) { $tips = '密码不正确!'; $checked = false; } // 删除愿望 if ($checked && $action == 'delete') { $sql = 'DELETE FROM `wish` WHERE `id`=' . $id; if (!mysqli_query($link, $sql)) { exit('SQL执行失败:' . mysqli_error($link)); } header('Location: ./index.php'); exit; } } mysqli_close($link); require './view/index.html';
时间: 2023-08-13 16:03:56 浏览: 101
首先,需要在页面上添加一个修改密码的表单,包括原密码、新密码和确认新密码三个输入框,以及一个提交按钮。可以在原有的代码中添加以下代码段:
```html
<form action="modify_password.php" method="post">
<label for="old_password">原密码:</label>
<input type="password" id="old_password" name="old_password" required><br>
<label for="new_password">新密码:</label>
<input type="password" id="new_password" name="new_password" required><br>
<label for="confirm_password">确认新密码:</label>
<input type="password" id="confirm_password" name="confirm_password" required><br>
<input type="submit" value="提交">
</form>
```
然后,需要创建一个新的 PHP 文件 `modify_password.php`,用于处理修改密码的逻辑。可以在该文件中添加以下代码:
```php
<?php
require './common/init.php';
require './common/function.php';
session_start();
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$old_password = input('post', 'old_password', 's');
$new_password = input('post', 'new_password', 's');
$confirm_password = input('post', 'confirm_password', 's');
if ($new_password !== $confirm_password) {
exit('两次输入的新密码不一致!');
}
$sql = "SELECT `password` FROM `user` WHERE `username`='{$_SESSION['username']}'";
if (!$res = mysqli_query($link, $sql)) {
exit("SQL[$sql]执行失败:" . mysqli_error($link));
}
$password = mysqli_fetch_row($res)[0];
mysqli_free_result($res);
if ($old_password !== $password) {
exit('原密码不正确!');
}
$sql = "UPDATE `user` SET `password`='{$new_password}' WHERE `username`='{$_SESSION['username']}'";
if (!mysqli_query($link, $sql)) {
exit("SQL[$sql]执行失败:" . mysqli_error($link));
}
echo '密码修改成功!';
} else {
header('Location: ./index.php');
exit;
}
```
在该文件中,首先获取用户输入的原密码、新密码和确认新密码,并进行验证,确保两次输入的新密码一致,原密码正确等。然后,通过 SQL 语句更新用户的密码,并输出修改成功的提示。注意,为了保证安全性,需要对用户输入的密码进行加密存储。最后,需要在 `index.php` 文件中添加一个链接,指向新的修改密码页面。可以在原有的代码中添加以下代码段:
```php
echo "<a href='modify_password.php'>修改密码</a><br>";
```
这样,用户就可以通过该链接进入修改密码页面,修改自己的密码。
阅读全文