簡體   English   中英

如何使PHP代碼檢查插入的當前密碼是否是MySQL數據庫中的正確密碼

[英]How to make PHP code check if inserted current password is correct password from MySQL database

我正在制作網站設置表格,用戶可以在其中更改密碼和電子郵件地址。

我的代碼如下:

<meta charset="UTF-8"/>
<?php
include_once 'init/init.funcs.php';

$kehtiv_parool=mysql_real_escape_string($_POST['kehtiv_parool']);
$kehtiv_parool_uuesti=mysql_real_escape_string($_POST['kehtiv_parool_uuesti']);
$uus_parool=mysql_real_escape_string($_POST['uus_parool']);
$kinnita_uus_parool=mysql_real_escape_string($_POST['kinnita_uus_parool']);
$email=mysql_real_escape_string($_POST['email']);
$userid=$_SESSION['user'];
$current_password = mysql_query("SELECT parool FROM kasutajad WHERE kasutaja_id ='$userid'");


if ($kehtiv_parool==$kehtiv_parool_uuesti){
    if ($kehtiv_parool==$current_password){
        if ($uus_parool==$kinnita_uus_parool){
            mysql_query ("UPDATE kasutajad SET parool='$uus_parool' WHERE kasutaja_id='$userid'");
            echo "parool muudetud";
            }

        if (!empty($_POST['email'])){
            mysql_query ("UPDATE kasutajad SET e_mail='$email' WHERE kasutaja_id='$userid' ");
            echo "e-mail muudetud";
    }
    }
    else
        echo "Sisestatud kehtiv parool ei ole korrektne";

}
else
    echo "Sisestatud kehtivad paroolid ei kattu";

?>

當我刪除一些代碼時,它可以工作:

<meta charset="UTF-8"/>
<?php
include_once 'init/init.funcs.php';

$kehtiv_parool=mysql_real_escape_string($_POST['kehtiv_parool']);
$kehtiv_parool_uuesti=mysql_real_escape_string($_POST['kehtiv_parool_uuesti']);
$uus_parool=mysql_real_escape_string($_POST['uus_parool']);
$kinnita_uus_parool=mysql_real_escape_string($_POST['kinnita_uus_parool']);
$email=mysql_real_escape_string($_POST['email']);
$userid=$_SESSION['user'];
$current_password = mysql_query("SELECT parool FROM kasutajad WHERE kasutaja_id ='$userid'");


if ($kehtiv_parool==$kehtiv_parool_uuesti){
        if ($uus_parool==$kinnita_uus_parool){
            mysql_query ("UPDATE kasutajad SET parool='$uus_parool' WHERE kasutaja_id='$userid'");
            echo "parool muudetud";


        if (!empty($_POST['email'])){
            mysql_query ("UPDATE kasutajad SET e_mail='$email' WHERE kasutaja_id='$userid' ");
            echo "e-mail muudetud";
    }
    }
    else
        echo "Sisestatud kehtiv parool ei ole korrektne";

}
else
    echo "Sisestatud kehtivad paroolid ei kattu";

但是現在它不會檢查插入的舊密碼是否是用戶的正確密碼,如何編寫此代碼才能使其正常工作? 變量kehtiv_parool保持用戶以html格式插入的當前密碼的值,而kehtiv_parool_uuesti是同一件事的確認。

我的HTML如下:

<html>
<head>
<meta charset="UTF-8"/>
<title>Seaded</title>
</head>
<body>
<p>Täida väljad, mida soovid muuta</p>
<form action="seaded.php" method="POST">
<br>Uus parool<input type="password" name="uus_parool"> <br>

<br>Kinnita uus parool <input type="password" name="kinnita_uus_parool">
<br>

<br>e-mail             <input type="text" name="email"><br>
<hr>
<br>Sisesta kehtiv parool <input type="password" name="kehtiv_parool"><br>

<br>Sisesta kehtiv parool uuesti <input type="password" name="kehtiv_parool_uuesti"><br>


<input type="submit" value="Kinnita">

</form>



</body>
</html>

您可以在登錄到數據庫的會話中添加加密的pw,然后在每一頁上檢查加密的pw,然后等到該頁面繼續操作,否則清除會話並重定向到索引頁(例如登錄名)頁)

您需要調用mysql_fetch_assoc以獲取查詢返回的行。

$current_password_result = mysql_query("SELECT parool FROM kasutajad WHERE kasutaja_id ='$userid'");
$current_password_row = mysql_fetch_assoc($current_password_result);
$current_password = $current_password_row ? $current_password_row['parool'] : null;

if ($kehtiv_parool==$kehtiv_parool_uuesti){
    if ($kehtiv_parool===$current_password){

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM