Zend_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'));//验证码
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;
echo "成功登录!<div><font color='red'>返回</font></div>";
exit;
}
}else{
echo "登录失败:"."$username - $password";exit;
}
}
//在任何地方输出
$user = new Zend_Session_Namespace('user');
if( isset( $user->name ) )
{
echo $user->name;
}