在入口文件index.php中加上
// 启动SESSION require_once 'Zend/Session.php'; Zend_Session::start();
UserController.php文件:
/** * 用户登录 */ function loginAction() { $user = new BaseUser(); //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')); $username = $this->getRequest()->getParam("UserName"); $password = $this->getRequest()->getParam("PassWord"); //$validcode = $filter->filter($this->_request->getPost('validcode'));//验证码 if( !empty($username) ){ $db = Zend_Registry::get('db'); $authAdapter = new Zend_Auth_Adapter_DbTable($db); $authAdapter->setTableName('base_user')//数据库表名 // 数据库表的列的名称,用来表示身份。身份列必须包含唯一的值,例如用户名或者e-mail地址。 ->setIdentityColumn('username') //数据库表的列的名称,用来表示证书。在一个简单的身份和密码认证scheme下,证书的值对应为密码 ->setCredentialColumn('passwordhash') ->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 return; }
//在任何地方输出
$user = new Zend_Session_Namespace('user'); if( isset( $user->name ) ){ echo '会员'.$user->name; }else{ echo '游客'; }