Hướng dẫn login with email and password in php - đăng nhập bằng email và mật khẩu trong php

8

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi đang cố gắng tạo một đăng nhập với tên người dùng hoặc email

Mã của tôi là:

$username=$_REQUEST['login'];
$email=$_REQUEST['login'];
$password=$_REQUEST['password'];

if($username && $password) {
  $query="select * from  user_db where username='$username'  and password='$password'";
} else if ($email && $password) {
  $query="select * from  user_db where email='$email' and password='$password'";
}

Đăng nhập với tên người dùng là thành công nhưng đăng nhập với email không hoạt động. Làm ơn giúp tôi!

Hướng dẫn login with email and password in php - đăng nhập bằng email và mật khẩu trong php

Khi được hỏi ngày 2 tháng 5 năm 2012 lúc 17:56May 2, 2012 at 17:56

3

Tham số đăng nhập là giống nhau cho cả tên email và tên người dùng. Không chính xác không chính xác nếu bạn có một hộp đăng nhập duy nhất chấp nhận.

Bạn có thể đặt điều kiện vào truy vấn nếu bạn không chắc đó là email hay tên người dùng.

$login=$_REQUEST['login'];
$query = "select * from  user_db where ( username='$login' OR email = '$login') and password='$password'"

EDIT: Một giải pháp giống như PDO ngày nay được ưu tiên hơn nhiều vì các giải pháp trên có thể bị tiêm SQL. Logic vẫn giữ nguyên, nhưng bạn sẽ trông giống như thế này: A PDO-like solution is much more preferred nowadays as the above is subject to SQL injection. The logic stays the same, but you'd have it look something like this:

$query = "
    SET @username = :username
    SELECT * FROM user_db
       WHERE ( username = @username OR email = @username) 
       AND password = :password
";

$statement = $pdoObject->prepare($query);
$statement->bindValue(":username", $login, PDO::PARAM_STR);
$statement->bindValue(":password", $password, PDO::PARAM_STR);
$statement->execute();

Đã trả lời ngày 2 tháng 5 năm 2012 lúc 18:03May 2, 2012 at 18:03

1

Bạn đang đặt cùng một giá trị thành hai biến, và sau đó sử dụng một if/khác. Cả hai nếu các tuyên bố là tương đương.

Bạn cần tìm ra nếu $_REQUEST[login] chứa một địa chỉ email hợp lệ và nếu sử dụng trường email của cơ sở dữ liệu. Nếu không, sử dụng trường tên người dùng.

Ngoài ra, bạn không nên đặt các biến trực tiếp vào truy vấn. Sử dụng các tuyên bố đã chuẩn bị.

Đã trả lời ngày 2 tháng 5 năm 2012 lúc 18:01May 2, 2012 at 18:01

GCOChardGCoChardgcochard

Huy hiệu vàng 11.2k1 vàng24 Huy hiệu đồng1 gold badge24 silver badges41 bronze badges

Tôi biết đây là một bài viết cũ nhưng tôi thấy rằng một số người vẫn sẽ xem nó vì vậy tôi muốn đặt một cách dễ dàng để cho phép cả email và tên người dùng trên cùng một đầu vào

Mã của tôi như sau

  if
   (!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/", $name_of_same_input) )
  {
     $un_check = mysql_query("SELECT uname FROM eusers WHERE uname = '' ") or die(mysql_error());

     echo "loging in with username"; //code
  }
  elseif
   (preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/", $name_of_same_input) )
  {
     $un_check = mysql_query("SELECT umail FROM eusers WHERE umail = '' ") or die(mysql_error());

     echo "loging in with email"; //code

  }

Đã trả lời ngày 2 tháng 12 năm 2013 lúc 0:39Dec 2, 2013 at 0:39

 0 )
 {
 $row = mysqli_fetch_assoc($result);
 $email = $row["email"];
 echo "Login Successful...Welcome ".$email;
 }
 else
 {
 echo "Login Failed...Incorrect Email or Password...!";
 }
 ?>

Đã trả lời ngày 28 tháng 3 năm 2019 lúc 7:58Mar 28, 2019 at 7:58

Hướng dẫn login with email and password in php - đăng nhập bằng email và mật khẩu trong php

Ashish Bharamashish BharamAshish Bharam

1711 huy hiệu vàng2 huy hiệu bạc7 huy hiệu đồng1 gold badge2 silver badges7 bronze badges

1

Xin chào, đối với tôi làm việc như thế này:

if ( !isset($_POST['emailuser'], $_POST['userPass']) ) {
    // Could not get the data that should have been sent.
    die ('Please fill both the username and password field!');
}
$emailuser = ($_POST['emailuser']);
$emailuser = trim($emailuser);

    if ($stmt = $con->prepare('SELECT userEmail or userName, userPass FROM users WHERE userEmail = ? or userName = ?')) {
   // Bind parameters (s = string, i = int, b = blob, etc), in our case the username is a string so we use "s"
   $stmt->bind_param('ss', $emailuser, $emailuser);
   $stmt->execute();
   // Store the result so we can check if the account exists in the database.
   $stmt->store_result();

   if ($stmt->num_rows > 0) {
       $stmt->bind_result($userName, $userPass);
       $stmt->fetch();
       // Account exists, now we verify the password.
       // Note: remember to use password_hash in your registration file to store the hashed passwords.
       if (password_verify($_POST['userPass'], $userPass)) {
           // Verification success! User has loggedin!
           // Create sessions so we know the user is logged in, they basically act like cookies but remember the data on the server.
           session_regenerate_id();
           $_SESSION['loggedin'] = true;
           $_SESSION['name'] = $emailuser;
           $_SESSION['emailuser'] = $userName;
           header('location: /menu.php');
       } else {
           echo 'Incorrect password!';
       }
   } else {
       echo 'Incorrect username!';
   }
   $stmt->close();    } ?>

Đã trả lời ngày 26 tháng 10 năm 2019 lúc 13:31Oct 26, 2019 at 13:31

Damian Nassdamian NassDamian Nass

1512 Huy hiệu bạc5 Huy hiệu Đồng2 silver badges5 bronze badges

$username=$_REQUEST['login'];
$email=$_REQUEST['login'];

Điều này là sai, bạn đang sử dụng

$login=$_REQUEST['login'];
$query = "select * from  user_db where ( username='$login' OR email = '$login') and password='$password'"
0 cho cả tên email và tên người dùng. Tại sao bạn không chỉ sử dụng email?

Nếu

$login=$_REQUEST['login'];
$query = "select * from  user_db where ( username='$login' OR email = '$login') and password='$password'"
0 không có địa chỉ email, tất nhiên điều này sẽ không trả lại cho bạn bất cứ điều gì.

Ngoài ra, cả hai câu lệnh IF của bạn sẽ luôn thực hiện, trừ khi các trường trống. bên phải?

Lấy thông tin đăng nhập, thực thi người dùng để đăng nhập với địa chỉ email. Ngoài ra, lấy MD5 mật khẩu. Ai lưu trữ mật khẩu thô trong những ngày này?

Đã trả lời ngày 2 tháng 5 năm 2012 lúc 17:59May 2, 2012 at 17:59

DarthvaderdarthvaderDarthVader

50.6K71 Huy hiệu vàng202 Huy hiệu bạc297 Huy hiệu đồng71 gold badges202 silver badges297 bronze badges

1

$username=$_REQUEST['username'];//I'm assuming your code here was wrong
$email=$_REQUEST['email'];//and that you have three different fields in your form 
$password=$_REQUEST['password'];

if (validate_username($username)) {
  $query="select * from  user_db where username='".$username".' and password='".validate_password($password)."'";
} else if (validate_email($email)) {
  $query="select * from  user_db where email='".$email."' and password='".validate_password($password)."'";
}

//... elsewhere...

function validate_username(&$username) {
  if (strlen($username) <= 1) { return false; }
  //return false for other situations
    //Does the username have invalid characters?
    //Is the username a sql injection attack?
  //otherwise...
  return true;
}

function validate_email(&$email) {
  //same deal as with username
}

function validate_password(&$password) {
  //same deal as with username
}

Lưu ý, nếu bạn chỉ có hai trường (đăng nhập và mật khẩu), thì sự khác biệt giữa email và tên người dùng là vô nghĩa. Lưu ý thêm rằng bạn thực sự nên sử dụng pdo PHP để xây dựng và thực hiện các truy vấn của bạn, để ngăn chặn các vi phạm bảo mật và làm cho cuộc sống của bạn dễ dàng hơn.

Đã trả lời ngày 2 tháng 5 năm 2012 lúc 18:09May 2, 2012 at 18:09

Hướng dẫn login with email and password in php - đăng nhập bằng email và mật khẩu trong php

Nathaniel Fordnathaniel FordNathaniel Ford

Huy hiệu vàng 19.7K2020 gold badges85 silver badges96 bronze badges

if (validate_username($username)) {
  $query="select * from  user_db where username='".$username".' and password='".validate_password($password)."'";
} else if (validate_email($email)) {
  $query="select * from  user_db where email='".$email."' and password='".validate_password($password)."'";
}

Hướng dẫn login with email and password in php - đăng nhập bằng email và mật khẩu trong php

Taryn

Phim thương hiệu vàng 238K5555 gold badges362 silver badges403 bronze badges

Đã trả lời ngày 11 tháng 11 năm 2013 lúc 11:28Nov 11, 2013 at 11:28

1

Làm cách nào để bảo mật trang đăng nhập của mình trong PHP?

Bắt đầu. Có một vài bước chúng ta cần thực hiện trước khi tạo hệ thống đăng nhập an toàn của mình. ....
Tạo thiết kế mẫu đăng nhập. ....
Tạo cơ sở dữ liệu và các bảng thiết lập. ....
Xác thực người dùng với PHP. ....
Tạo trang chủ. ....
Tạo trang hồ sơ. ....
Tạo tập lệnh đăng xuất ..

Làm thế nào tôi có thể biết mật khẩu email của tôi và đăng nhập PHP?

PHP $ servername = "localhost";$ username = "root";$ password = "";$ databasename = "test";$ Conn = mysqli_connect ($ servername, $ username, $ password, $ databasename);$ un = $ _post ['tên người dùng'];$ pw = $ _post ['mật khẩu'];In $ Pass.

Làm thế nào để đăng nhập bằng email trong PHP?

PHP yêu cầu "kết nối. PHP";$ email = $ _ Post ["Email"];$ mobile = $ _post ["di động"];$ password = $ _ post ["mật khẩu"];// Biến kiểm tra // $ email = "[email protected]";// $ mobile = "9876543210";// $ password = "@!$email =$_POST["email"]; $mobile = $_POST["mobile"]; $password =$_POST["password"]; //Test variables //$email = "[email protected]"; //$mobile = "9876543210"; //$password ="@!

Làm cách nào để tạo một hệ thống đăng nhập?

Bước 1- Tạo biểu mẫu đăng nhập PHP HTML.Để tạo biểu mẫu đăng nhập, hãy làm theo các bước được đề cập dưới đây: ....
Bước 2: Tạo mã CSS để thiết kế trang web.....
Bước 3: Tạo bảng cơ sở dữ liệu bằng MySQL.....
Bước 4: Mở kết nối với cơ sở dữ liệu MySQL.....
Bước 5 - Tạo một phiên đăng xuất.....
Bước 6 - Tạo mã cho trang chủ ..