Hướng dẫn how to change password in php pdo? - làm cách nào để thay đổi mật khẩu trong php pdo?

Kịch bản

Tôi đang cố gắng thay đổi tên người dùng của hiện tại đã đăng nhập vào người dùng MySQL thông qua PDO và PHP và không thể thay đổi mật khẩu cho người dùng đã đăng nhập (trong bảng người dùng MySQL).

Tôi chỉ có thể thay đổi điều này trong bảng người dùng ứng dụng của mình, mà tôi muốn sử dụng cùng một mật khẩu.

Ghi chú

Tôi có thể thay đổi thành công điều này thông qua dòng lệnh MySQL (dấu nhắc lệnh windows) nhưng khi tôi cố gắng thay đổi điều này thông qua tập lệnh PHP của tôi (Changpassword), mật khẩu cũ vẫn còn.

Câu hỏi

Làm cách nào để thay đổi mật khẩu trong PHP/PDO?

    public function changePassword($username, $password, $password1, $password2)
    {
        $userPassExists = $this->confirmUserNamePassword($username, $password);
        if ($userPassExists)
        {
            if ($password1 == '' or $password2 == '')
            {
                echo "Complete all entries";
            }
            else if ($password1 != $password2)
            {
                echo "New Passwords must match";
            }
            else
            {
                    $sql = $this->dbh->prepare("UPDATE users set password = ':password' where username = ':username'");
                    $sql->execute(array(':password' => $this->createPwdHash($password1), ':username' => $username));


                    $sql = $this->dbh->prepare("UPDATE mysql.user SET Password=PASSWORD(':password') WHERE user=':username' AND Host='localhost';");
                    $sql->execute(array(':username', $username, ':password' => $password1));

                    $sql = $this->dbh->prepare("flush privileges");
                    $sql->execute();

                    $this->dbh = null;
                    $this->dbh = $this->getConnection($username, $password1);
                    var_dump($this->dbh);
            }
        }
        else
        {
                echo "Incorrect Username or Password";
        }
    }

CHỈNH SỬA

Theo cú pháp từ liên kết bên dưới, tôi đã sửa đổi chức năng của mình thành mã bên dưới, nhưng bây giờ nó tạo ra một cảnh báo.

CẢNH BÁO: pDostatement :: Execute (): SQLSTATE [HY093]: Số tham số không hợp lệ: Số lượng biến ràng buộc không khớp với số lượng mã thông báo trong script.php trên dòng 191

Dòng 191 là

 $sql = $this->dbh->prepare("set password for :username@'localhost' = PASSWORD(:password)");

Liên kết https://stackoverflow.com/a/22721480/1691103 https://stackoverflow.com/a/22721480/1691103

    public function changePassword($username, $password, $password1, $password2)
    {
        $userPassExists = $this->confirmUserNamePassword($username, $password);
        if ($userPassExists)
        {
            if ($password1 == '' or $password2 == '')
            {
                echo "Complete all entries";
            }
            else if ($password1 != $password2)
            {
                echo "New Passwords must match";
            }
            else
            {
                    $this->resetPassword($username, $password1);
                    $this->dbh = null;
                    $this->dbh = $this->getConnection($username, $password1);
                    var_dump($this->dbh);
            }
        }
        else
        {
                echo "Incorrect Username or Password";
        }
    }


    public function resetPassword($username, $password)
    {
            $sql = $this->dbh->prepare("UPDATE users set password = :password where username = :username");
            $sql->execute(array(':password' => $this->createPwdHash($password), ':username' => $username));

            $sql = $this->dbh->prepare("set password for :username@'localhost' = PASSWORD(:password)");
            $sql->execute(array(':username', $username, ':password' => $password));
    }


Thay đổi tính năng mật khẩu là một yêu cầu phổ biến cho bất kỳ tập lệnh quản lý thành viên nào. Ở đây các thành viên có thể thay đổi mật khẩu của họ sau khi đăng nhập vào khu vực thành viên. Ở đây chúng tôi sẽ kiểm tra phiên của thành viên để cho phép hoặc không cho phép truy cập trang Mật khẩu thay đổi của trang web. Ở đây chúng tôi có thể yêu cầu thành viên nhập mật khẩu cũ một lần và sau đó nhập mật khẩu mới hai lần.

Thay đổi mật khẩu bằng cách cập nhật bản ghi MySQL bằng mật khẩu cũ và mới sau khi xác thực trong PHP

Đây là một tập lệnh cơ bản và chúng tôi có thể tạo tập lệnh mật khẩu thay đổi bằng cách sử dụng AJAX (với PHP MySQL) và cập nhật mật khẩu mới. Tập lệnh quản lý thành viên mới của chúng tôi sử dụng điều này và có một bản demo có sẵn để kiểm tra chức năng. Bản demo của thay đổi tập lệnh mật khẩu bằng Ajax
Đây là một tập lệnh cơ bản và chúng tôi có thể tạo tập lệnh mật khẩu thay đổi bằng cách sử dụng AJAX (với PHP MySQL) và cập nhật mật khẩu mới. Tập lệnh quản lý thành viên mới của chúng tôi sử dụng điều này và có một bản demo có sẵn để kiểm tra chức năng. Bản demo của thay đổi tập lệnh mật khẩu bằng Ajax

Sử dụng jQuery

Hướng dẫn how to change password in php pdo? - làm cách nào để thay đổi mật khẩu trong php pdo?

Bản demo về thay đổi mật khẩu bằng tập lệnh xác thực mật khẩu jQuery bằng JQuery & Bootstrap Chúng tôi biết người dùng-ID nếu thành viên khi anh ấy đăng nhập để chúng tôi không yêu cầu thành viên nhập UserID lại. Đó không phải là một thực hành tốt để cho phép thành viên thay đổi người dùng của mình.
Password validation script using JQuery & Bootstrap
We know the user-id if the member as he has logged in so we will not ask the member to enter userid again. It is not a good practice to allow the member change his or her userid.

Hướng dẫn how to change password in php pdo? - làm cách nào để thay đổi mật khẩu trong php pdo?

Mật khẩu mới sẽ có hiệu lực từ đăng nhập tiếp theo của thành viên.

Chúng tôi sẽ yêu cầu thành viên nhập mật khẩu mới hai lần. Cả mật khẩu đã nhập phải khớp và phải vượt qua xác thực. Nếu tất cả các kiểm tra được thông qua tốt thì chúng tôi sẽ cập nhật bản ghi của thành viên bằng mật khẩu mới.

Hãy để chúng tôi bắt đầu với hình thức. Bạn có thể tải xuống mã ở cuối hướng dẫn này nhưng đây là biểu mẫu để thay đổi mật khẩu.

Bây giờ biểu mẫu này sẽ gửi đến một trang khác trong đó tất cả các giá trị sẽ được xác thực và sau đó bảng sẽ được cập nhật bằng mật khẩu mới. Đầu tiên chúng tôi sẽ thấy thành viên đã mở trang này sau khi đăng nhập, nếu không thì chúng tôi sẽ dừng thực hiện trang bằng cách sử dụng lệnh thoát. Đây là một phần của mã để làm điều đó.

Kiểm tra trạng thái phiên của người dùng

Việc kiểm tra phiên này là phổ biến trong nhiều trang trong đó một thành viên đăng nhập chỉ có thể truy cập ví dụ như các trang nơi hồ sơ được cập nhật hoặc trang hiện tại nơi mật khẩu cần thay đổi. Vì vậy, chúng tôi đã giữ mã phổ biến này trong một kiểm tra tệp riêng biệt và bao gồm tệp đó trong tất cả các trang cần thiết.

// check the login details of the user and stop execution if not logged in
require "check.php";
Bên trong tệp kiểm tra.php Chúng tôi chỉ có một vài dòng mã để kiểm tra phiên. Đây là để bạn tham khảo.
<?Php
if(!isset($_SESSION['userid'])){
echo "<center><font face='Verdana' size='2' color=red>
Sorry, Please login and use this page </font></center>"; exit; } ?>
Bây giờ chúng ta hãy thu thập tất cả các mẫu được đăng dữ liệu của người dùng
$todo=$_POST['todo'];
$password=$_POST['password'];
$password2=$_POST['password2'];
$old_password=$_POST['old_password'];
Bây giờ chúng ta sẽ đặt cờ để xác thực các biến. Xin lưu ý rằng chúng tôi đã sử dụng xác thực hạn chế ở đây và bạn có thể kiểm tra thêm theo yêu cầu của bạn. (Giống như chỉ cho phép các số hoặc ký tự trong mật khẩu, v.v.
if ( strlen($password) < 3 or strlen($password) > 8 ){
$msg=$msg."Password must be more than 3 char legth and maximum 8 char lenght<BR>";
$status= "NOTOK";}
Bây giờ chúng ta hãy kiểm tra xem cả hai mật khẩu có bằng hay không
if ( $password <> $password2 ){
$msg=$msg."Both passwords are not matching<BR>";
$status= "NOTOK";}
bây giờ nếu xác thực của chúng tôi ổn thì chúng tôi sẽ cập nhật SQL và nếu xác thực không ổn thì chúng tôi sẽ hiển thị thông báo lỗi. Trong truy vấn của chúng tôi, chúng tôi đang sử dụng câu lệnh SQL Update và dựa trên sự thành công của câu lệnh SQL Update, chúng tôi có thể hiển thị thông báo. Dưới đây là mã để cập nhật bảng thành viên.
 $sql = $this->dbh->prepare("set password for :username@'localhost' = PASSWORD(:password)");
0 Nếu cập nhật cơ sở dữ liệu thành công thì người dùng phải sử dụng mật khẩu mới cho lần đăng nhập tiếp theo. Hoặc người dùng có thể được chuyển hướng đến trang đăng xuất và có thể được yêu cầu đăng nhập lại. Tập lệnh đăng nhập Php Đăng ký 1 Đăng nhập / SCRIPT

// check the login details of the user and stop execution if not logged in
require "check.php";
Inside the file check.php we have only few lines of code to check the session. Here it is for your reference.
<?Php
if(!isset($_SESSION['userid'])){
echo "<center><font face='Verdana' size='2' color=red>
Sorry, Please login and use this page </font></center>"; exit; } ?>
Now let us collect all the form posted data of the user
$todo=$_POST['todo'];
$password=$_POST['password'];
$password2=$_POST['password2'];
$old_password=$_POST['old_password'];
Now we will set the flags for validation of the variables. Please note that we have used limited validation here and you can go for more checking as per your requirements. ( like allowing only numbers or chars in the password etc. )
$status = "OK";
$msg="";
Now check the old password
$count=$dbo->prepare("select password from plus_signup where userid=:userid");
$count->bindParam(":userid",$_SESSION[userid],PDO::PARAM_STR, 15);
$count->execute();
$row = $count->fetch(PDO::FETCH_OBJ);

if($row->password<>md5($old_password)){
$msg=$msg."Your old password  is not matching as per our record.<BR>";
$status= "NOTOK";
}				
After this we will see that our entered password is not less than 3 char and more that 8 char length.
if ( strlen($password) < 3 or strlen($password) > 8 ){
$msg=$msg."Password must be more than 3 char legth and maximum 8 char lenght<BR>";
$status= "NOTOK";}

Now let us check whether both the passwords are equal or not
if ( $password <> $password2 ){
$msg=$msg."Both passwords are not matching<BR>";
$status= "NOTOK";}
Now if our validation is ok then we will go for updating SQL and if validation is not ok then we will display the error message. In our query we are using SQL update statement and based on the success of the sql update statement we can display the message. Here is the code for the updating of the member table.
 $sql = $this->dbh->prepare("set password for :username@'localhost' = PASSWORD(:password)");
0 If the database updating is successful then the user has to use new password for next time login. Or the user can be redirected to logout page and can be asked to login again.
Login Script PHP Signup 1 Login / Logout script

Hướng dẫn how to change password in php pdo? - làm cách nào để thay đổi mật khẩu trong php pdo?

Làm thế nào để thay đổi mật khẩu trong mã PHP?

PHP '; $ username = $ _post ['tên người dùng']; $ password = $ _post ['mật khẩu']; $ newPassword = $ _post ['NewPassword']; $ xác nhậnNewPassword = $ _POST ['isportNewPassword']; $ result = mysql_query ("chọn mật khẩu từ user_info trong đó user_id = '$ username'"); nếu(!

Làm cách nào để thay đổi mật khẩu ajax của mình?

Để thay đổi mật khẩu trong ứng dụng AJAX: Nhấp vào Đăng nhập và sau đó quên mật khẩu. Chỉ định email hoặc chọn quốc gia và nhập số điện thoại được liên kết với tài khoản mà bạn đang cố gắng khôi phục quyền truy cập tiếp theo.Click Log in and then Forgot password. Specify email or select the country and enter the phone number associated with the account that you are trying to restore access to. Click Next.

Làm cách nào để lấy mật khẩu và xác nhận mật khẩu trong PHP?

preg_match ("#[a-z]+#", $ password)) {$ passworderr = "Mật khẩu của bạn phải chứa ít nhất 1 chữ thường!"; } other {$ cpassworderr = "Vui lòng kiểm tra bạn đã nhập hoặc xác nhận mật khẩu của bạn!"; }} // xác nhận FirstName if (trống ($ _ post ["firstName"])) {$ firsterr = "bạn quên nhập tên của mình!"; } khác {$ ...

Kiểm soát mật khẩu trong PHP là gì?

Người dùng phải tạo mật khẩu và sử dụng nó để đăng nhập vào trang web. Nhưng điều rất quan trọng là bảo mật mật khẩu của người dùng. Hàm password_hash () cung cấp cơ sở để lưu trữ mật khẩu của người dùng một cách an toàn cho cơ sở dữ liệu. Cú pháp. password_hash (mật khẩu, password_default)password_hash() function provides the facility to securely store the password of the user to the database. Syntax. password_hash(Password, PASSWORD_DEFAULT)