paradox
4 سال پیش توسط paradox مطرح شد
5 پاسخ

تغییر رمز در php

سلام من به این شکل ویرایش کاربران تو php انجام دادم و به جواب رسیدم حالا میخام یه بخش درست کنم که اول رمز قدیمی نمایش بده بد رمز جدید و تکرا رمز جدید اضافه بشه مثل تصویر زیر، نمیدونم چطوری این کار انجام بدم نیاز به کمک و راهنمایی هست

رمز

<?php
if(isset($_GET['edit'])) {
    $id = $_GET['edit'] ;
    $query = mysqli_query($db,"SELECT * FROM users WHERE id=$id");
    $userInfo = mysqli_fetch_assoc($query);
?>

<div class="container" style="text-align: center;">
    <div class="row justify-content-center">
        <div class="col-xl-6">
            <form class="form-signin" action="user.php" method="post">
                <img class="mb-4" src="../image/edit.png" alt="" width="72" height="72">
                <h1 class="h3 mb-3 font-weight-normal" style="font-size: 20px;">ویرایش حساب کاربری</h1>
                <input type="hidden" name="edit-id" value="<?php echo $userInfo['id']; ?>">
                <label for="inputEmail" class="sr-only">Username</label>
                <input type="text" name="display-name" value="<?php echo $userInfo['display_name']; ?>"
                       id="inputEmail" class="form-control" placeholder="نام کاربری" required autofocus>
                <label for="inputEmail" class="sr-only">Email address</label>
                <input type="email" name="email" value="<?php echo $userInfo['email']; ?>" id="inputEmail"
                       class="form-control" placeholder="ایمیل" required>
                <label for="inputPassword" class="sr-only">Password</label>
                <input type="password" name="password" id="inputPassword1" class="form-control"
                       placeholder="کلمه عبور" required>

                <button class="btn btn-lg btn-primary" type="submit" name="edit-user">ویرایش حساب کاربری
                </button>
            </form>
        </div>
    </div>
</div>

<?php

 }

if(isset($_POST['edit-user'])) {
    $id = $_POST['edit-id'];
    $username = $_POST['display-name'];
    $email = $_POST['email'];
    $password = md5($_POST['password']);
    $editUser = mysqli_query($db,"UPDATE users SET display_name='$username' , email='$email' , password='$password' WHERE id=$id");

    if($editUser) {
        header("Location:user.php");
    }
}

?>

ثبت پرسش جدید
Muhammad
تخصص : Back-End Developer
@muhammad 4 سال پیش مطرح شد
0

سلام
در مرحله‌ی پردازش ریکوست ارسال شده، باید md5 اون پسورد قدیمی که کاربر وارد کرده رو با پسورد واقعی توی دیتابیس بسنجید، اگه برابر بود یعنی درست وارد کرده. البته استفاده از md5 برای پسورد پیشنهاد نمیشه، توی داکیومنتیشن PHP هم همین رو گفتن و دلیلشم واضحه.


paradox
@wxyz4367 4 سال پیش مطرح شد
-1

@muhammad
در واقع مثل ثبت نام کع شرط گذاشتم اینجا بگم اگه پسورد با تکرار پسورد برابر بود اپدیت انجام بشه؟


Muhammad
تخصص : Back-End Developer
@muhammad 4 سال پیش آپدیت شد
0

شما باید دو چیز مختلف رو هندل کنید:

  • اینکه پسورد جدید با تکرارش برابر باشه.
  • اینکه هش پسورد قدیمی با پسورد قدیمی که توی دیتابیسه همخوانی داشته باشه، برای این از passwordhash و passwordverify میشه استفاده کرد.

سبحان دادخواه
تخصص : دانشجوی برنامه نویسی :)
@SobhanDadkhah 4 سال پیش مطرح شد
1

سلام.
گزینه آخر باید پسورد قدیمی با هش پسورد قدیمی برابر باشه.
در واقع شما الان در حال حاضر پسورد کاربر رو ذخیره کردید که قطعا باید بصورت رمزنگاری شده ذخیره کنید. حالا وقتی کاربر رمز قدیمی رو وارد میکنه برای اینکه مطمئن بشید خودش میخواد رمزش رو عوض کنه و عملیات مخربی نیست باید از درست بودن پسورد قدیمی هم مطلع بشید. به این صورت که پسورد قدیمی وارد شده توی فرم ویرایش رو هش میکنید و با مقدار دیتابیس مقایسه میکنید.
مواردی که دوستمون گفتن همش صحیح بود فقط چون اشتباه تایپی داشتن من تصحیح کردم :

اینکه هش پسورد قدیمی با پسورد قدیمی که توی دیتابیسه همخوانی داشته باشه، برای این از password_hash و password_verify میشه استفاده کرد.


Muhammad
تخصص : Back-End Developer
@muhammad 4 سال پیش مطرح شد
1

ممنونم سبحان عزیز. @SobhanDadkhah


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام