راکت

مشکل در تغییر پسورد

15 پاسخ

سلام
برای تغییر پسورد کد زیر نوشتم
تغییر انجام میشه
فقط مشکلی که هست هر پسوردی جای پسورد قدیمی بزارم پسورد جدید عوض میشه


if(isset($_POST['sabt'])) {
    $id = $_POST['id'];
    $password = password_hash($_POST['pass'], PASSWORD_BCRYPT);
    $newPassword = password_hash($_POST['new-password'], PASSWORD_BCRYPT);
    $passwordConf = password_hash($_POST['password-conf'], PASSWORD_BCRYPT);

    $check =  mysqli_query($db , "SELECT * FROM users WHERE id = $id");

    if (password_verify($newPassword, $passwordConf)) {
        echo 'Password is valid!';
    } 
    else {

        $editUser = mysqli_query($db , "UPDATE users SET password ='$newPassword'  WHERE id=$id ");

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

        }
    }
}
ثبت پرسش جدید

پاسخ‌ها

15
ممدو
ممدو
@mamado

تخصص: در حال یادگیری ...

@wxyz4367 سلام دوست خوبم

اینو متوجه نشدم ، ولی فعلا از روی خود کدها یه ارور میبینم

فقط مشکلی که هست هر پسوردی جای پسورد قدیمی بزارم پسورد جدید عوض میشه

 $editUser = mysqli_query($db , 'UPDATE users SET password ="$newPassword"  WHERE id="$id" ');

تست کنید

paradox
paradox
@wxyz4367

@mamado
ممنون ازت
حل نشد

من سه تا input دارم
یکی مربوط به پسورد قدیمی میشه که تو دیتابیس ذخیره شده
دومی پسورد جدید
سومی هم تکرار پسورد

با کدی که نوشتم پسورد تغییر میکنه ولی مشکلی که دارم تو input مربوط به پسورد قدیمی هر چیزی میشه نوشت و اصلا به اینکه تو دیتابیس چه پسوردی ست شده کاری نداره
برای این مشکل چیکار کنم یا چه شرطی باید بزارم که پسورد تو دیتابیس رو چک کنه اگه درست بود اجازه تغییر پسورد داده بشه

شاید پاسخ شما همین‌جا باشد

سهیل ملکی
سهیل ملکی
@soheilsmg

تخصص: کارآموز برنامه نویسی

چک کردین که شرط بالا درسته یا نه ؟

paradox
paradox
@wxyz4367

@kuroshparsi11228
کدها رو بالا فرستادم نمیدونم کجاش مشکل داره

paradox
paradox
@wxyz4367

الان به این شکل نوشتم
فقط ارور زیر دارم

Fatal error: Uncaught Error: Cannot use object of type mysqli_result as array in C:\xampp\htdocs\amoozesh\paneladmin\index.php:161 Stack trace: #0 {main} thrown in C:\xampp\htdocs\amoozesh\paneladmin\index.php on line 161

if(isset($_POST['sabt'])) {
    $id = $_POST['id'];
    $password = $_POST['password'];
    $newPassword = $_POST['new-password'];
    $passwordConf = $_POST['password-conf'];

    $check =  mysqli_query($db , "SELECT * FROM users WHERE id = $id");

    if (password_verify($password, $check['password'])) {
        $editUser = mysqli_query($db , "UPDATE users SET password ='$newPassword'  WHERE id=$id ");

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

        echo 'Password is invalid!';

        }
    }
}
paradox
paradox
@wxyz4367

دوستان میشه راهنمایی کنید ضروریه

milad
milad
@milad.rahimi2266

تخصص: learning about laravel

@wxyz4367
سلام, به نظرم شما یک متغییر تعریف کنید که یک کوئری بگیره و تمام رکورد های آیدی وارد شده رو بیاره

milad
milad
@milad.rahimi2266

تخصص: learning about laravel

کدهاتون را الان دیدم شما fetch بگیر از متغییر $check و شرط جدید بزار

    $answer = mysqli_fetch_array($check);
milad
milad
@milad.rahimi2266

تخصص: learning about laravel

شری مد نظر باید چک کنه کع آیا پسورد قدیمی که وارد شده با رکورد قسمت فتچ برابر هست یا نه اگر هست که کوئری جدید اجرا بشه و اگر نیست که ارور لازم و بده

    if($password ==$answer['password']){
mysqli_query($db, "update users set password = {$newpassword} where id = $id;

امیدوارم به کارت بیاد

paradox
paradox
@wxyz4367

@milad.rahimi2266
سلام ممنون
به این شکل نوشتم فقط مشکلی که هست پسورد که عوض میکنه دیگه هش شده ذخیره نمیکنه تو دیتابیس


if(isset($_POST['sabt'])) {
    $id = $_POST['id'];
    $password = $_POST['password'];
    $newPassword = $_POST['new-password'];
    $passwordConf = $_POST['password-conf'];

    if($newPassword == $passwordConf)
{

  $check =  mysqli_query($db , "SELECT * FROM users WHERE id = $id");

  $user = mysqli_fetch_assoc($check);

  if (password_verify($password, $user['password'])) {

        $editUser = mysqli_query($db , "UPDATE users SET password ='$newPassword'  WHERE id=$id ");
        if($editUser){
        header("Location:index.php");
    } 
}
else {
        echo 'Password is invalid!';
        }
    }
}
paradox
paradox
@wxyz4367

دوستان میشه راهنمایی کنید ضررویه

فرشید مرادی
فرشید مرادی
@eniack

تخصص: noob

سلام ، این کد رو جایگزین کنید

$password = password_hash($_POST['pass'], PASSWORD_BCRYPT);
    $newPassword = password_hash($_POST['new-password'], PASSWORD_BCRYPT);
    $passwordConf = password_hash($_POST['password-conf'], PASSWORD_BCRYPT);
paradox
paradox
@wxyz4367

@eniack
ممنون اینکارو انجام دادم ولی متاسفانه پسورد عوض نمیشه تو این حالت
پسورد اولی رو بدون هش قرار دادم باز هم موفق نشدم

فرشید مرادی
فرشید مرادی
@eniack

تخصص: noob

if(isset($_POST['sabt'])) {
    $id = $_POST['id'];
    $password = $_POST['password'];
    $newPassword = $_POST['new-password'];
    $passwordConf = $_POST['password-conf'];

    if($newPassword == $passwordConf)
{

  $check =  mysqli_query($db , "SELECT * FROM users WHERE id = $id");

  $user = mysqli_fetch_assoc($check);

  if (password_verify($password, $user['password'])) {
    $newPassword = password_hash($newPassword, PASSWORD_BCRYPT);
        $editUser = mysqli_query($db , "UPDATE users SET password ='$newPassword'  WHERE id=$id ");
        if($editUser){
        header("Location:index.php");
    } 
}
else {
        echo 'Password is invalid!';
        }
    }
}
paradox
paradox
@wxyz4367

@eniack
اصلا هیچ تغییری اعمال نمیشه 😥 هیچ اتفاقی نیفتاد

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

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