Hướng dẫn how to compare password in php - làm thế nào để so sánh mật khẩu trong php

Tôi nghĩ rằng thật tuyệt khi bạn đến đây để yêu cầu giúp đỡ và tôi thích rằng bạn đã lao vào chính xác những gì bạn muốn làm.

Cho đến nay, điều này là tuyệt vời. Bạn đã tạo ra một số biến, chẳng hạn như

if ($&&$password&&$Email&&$Firstname&&$Lastname)
{
1, dễ đọc và gõ hơn
if ($&&$password&&$Email&&$Firstname&&$Lastname)
{
2. Nhiều lập trình viên PHP sẽ làm điều này.

Tuy nhiên, những gì bạn phải cẩn thận là không có gì được đảm bảo tồn tại trong mảng

if ($&&$password&&$Email&&$Firstname&&$Lastname)
{
3. Do đó, những thứ như
if ($&&$password&&$Email&&$Firstname&&$Lastname)
{
2 có thể được xác định. Vì lý do đó, bạn phải kiểm tra rằng các giá trị mong muốn của bạn tồn tại đầu tiên.

if ($&&$password&&$Email&&$Firstname&&$Lastname)
{

Tôi tin rằng đây là nơi bạn muốn kiểm tra rằng các giá trị bài viết tồn tại. Thật không may, điều này là quá muộn, vì một lỗi đã xảy ra ở trên. Bạn nên xem xét bắt đầu chương trình của bạn theo kiểu này.

Trong ví dụ này, chúng tôi đảm bảo rằng tất cả các giá trị bài đăng chúng tôi muốn sử dụng thực sự tồn tại trước khi chúng tôi bắt đầu sử dụng chúng. Ví dụ này sẽ không gặp bất kỳ lỗi nào nếu thiếu giá trị bài.

if int strcmp ( string $password , string $password2 )
{

Bạn có ý tưởng đúng, nhưng bạn không thực sự cần sử dụng

if ($&&$password&&$Email&&$Firstname&&$Lastname)
{
5 để so sánh hai chuỗi cho sự bình đẳng trong PHP. Thay vào đó, bạn có thể chỉ cần sử dụng toán tử
if ($&&$password&&$Email&&$Firstname&&$Lastname)
{
6.

if ($password == $password2)
{

Nếu bạn thực sự muốn sử dụng

if ($&&$password&&$Email&&$Firstname&&$Lastname)
{
5, chúng ta có thể học từ trang tài liệu http://php.net/strcmp rằng hàm trả về 0 nếu các chuỗi bằng nhau. Do đó, chúng tôi có thể sử dụng điều này.

if (strcmp($password, $password2) == 0)
{

Sau khi bạn chắc chắn rằng mật khẩu khớp, đây là khi bạn muốn băm mật khẩu. Lưu ý rằng băm khác với mã hóa: băm là một chiều, có nghĩa là một khi mật khẩu được băm, bạn không thể lấy mã băm và lấy lại mật khẩu; Mặt khác, mã hóa có thể được đảo ngược. Bởi vì chúng tôi không bao giờ muốn kẻ xấu biết mật khẩu của ai đó thực sự là gì, chúng tôi nên băm mật khẩu thay vì mã hóa nó.

Tất nhiên, sức mạnh của một hàm băm chỉ tốt như thuật toán băm, và có rất nhiều.

if ($&&$password&&$Email&&$Firstname&&$Lastname)
{
8 rất mạnh và tốt để bạn sử dụng cho đến khi bạn thoải mái hơn với lập trình.

$password_hash = sha1($password);

Bạn đã kết nối với cơ sở dữ liệu của mình một cách hoàn hảo. Không có gì sai ở đây.

$connect = mysql_connect("localhost","root","power1") or die("couldn't connect!");
mysql_select_db("members") or die ("couldnt find db!");

Tuy nhiên, có một cách cụ thể mà bạn cần truy vấn cơ sở dữ liệu.

INSERT INTO users (Firstname, Lastname, Email, password,...)
VALUES ($Firstname, $Lastname, $Email, $password, $password2,...)

Truy vấn này cần được cung cấp cho cơ sở dữ liệu bằng cách chuyển nó dưới dạng chuỗi cho hàm

if ($&&$password&&$Email&&$Firstname&&$Lastname)
{
9.

$sql_Firstname = mysql_real_escape_string($Firstname);
$sql_Lastname = mysql_real_escape_string($Lastname);
$sql_Email = mysql_real_escape_string($Email);
$sql_password_hash = mysql_real_escape_string($password_hash);

$sql = "INSERT INTO users (Firstname, Lastname, Email, password)"
      ."`VALUES ('$sql_Firstname', '$sql_Lastname', '$sql_Email', '$sql_password_hash')";

mysql_query($sql);

Lưu ý một vài điều. Trước hết, tôi đang lưu trữ

0 trong cơ sở dữ liệu thay vì
1. Đây là những gì chúng tôi muốn, vì chúng tôi không bao giờ muốn kẻ xấu hack cơ sở dữ liệu và tìm ra mật khẩu của mọi người là gì. Thứ hai, lưu ý rằng tôi không xây dựng chuỗi SQL bằng cách sử dụng trực tiếp
if ($&&$password&&$Email&&$Firstname&&$Lastname)
{
1; Thay vào đó, tôi chỉ sử dụng
3, tương đương với
if ($&&$password&&$Email&&$Firstname&&$Lastname)
{
1 nhưng đã có các ký tự đặc biệt thoát ra đúng cách - đây là những gì hàm
5 làm. Điều này rất quan trọng để đảm bảo bản thân chống lại các cuộc tấn công tiêm SQL, mà tôi khuyên bạn nên đọc một số: http://php.net/manual/en/security.database.sql-injection.php.

if ($&&$password&&$Email&&$Firstname&&$Lastname)
{
0

Phần còn lại của chương trình của bạn được thực hiện tốt; Nó là tốt cho bạn để cố tình xử lý các trường hợp lỗi có thể. Hãy chắc chắn rằng bạn tiếp tục xem xét tất cả các khả năng và đối phó với từng khả năng một cách thích hợp; Làm như vậy sẽ giúp ngăn ngừa các lỗi không xác định và các lỗ hổng bảo mật trong mã của bạn.

Làm thế nào để so sánh mật khẩu PHP và mật khẩu băm?

Để xác minh mật khẩu băm: PHP cung cấp chức năng sẵn có gọi là password_verify để khớp với mật khẩu băm với mật khẩu ban đầu.Tham số: $ Mật khẩu: Mật khẩu mà chúng tôi đã băm bằng thuật toán băm.$ Hash: Mật khẩu băm mà chúng tôi sẽ xác minh bằng mật khẩu gốc.PHP provides an inbuilt function called password_verify to match the hashed password to the original passwords. Parameters: $password: The password that we have hashed using a hashing algorithm. $hash: The hashed password that we are going to verify with the original password.

Làm thế nào để tôi biết nếu mật khẩu PHP là chính xác?

Cách xác nhận cường độ mật khẩu trong PHP..
Mật khẩu phải có độ dài ít nhất 8 ký tự ..
Mật khẩu phải bao gồm ít nhất một chữ cái trên ..
Mật khẩu phải bao gồm ít nhất một số..
Mật khẩu phải bao gồm ít nhất một ký tự đặc biệt ..

Làm thế nào để bạn so sánh mật khẩu băm?

Đầu tiên là phương thức so sánh () giống như hàm băm () trả về một lời hứa.Tham số đầu tiên của nó là mật khẩu chưa được nhập thủ công hoặc thông qua biểu mẫu đăng nhập.Tham số thứ hai là một chuỗi hoặc đúng hơn là mật khẩu được lưu trữ trong cơ sở dữ liệu.compare() method which just like the hash() function returns a promise. Its first parameter is the unhashed password entered manually or through a login form. The second parameter is a string or rather the stored password in the database.

Mật khẩu MD5 so sánh như thế nào?

Bạn có thể băm $ user_enthered_pass và so sánh, tôi sử dụng phương pháp này.