修改wordpress数据库中的用户密码

时间:2021-05-20 10:37:09

标签: php html mysql

我强迫用户在第一次在 wordpress 中访问网站时更改密码。 在表 wp_users 中,我添加了此字段 status tinyint(1) NOT NULL DEFAULT -1。 当用户登录时,我查询数据库,如果状态字段为-1,则显示更改密码的表单如下:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<php
if($_SESSION['status'] == '-1'): ?>

<div class="alteracao">
    <form class="alteracao-signin">       
        <h2 class="alteracao-signin-heading">Tem de alterar a sua senha.</h2>
        <input type="password" class="form-control" name="senha" id="senhaatual"  placeholder="Senha Atual" required=""/>
        <input type="password" class="form-control" name="senha" id="senhanova" placeholder="Nova Senha" required=""/> 
        <input type="password" class="form-control" name="senha" id="senhaconfir" placeholder="Confirmar Senha" required=""/>
        <button class="btn btn-lg btn-primary btn-block" type="button" onclick="inserir_senha();">Alterar</button>   
    </form>
</div> 

<?php endif; ?>

然后更改数据库中的密码我是这样做的:

$senhaatual = $_POST["senhaatual"];
$senhanova = $_POST["senhanova"];
$senhaconfir = $_POST["senhaconfir"];
$status = '1';
$id_util = $_SESSION['usuarioId'];

$senhafinal = password_hash($senhanova, PASSWORD_DEFAULT);

    $query = 'UPDATE wp_inf.inf_users SET user_pass= ?, status= ? WHERE ID = ? '; 
    $conn->prepare($query)->execute([$senhafinal, $status, $id_util]);

它不会在浏览器控制台中返回任何错误,但不会更新数据库中的数据。

你能帮忙吗?

1 个答案:

答案 0 :(得分:1)

所有这些密码变量都是空的。

$senhaatual = $_POST["senhaatual"];
$senhanova = $_POST["senhanova"];
$senhaconfir = $_POST["senhaconfir"];

这是因为您的 HTML 中没有包含 name="senhaatual"name="senhanova"name="senhaconfir" 的元素。

Plus form 没有 method="post",默认通过 GET 方法发送。

工作代码是

<form method="post">
    ...
    <input type="password" class="form-control" name="senhaatual" id="senhaatual"  placeholder="Senha Atual" required=""/>
    <input type="password" class="form-control" name="senhanova" id="senhanova" placeholder="Nova Senha" required=""/> 
    <input type="password" class="form-control" name="senhaconfir" id="senhaconfir" placeholder="Confirmar Senha" required=""/>
    ...
</form>