使用相同用户名Zend Framework 2的多个登录

用户名

我正在使用Zend \ Authentication对用户进行身份验证,并在每次登录时插入session_id(),但是它仍然允许使用相同的用户名进行多次登录。我已经尝试了所有方法,但完全不知如何解决。这是我用于检查和插入会话的代码:

 public function indexAction()
 {

       $user = $this->identity();

       if ($this->getMembersTable()->checkSession($user->username) === false) {
           $_SESSION = array();
           session_destroy();
           setcookie(session_name(), '', time() - 300, '/', '', 0);

           return $this->redirect()->toUrl('/auth/login');
       }


    if (null === $user || empty($user)) {
        return $this->redirect()->toUrl('/auth/login');
    } 

    return array('user' => $user);
}


public function checkSession($username)<br>
{

    $sql = new Sql($this->table_gateway->getAdapter());<br>

    $adapter = $sql->getAdapter()->getDriver()->getConnection();

    $query = $adapter->execute("SELECT COUNT(*) FROM sessions WHERE username = 
         '$username' AND session_id = '" . md5(session_id()) . "'");

    if ($query->count() == 0) {
        return false;
    }
}

 public function insertSession($username, $password)
 {

    $sql = new Sql($this->table_gateway->getAdapter());


    $insert = new Insert('sessions');

    $adapter = $this->table_gateway->getAdapter();

    $insert->columns(array('username', 'password', 'active', 'session_id'))
      ->values(array('username' => $username, 'password' => $password, 'active' => 1, 'session_id' => md5(session_id())));

    $adapter->query(
        $sql->getSqlStringForSqlObject($insert),
        $adapter::QUERY_MODE_EXECUTE
    );


    return true;
}
马泰奥·塔西纳里(Matteo Tassinari)

您的问题出在这里:

if ($query->count() == 0) {

count()将返回发现的行数,但在COUNT(*)查询时,你总是有一个排。

尝试以下方法:

$query = $adapter->execute("SELECT COUNT(*) as cnt FROM sessions WHERE username = '$username' AND session_id = '" . md5(session_id()) . "'");

if($query[0]['cnt'] == 0) { 
  // do your stuff here
}

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何防止使用相同的用户名进行多次登录?

来自分类Dev

如何使用Azure Active Directory图客户端在Azure B2C中查找具有相同用户名/电子邮件地址的所有用户?

来自分类Dev

如何在Zend Framework 2上实现用户登录?

来自分类Dev

如何在Zend Framework 2上实现用户登录?

来自分类Dev

使用Zend Framework 2使Apigility仅适用于登录用户

来自分类Dev

使用adLDAP显示登录的用户名

来自分类Dev

ssh如何处理具有相同用户名的本地网络上的2台计算机?

来自分类Dev

如何使宏在具有不同用户名的多个工作站上通用

来自分类Dev

使用用户名登录或使用Cakephp 3登录

来自分类Dev

如何使用 Zend Framework 2 创建多个 where->like()?

来自分类Dev

如何为不同组织中的不同用户使用相同的用户名?

来自分类Dev

如何显示使用AngularJs登录的MVC用户名

来自分类Dev

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

来自分类Dev

使用空格登录来设计用户名

来自分类Dev

使用用户名/密码登录PHP

来自分类Dev

使用PHP显示用户名和登录状态检查

来自分类Dev

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

来自分类Dev

使用用户名登录和注册Firebase

来自分类Dev

使用锚标记登录后如何显示用户名

来自分类Dev

使用用户名和登录名的SFTP?

来自分类Dev

如何显示使用AngularJs登录的MVC用户名

来自分类Dev

使用帐户,用户名,密码登录到AWS Console

来自分类Dev

使用原始用户名登录所有root活动

来自分类Dev

如何在laravel中使用用户名登录

来自分类Dev

PHP登录“无效的用户名和密码”使用MySQL

来自分类Dev

使用TTY登录时的默认用户名

来自分类Dev

使用 Robot Framework 在同一文件中测试多个用户登录

来自分类Dev

在 angular2 中登录后显示用户名

来自分类Dev

Zend Framework 2形式

Related 相关文章

  1. 1

    如何防止使用相同的用户名进行多次登录?

  2. 2

    如何使用Azure Active Directory图客户端在Azure B2C中查找具有相同用户名/电子邮件地址的所有用户?

  3. 3

    如何在Zend Framework 2上实现用户登录?

  4. 4

    如何在Zend Framework 2上实现用户登录?

  5. 5

    使用Zend Framework 2使Apigility仅适用于登录用户

  6. 6

    使用adLDAP显示登录的用户名

  7. 7

    ssh如何处理具有相同用户名的本地网络上的2台计算机?

  8. 8

    如何使宏在具有不同用户名的多个工作站上通用

  9. 9

    使用用户名登录或使用Cakephp 3登录

  10. 10

    如何使用 Zend Framework 2 创建多个 where->like()?

  11. 11

    如何为不同组织中的不同用户使用相同的用户名?

  12. 12

    如何显示使用AngularJs登录的MVC用户名

  13. 13

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

  14. 14

    使用空格登录来设计用户名

  15. 15

    使用用户名/密码登录PHP

  16. 16

    使用PHP显示用户名和登录状态检查

  17. 17

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

  18. 18

    使用用户名登录和注册Firebase

  19. 19

    使用锚标记登录后如何显示用户名

  20. 20

    使用用户名和登录名的SFTP?

  21. 21

    如何显示使用AngularJs登录的MVC用户名

  22. 22

    使用帐户,用户名,密码登录到AWS Console

  23. 23

    使用原始用户名登录所有root活动

  24. 24

    如何在laravel中使用用户名登录

  25. 25

    PHP登录“无效的用户名和密码”使用MySQL

  26. 26

    使用TTY登录时的默认用户名

  27. 27

    使用 Robot Framework 在同一文件中测试多个用户登录

  28. 28

    在 angular2 中登录后显示用户名

  29. 29

    Zend Framework 2形式

热门标签

归档