首页 > 编程 > PHP > 正文

Zend Framework之Zend_Auth用户登录与退出

2020-03-22 18:09:03
字体:
来源:转载
供稿:网友
  • 在入口文件中加上Zend_Session::start();//启动SESSION
    UserController.php文件:
    //用户登录
    function loginAction()
    {
    //auth实现用户登录
    if(strtolower($_SERVER['REQUEST_METHOD'])=='post')
    {
    Zend_Loader::loadClass('Zend_Filter_StripTags');
    $filter=new Zend_Filter_StripTags();
    //表单的post值
    $username = $filter->filter($this->_request->getPost('username'));
    $password = $filter->filter($this->_request->getPost('pwd'));
    //$validcode = $filter->filter($this->_request->getPost('validcode'));//验证码
    //echo $validcode; exit;
    if( !empty($username) )
    {
    $db = Zend_Registry::get('dbAdapter');
    $authAdapter = new Zend_Auth_Adapter_DbTable($db);
    $authAdapter->setTableName('m_user')//数据库表名
    // 数据库表的列的名称,用来表示身份。身份列必须包含唯一的值,例如用户名或者e-mail地址。
    ->setIdentityColumn('username')
    //数据库表的列的名称,用来表示证书。在一个简单的身份和密码认证scheme下,证书的值对应为密码
    ->setCredentialColumn('pwd')
    ->setIdentity($username)//认证的值
    ->setCredential($password);

    $auth = Zend_Auth::getInstance();
    $result = $auth->authenticate($authAdapter);// 执行认证查询,并保存结果
    // 输出身份
    //echo $result->getIdentity() . "/n/n";
    // 输出结果行
    //echo '<pre>';print_r($authAdapter->getResultRowObject());exit;

    if( $result->isValid())//isValid() - 返回 true 当且仅当结果表示一个成功的认证尝试
    {
    $data = $authAdapter->getResultRowObject(null,'password');
    //echo '<pre>';print_r($data);exit;
    if( $auth->hasIdentity() )//成功登录
    {
    //auth之后写入session
    $user = new Zend_Session_Namespace('user');
    $user->name = $username;
    $user->setExpirationSeconds(60);//命名空间 "user" 将在第一次访问后 60 秒过期
    echo '<h3><font color=red> 登录成功!</font></h3>';
    }
    }else{
    echo '<h3><font color=red> 登录失败,请重新登录!</font></h3>';
    }
    }else{
    echo "<h3><font color='red'>用户名不能为空,请输入用户名.</font></h3>";
    }
    }else{
    echo '呵呵,对不起,你的操作是非法';
    }
    }

    //用户退出
    function loginoutAction()
    {
    $user = new Zend_Session_Namespace('user');
    $user->__unset();//销毁session
    echo '已经安全退出!';
    }

    //在任何地方输出
    $user = new Zend_Session_Namespace('user');
    if( isset( $user->name ) )
    {
    echo '会员'.$user->name;
    }else{
    echo '游客';
    }

    PHP编程

    郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

  • 发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表