paradox
3 سال پیش توسط paradox مطرح شد
22 پاسخ

عوض کردن پسورد در php

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

<?php
require_once '../config/config.php';
?>
   <div class="row">
        <div class="col-lg-12">
            <section class="panel">
                <header class="panel-heading">
                    لیست اعضا

                </header>
                <table class="table table-striped border-top" id="sample_1">
                    <thead>
                        <tr>
                            <th>#</th>
                            <th>پسورد</th>
                            <th>عملیات</th>
                        </tr>
                    </thead>
                    <tbody>

                        <?php
                        $query = mysqli_query($db, "SELECT * FROM users ORDER BY id desc");
                        while ($row = mysqli_fetch_assoc($query)) {

                        ?>
                            <tr>
                                <th><?php echo $row["id"]; ?></th>
                                <th><?php echo $row["password"]; ?></th>
                                <td>
                                    <a href="index.php?edit=<?php echo $row['id']; ?>" class="btn btn-success">ویرایش</a>
                                </td>
                            </tr>

                        <?php } ?>

                    </tbody>

                </table>
            </section>
        </div>
    </div>
    <?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="row">
                <div class="col-lg-12">
                    <section class="panel">
                        <header class="panel-heading">
                        عملیات تغییر رمز

                        </header>
                        <div class="panel-body">
                            <form role="form" method="post" action="index.php">

            <input type="hidden" name="id" value="<?php echo $userInfo['id']; ?>">
                                <div class="form-group">
                                    <label for="exampleInputEmail1">رمز قدیمی:</label>
                                    <input type="password" class="form-control" id="exampleInputEmail1" placeholder="رمز قدیمی را وارد نمایید" name="password">
                                </div>
                                <div class="form-group">
                                    <label for="exampleInputPassword1">رمز جدید:</label>
                                    <input type="password" class="form-control" id="exampleInputPassword1" placeholder="رمز جدید را وارد نمایید" name="new-password">
                                </div>
                                <div class="form-group">
                                    <label for="exampleInputPassword1">تکرار رمز جدید:</label>
                                    <input type="password" class="form-control" id="exampleInputPassword1" placeholder="تکرار رمز جدید را وارد نمایید" name="password-conf">
                                </div>

                                <button type="submit" class="btn btn-info" name="sabt">ثبت</button>
                            </form>

                        </div>
                    </section>
                </div>
              </div>

    <?php    }   ?>

<?php

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

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

    if ($newPassword !== $passwordConf)
    {
        echo '<div class="alert alert-danger ">پسورد و تکرار پسورد با هم برابر نیست.</div>' ;

    } 
    else {

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

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

        }
    }
}

?>

ثبت پرسش جدید
Reza
تخصص : برنامه نویس وب
@Rezanp7 3 سال پیش مطرح شد
0
if(isset($_POST['register-button'])){
$name = $_POST['names'];
$national = $_POST['national'];
$age = $_POST['age'];
$password = password_hash($_POST['pass'], PASSWORD_DEFAULT);
$repass = $_POST['repass']
$email = $_POST['email'];
$gender = $_POST['gender'];

if (password_verify($repass, $password)) {
echo 'Password is valid!';
}
else
{
mysqli_query( $db , "INSERT INTO users( name , age , gender , national , email , password ) VALUES ( '$name' , '$age' , '$gender' , '$national'  , '$email' , '$password' )");

echo "ثبت نام با موفقیت انجام شد";
}

}

این روش دوم هست دقیقا همون کد شماست فقط نباید repass هش بشه و اینکه ارگومان دوم تابع password_verify باید پسورد هش شده باشه

اما برای لاگین شما توی دیتابیس یه پسورد هش شده دارید درسته؟
با استفاده از تابع password_verify ارگومان اول پسوردی که از user input میگیرید و ارگومان دوم پسورد هش شده که از دیتابیس select میکنید اینارو مثل بالا توی if انجام میدید اگه درست بود کاربر لاگین میشه در غیر این صورت ارور نمایش میدین


paradox
@wxyz4367 3 سال پیش آپدیت شد
0

@Rezanp7
ممنون از توضیحاتتون لطف کردید

وقتی لاگین انجام میدم وارد لوکیشنی که میدم نمیشه هیچ اتفاقی نمیفته

if(isset($_POST['login-but'])){
    $mail= $_POST['email'];
    $password = $_POST['password'];

    $LoginCheck = mysqli_query($db , "SELECT * FROM users WHERE email='$mail' ");

    $user = mysqli_fetch_assoc($LoginCheck);

    if($user){
       if(password_verify($password , $user['password'])) {
        $_SESSION['login-but'] = $mail;
      header('location:paneladmin/index.php');
    }
    }else{

      echo 'login error!';

    }

  }

Reza
تخصص : برنامه نویس وب
@Rezanp7 3 سال پیش مطرح شد
0

@wxyz4367
خواهش میکنم.

احتمالا اشتباه ادرس دادید این کد رو تست کنید:

header ('location: /paneladmin/index.php');

اگه کار نکرد و یا سوال دیگه ای داشتید این گفتگو رو ببندید و یک گفتگوی جدید باز کنید و تگ کنید منو (این گفتگو خیلی طولانی شده.)


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

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