Hướng dẫn how can i login as username in php? - làm cách nào tôi có thể đăng nhập bằng tên người dùng trong php?

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 how can i login as username in php? - làm cách nào tôi có thể đăng nhập bằng tên người dùng 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.3K11 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 how can i login as username in php? - làm cách nào tôi có thể đăng nhập bằng tên người dùng trong php?

Ashish Bharamashish BharamAshish Bharam

Phim huy hiệu vàng 18111 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

1612 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

51K71 Huy hiệu vàng203 Huy hiệu bạc298 Huy hiệu Đồng71 gold badges203 silver badges298 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 how can i login as username in php? - làm cách nào tôi có thể đăng nhập bằng tên người dùng trong php?

Nathaniel Fordnathaniel FordNathaniel Ford

Huy hiệu vàng 19.9K2086 Huy hiệu bạc97 Huy hiệu đồng20 gold badges86 silver badges97 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 how can i login as username in php? - làm cách nào tôi có thể đăng nhập bằng tên người dùng trong php?

Taryn

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

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

1