使用用户名或电子邮件登录

用户名

因此,我试图让用户使用其用户名或电子邮件以及密码登录。这是我的查询

SELECT * FROM users WHERE  (username = ':username' OR email = ':email') AND password = :pass

问题是如何绑定值?这是我所有的代码

$st = $con->prepare("SELECT * FROM users WHERE  (username = ':username' OR email = ':email') AND password = :pass");
$st->bindValue(':email', $email, PDO::PARAM_STR);
$st->bindValue(':username', $email, PDO::PARAM_STR);
$st->bindValue(':pass', $pass, PDO::PARAM_STR);
$st->execute();
$rows = $st->fetch(PDO::FETCH_NUM);

正如你可以看到我用$email了两次,$email

$email = htmlspecialchars($_POST['email'], ENT_QUOTES, 'UTF-8');

任何帮助都会很棒。用我当前的代码我得到这个错误

致命错误:/Users/matt/Desktop/Mail/l.php中的消息“ SQLSTATE [HY093]:未捕获的异常” PDOException”:无效的参数编号:绑定变量的数量与令牌的数量不匹配:27堆栈跟踪:# 0 /Users/matt/Desktop/Mail/l.php(27):PDOStatement-> execute()#1 {main}放在第27行的/Users/matt/Desktop/Mail/l.php中

编辑当做@Deele的建议方式时

注意:未定义的索引:第60行的/Users/matt/Desktop/Mail/l.php中的名称

警告:无法修改标头信息-行60上/Users/matt/Desktop/Mail/l.php中已经发送过的标头(输出始于/Users/matt/Desktop/Mail/l.php:60)

60行是 header('Location: profile.php?username='.$_SESSION['name']);

德勒

我会做这样的事情

// Try to find user
try {
    $sth = $dbh->prepare('SELECT * FROM users WHERE username = :login OR email = :login LIMIT 1');
    $sth->execute(array(':login' => $_POST['email']));
    $user = $sth->fetch(PDO::FETCH_ASSOC);
}
catch (PDOException $e) {
    echo 'Login error: '.$e->getMessage();
}
// If user was found, authenticate it by comparing passwords
if ($user && isset($user['password']) && md5($user['password']) == $_POST['password']) {
    echo 'Login success.';
}
else {
    echo 'Login failed.';
}

注意:未经测试

将此与其他代码分开进行测试,如果它适合您。最好为用户创建类,例如class User { public static function findByLogin($login) { /* ... */ } }或至少为单个函数创建类,user_findByLogin($login) { /* ... */ } }这样将更容易测试和调试您自己的代码。之后,添加另一个执行身份验证过程的方法/函数以比较密码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Asp.net mvc5中使用用户名代替电子邮件作为身份

来自分类Dev

使用电子邮件或用户名登录Node.js Passport策略

来自分类Dev

Laravel使用电子邮件代替用户名登录

来自分类Dev

在Django中使用电子邮件地址或用户名登录用户

来自分类Dev

允许用户使用电子邮件或用户名(AspNet.Identity)登录

来自分类Dev

接受用户名或电子邮件以使用django-allauth登录

来自分类Dev

登录以获取用户名而不是电子邮件

来自分类Dev

使用电子邮件或用户名登录

来自分类Dev

ASP.NET Identity 2电子邮件和用户名的分隔,并使用电子邮件登录

来自分类Dev

内置脚手架的laravel 5尝试使用用户名而不是电子邮件错误

来自分类Dev

通过虚拟主机发送电子邮件,而无需使用用户名和密码

来自分类Dev

使用用户名而不是电子邮件进行JWTAuth身份验证

来自分类Dev

如何在Firebase中使用用户名,电子邮件和密码创建新用户?

来自分类Dev

使用您的用户名或电子邮件填写登录字段

来自分类Dev

有什么方法可以使用用户名或电子邮件登录Django管理界面?

来自分类Dev

接缝。使用电子邮件或用户名登录

来自分类Dev

Laravel使用电子邮件代替用户名登录

来自分类Dev

使用用户名或电子邮件使用codeigniter登录

来自分类Dev

登录以获取用户名而不是电子邮件

来自分类Dev

如何允许用户使用php中的用户名和电子邮件登录?

来自分类Dev

电子邮件作为用户名登录joomla 3.4

来自分类Dev

Picketlink-如何实现同时接受使用用户名或电子邮件的身份验证

来自分类Dev

如何在Firebase中使用用户名,电子邮件和密码创建新用户?

来自分类Dev

使用用户名而不是电子邮件进行身份验证laravel 5.2

来自分类Dev

使用用户名或电子邮件进行身份验证

来自分类Dev

Laravel 5 使用 Attempt 方法使用用户名或电子邮件自定义登录

来自分类Dev

允许用户使用电子邮件或用户名使用 Passport、LocalStrategy 登录

来自分类Dev

使用用户名(不是电子邮件)登录 Firebase

来自分类Dev

如何使用 SESSION 检索登录的用户名、电子邮件?到网站

Related 相关文章

  1. 1

    在Asp.net mvc5中使用用户名代替电子邮件作为身份

  2. 2

    使用电子邮件或用户名登录Node.js Passport策略

  3. 3

    Laravel使用电子邮件代替用户名登录

  4. 4

    在Django中使用电子邮件地址或用户名登录用户

  5. 5

    允许用户使用电子邮件或用户名(AspNet.Identity)登录

  6. 6

    接受用户名或电子邮件以使用django-allauth登录

  7. 7

    登录以获取用户名而不是电子邮件

  8. 8

    使用电子邮件或用户名登录

  9. 9

    ASP.NET Identity 2电子邮件和用户名的分隔,并使用电子邮件登录

  10. 10

    内置脚手架的laravel 5尝试使用用户名而不是电子邮件错误

  11. 11

    通过虚拟主机发送电子邮件,而无需使用用户名和密码

  12. 12

    使用用户名而不是电子邮件进行JWTAuth身份验证

  13. 13

    如何在Firebase中使用用户名,电子邮件和密码创建新用户?

  14. 14

    使用您的用户名或电子邮件填写登录字段

  15. 15

    有什么方法可以使用用户名或电子邮件登录Django管理界面?

  16. 16

    接缝。使用电子邮件或用户名登录

  17. 17

    Laravel使用电子邮件代替用户名登录

  18. 18

    使用用户名或电子邮件使用codeigniter登录

  19. 19

    登录以获取用户名而不是电子邮件

  20. 20

    如何允许用户使用php中的用户名和电子邮件登录?

  21. 21

    电子邮件作为用户名登录joomla 3.4

  22. 22

    Picketlink-如何实现同时接受使用用户名或电子邮件的身份验证

  23. 23

    如何在Firebase中使用用户名,电子邮件和密码创建新用户?

  24. 24

    使用用户名而不是电子邮件进行身份验证laravel 5.2

  25. 25

    使用用户名或电子邮件进行身份验证

  26. 26

    Laravel 5 使用 Attempt 方法使用用户名或电子邮件自定义登录

  27. 27

    允许用户使用电子邮件或用户名使用 Passport、LocalStrategy 登录

  28. 28

    使用用户名(不是电子邮件)登录 Firebase

  29. 29

    如何使用 SESSION 检索登录的用户名、电子邮件?到网站

热门标签

归档