سلام.
همونطور که حتما توی صفحه لاگین اینستاگرام دیدین محدودیتی برای ورود ایمیل یا نام کاربری وجود نداره. یعنی به همراه پسورد چه ایمیل رو بزنید و چه نام کاربری رو میتونید لاگین بشید.
این قابلیت با یک تغییر خیلی جزئی در تابعی که اطلاعات یوزر رو برای لاگین چک میکنه قابل انجامه:
function checkUser($info){
global $pdo;
$username = $info['username'];
if (validEmail($username)){
$sql2 = "where email = ?";
}else{
$sql2 = "where username = ?";
}
$sql = "select * from users " . $sql2;
$stmt = $pdo->prepare($sql);
$stmt->bindValue(1,$username);
$stmt->execute();
$res = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $res[0];
}
همونطور که مشاهده میکنید، با استفاده از تابع validEmail میتونیم بفهمیم که مقداری که کاربر در فیلد مربوط به usernamr/email وارد کرده نام کاربریش هست یا ایمیلش و بنا بر مقدار وارده کوئری رو تغییر میدیم.
پیاده سازی تابع validEmail هم بصورت زیر هست:
function validEmail($email){
if(filter_var($email, FILTER_VALIDATE_EMAIL)){
return true;
}else{
return false;
}
}
به همین راحتی!