Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để sử dụng tính năng băm mật khẩu với PDO để làm cho mã của tôi an toàn hơn?

Chỉ cần sử dụng một thư viện. Nghiêm túc. Chúng tồn tại là có lý do.

Đừng tự làm điều đó. Nếu bạn đang tạo muối của riêng mình, BẠN ĐANG LÀM SAI . Bạn nên sử dụng một thư viện xử lý điều đó cho bạn.

$dbh = new PDO(...);

$username = $_POST["username"];
$email = $_POST["email"];
$password = $_POST["password"];
$hash = password_hash($password, PASSWORD_DEFAULT);

$stmt = $dbh->prepare("insert into users set username=?, email=?, password=?");
$stmt->execute([$username, $email, $hash]);

Và khi đăng nhập:

$sql = "SELECT * FROM users WHERE username = ?";
$stmt = $dbh->prepare($sql);
$result = $stmt->execute([$_POST['username']]);
$users = $result->fetchAll();
if (isset($users[0]) {
    if (password_verify($_POST['password'], $users[0]->password) {
        // valid login
    } else {
        // invalid password
    }
} else {
    // invalid username
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách thực hiện UPSERT để tôi có thể sử dụng cả giá trị mới và cũ trong phần cập nhật

  2. Gọi đến một hàm thành viên thực thi () trên boolean trong

  3. Khắc phục “ERROR 1222 (21000):Các câu lệnh SELECT đã sử dụng có một số cột khác nhau” khi sử dụng UNION trong MySQL

  4. CHỌN * NƠI KHÔNG TỒN TẠI

  5. Làm cách nào để lập lịch truy vấn MySQL?