سلام دوستان من با کد زیر پسورد دیتابیس عوض میکنم ولی یه مشکلی هست که هر پسوردی تو 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");
}
}
}
?>
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 انجام میدید اگه درست بود کاربر لاگین میشه در غیر این صورت ارور نمایش میدین
@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!';
}
}
@wxyz4367
خواهش میکنم.
احتمالا اشتباه ادرس دادید این کد رو تست کنید:
header ('location: /paneladmin/index.php');
اگه کار نکرد و یا سوال دیگه ای داشتید این گفتگو رو ببندید و یک گفتگوی جدید باز کنید و تگ کنید منو (این گفتگو خیلی طولانی شده.)
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟