欢迎访问宙启技术站
智能推送

PHP加密解密函数应用实验

发布时间:2023-06-25 19:30:20

PHP加密解密函数应用实验

实验目的:

掌握PHP中加密解密函数的使用方法,设计一个简单的加密解密应用程序。

实验环境:

PHP、MySQL

实验内容:

1.设计一个用户注册页面,包括用户名、密码、确认密码、邮箱等信息。

2.注册成功后,将用户信息存储到MySQL数据库中,密码经过加密后存储。

3.设计一个用户登录页面,用户在该页面登录时需要输入用户名和密码,系统将根据用户名从MySQL中获取用户信息,并对比密码的正确性,若密码正确,则登录成功,否则提示密码错误。

4.为用户信息页增加修改密码的功能,用户在该页面可以修改已有的密码,修改后的密码需要再次经过加密后存储。

实验步骤:

1.设计用户注册页面,包括用户名、密码、确认密码、邮箱等信息。

在网页上增加表单,用于输入用户名、密码、确认密码和邮箱等信息,并提交给服务器端进行处理。其中,密码和确认密码要求一致,否则提示“两次输入密码不一致”。代码如下:

<form action="register.php" method="post">
    <label>用户名:</label><input type="text" name="username"/><br/>
    <label>密码:</label><input type="password" name="password"/><br>
    <label>确认密码:</label><input type="password" name="confirm"/><br>
    <label>邮箱:</label><input type="text" name="email"/><br>
    <input type="submit" value="注册"/>
</form>

2.注册成功后,将用户信息存储到MySQL数据库中,密码经过加密后存储。

在register.php中进行表单数据的获取、密码的加密和数据库的存储。密码的加密可以使用md5函数。代码如下:

$username = $_POST['username']; // 获取用户名
$password = md5($_POST['password']); // 获取密码并进行md5加密
$email = $_POST['email']; // 获取邮箱
 
// 判断两次输入的密码是否一致
if ($_POST['password'] != $_POST['confirm']) {
    echo '两次输入密码不一致';
    exit;
}
 
// 连接数据库
$conn = mysqli_connect('localhost', 'root', 'root', 'test');
if (!$conn) {
    echo '数据库连接失败' . mysqli_connect_error();
    exit;
}
 
// 插入用户信息
$sql = "insert into users (username,password,email) values ('$username','$password','$email')";
if (mysqli_query($conn, $sql)) {
    echo '注册成功';
} else {
    echo '注册失败:' . mysqli_error($conn);
}
 
// 关闭数据库连接
mysqli_close($conn);

此时,已经完成了用户的注册功能,并且将密码进行了加密存储。

3.设计一个用户登录页面,根据用户名从MySQL中获取用户信息,并对比密码的正确性,若密码正确,则登录成功,否则提示密码错误。

在网页上增加表单,用于输入用户名、密码,并提交给服务器端进行处理。服务器端需要根据用户名查询MySQL中的用户信息,并对比密码的正确性。如果用户名不存在,则提示“用户名不存在”。如果密码不正确,则提示“密码错误”。如果用户名和密码均正确,则提示“登录成功”。代码如下:

<form action="login.php" method="post">
    <label>用户名:</label><input type="text" name="username"/><br/>
    <label>密码:</label><input type="password" name="password"/><br>
    <input type="submit" value="登录"/>
</form>

在login.php中,获取表单数据并查询MySQL中的用户信息,代码如下:

$username = $_POST['username']; // 获取用户名
$password = md5($_POST['password']); // 获取密码并进行md5加密
 
// 连接数据库
$conn = mysqli_connect('localhost', 'root', 'root', 'test');
if (!$conn) {
    echo '数据库连接失败' . mysqli_connect_error();
    exit;
}
 
// 查询用户信息
$sql = "select * from users where username='$username'";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) == 0) {
    echo '用户名不存在';
} else {
    $row = mysqli_fetch_assoc($result);
    if ($row['password'] != $password) {
        echo '密码错误';
    } else {
        echo '登录成功';
    }
}
 
// 关闭数据库连接
mysqli_close($conn);

此时,已经完成了用户的登录功能。

4.为用户信息页增加修改密码的功能,用户在该页面可以修改已有的密码,修改后的密码需要再次经过加密后存储。

在用户信息页中增加修改密码的表单,并提交给服务器端进行处理。服务器端需要对比用户输入的旧密码,如果正确,则将新密码进行加密并更新到MySQL中;否则提示“旧密码错误”。代码如下:

<form action="changepwd.php" method="post">
    <label>旧密码:</label><input type="password" name="oldpassword"/><br>
    <label>新密码:</label><input type="password" name="newpassword"/><br>
    <input type="submit" value="修改密码"/>
</form>

在changepwd.php中,获取表单数据并对比旧密码,如果旧密码正确,则对新密码进行加密并更新到MySQL中;否则提示“旧密码错误”。代码如下:

$oldpassword = md5($_POST['oldpassword']); // 获取旧密码并进行md5加密
$newpassword = md5($_POST['newpassword']); // 获取新密码并进行md5加密
 
// 连接数据库
$conn = mysqli_connect('localhost', 'root', 'root', 'test');
if (!$conn) {
    echo '数据库连接失败' . mysqli_connect_error();
    exit;
}
 
// 查询用户信息
$sql = "select * from users where username='$username'";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_assoc($result);
if ($row['password'] != $oldpassword) {
    echo '旧密码错误';
} else {
    // 更新密码
    $sql = "update users set password='$newpassword' where username='$username'";
    mysqli_query($conn, $sql);
    echo '密码修改成功';
}
 
// 关闭数据库连接
mysqli_close($conn);

此时,已经完成了用户的修改密码功能。

实验总结:

本次实验主要是学习了加密解密函数在PHP中的应用,包括如何使用md5函数进行密码的加密和如何使用MySQL存储加密后的密码。同时,在用户登录和修改密码的功能中也学习了如何根据用户名从MySQL中查询用户信息,并对比密码的正确性。在实现过程中,需要注意密码的加密和解密,以及数据库连接等方面的问题。