php - 如何使用 PASSWORD() 函数加密变量?
问题描述
我正在为我的网站使用“更改密码”表单,但我不知道如何加密用户输入的变量,“old_pw”更具体,因为稍后在代码中我必须将它与密码进行比较在数据库中。我知道当我创建一个帐户时,例如,在 mysqli_query 我可以使用 PASSWORD('$users_password') 并为我的数据库加密它。所以,我认为我需要一种方法来加密用户在网站上输入的 old_pw 以匹配数据库中的密码加密。如果我的英语或我的解释不够好,我深表歉意。
我的数据库的图片:
<?php
session_start();
include('config.php');
$user = $_SESSION['login'];
if ($user) {
//user is logged in
if (isset($_POST['submit'])){
$old_pw = mysqli_real_escape_string($conn,$_POST['oldpw']);
$new_pw = mysqli_real_escape_string($conn,$_POST['new_password']);
$new_pw2 = mysqli_real_escape_string($conn,$_POST['new_password2']);
$query = mysqli_query($conn, "SELECT password FROM account WHERE login='$user'") or die();
$row = mysqli_fetch_assoc($query);
$oldpwdb = $row['password'];
echo"$old_pw/$oldpwdb";
//verify if old password from db is the same with old_password that the user has just inputed.
if ($old_pw == $oldpwdb) {
// seccond verify -> verifing if the two new passwords are the same.
if ($new_pw == $new_pw2) {
echo"Succes";
}
else{
die("The two passwords are not the same");
}
}
else{
echo"old pw from db doesnt match old pw from user input";
}
}
}
else{
die("Trebuie sa fii logat ca sa schimbi parola.");
}
?>
<!DOCTYPE html>
<html>
<head lang="ro">
<!-- adaugare font -->
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous">
<link href="https://fonts.googleapis.com/css?family=Merriweather+Sans&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Caveat&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Rubik&display=swap" rel="stylesheet">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Galaxy | Schimbare parolă</title>
<meta name="description" content="Pagina oficiala Metin2Galaxy @2020">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="../css/style.css">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<link rel="icon" href="../images/icon.png">
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
</head>
<body>
<section id="nav-bar">
<nav class="navbar navbar-expand-lg navbar-light">
<a class="navbar-brand"><img src="../images/logo.png" alt="logo"></a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<i class="fas fa-bars"></i>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav mx-auto">
<li class="nav-item">
<a class="nav-link active" href="welcome.php">Panou utilizator</a>
</li>
<li class="nav-item">
<a class="nav-link" href="schimbare_parola.php"><span id="active">Schimba parola</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="logout.php">Log Out</a>
</li>
</ul>
</div>
</nav>
</section>
<!------------------------------------Text despre----------------------------------->
<section id="banner">
<div class="container">
<div class="row">
<div class="col">
<h1>Schimbare parola</h1>
<h2 id="h2_welcome">Completeaza campurile libere pentru a-ti schimba parola.</h2>
<form method="post" action="schimbare_parola.php" autocomplete="off">
<label for="oldpw"><b>Parola actuala</b></label>
<input name="oldpw" maxlength="16" placeholder="Introdu parola actuala a contului" required type="password" autocomplete="new-password" />
<label for="new_password"><b>Parola noua</b></label>
<input name="new_password" maxlength="16" placeholder="Introdu noua parola a contului" required type="password" autocomplete="new-password" />
<label for="new_password2"><b>Repeta parola noua</b></label>
<input name="new_password2" maxlength="16" placeholder="Introdu noua parola a contului din nou" required type="password" autocomplete="new-password" />
<input type="submit" value="Schimba parola" name="submit" class="registerbtn" />
<hr>
</form>
</div>
</div>
</div>
</section>
解决方案
推荐阅读
- java - Android 应用程序模块中 JUnit 测试中的类的 java.lang.ClassNotFoundException
- python - 计算二维 numpy 数组上移动窗口中整数的出现次数
- sql - oracle中解码语句中的子查询
- riscv - 关于“jump”和“jump and link”翻译的问题
- jquery - 工具提示在追加中丢失了样式
- regex - 我可以使用反向引用作为关联数组键吗?
- html - 从模板调用views.py中的方法
- sql - 比较不同数据类型的日期
- oracle - 在 Oracle 中,我想创建一个“路由接口”,它根据参数插入到单独的表中
- excel - 获得#价值!工作表上的错误,但 VBA 测试子返回它应该返回的内容