用户表:
SQL代码
- CREATE TABLE `user` (
- `uid` SMALLINT( 5 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
- `username` VARCHAR( 20 ) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL ,
- `password` CHAR( 32 ) NOT NULL ,
- `role` ENUM( ‘user’, ’staff’, ‘admin’ ) NOT NULL ,
- `truename` VARCHAR( 20 ) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL ,
- INDEX (`role` , `truename` ) ,
- UNIQUE (`username`)
- ) ENGINE = MYISAM CHARACTER SET gbk COLLATE gbk_chinese_ci COMMENT = ‘用户表’;
数据库链接文件:
./Lib/Adapter.php
PHP代码
- <?php
- $adapter = Zend_Db::factory(‘PDO_MYSQL’, array( ‘host’ => ‘localhost’,
- ‘username’ => ‘root’,
- ‘password’ => ‘root’,
- ‘dbname’ => ‘text’));
- $adapter->query(’set names gbk;’);
- Zend_Registry::set(‘Db’, $adapter);
使用Zend_Auth进行身份认证:
PHP代码
- <?php
- require ‘./Zend/Loader.php’;
- function __autoload($class)
- {
- Zend_Loader::loadClass($class);
- }
- //以上为包含文件
- $auth = Zend_Auth::getInstance();//->setStorage(new Zend_Auth_Storage_Session(’Zend_Auth’));
- //身份的持久是自动发生的,因此此举等于$auth = Zend_Auth::getInstance()->setStorage(new Zend_Auth_Storage_Session(’Zend_Auth’));
- if($auth->hasIdentity())
- {
- echo ‘已经登录过了!<br/>’;
- $session = $auth->getStorage()->read();
- echo ‘显示用户组: ’ . $auth->getStorage()->read()->role . ‘<br/>’;
- return;
- }
- //若没有登录则完成登录(下面操作)
- require ‘./Lib/Adapter.php’;
- $auth_adapter = new Zend_Auth_Adapter_DbTable(Zend_Registry::get(‘Db’), ‘user’, ‘username’, ‘password’, ‘md5(?)’);
- $result = $auth->authenticate($auth_adapter->setIdentity(‘zhangsilly’)->setCredential(‘123456789′));
- $auth->getStorage()->write($auth_adapter->getResultRowObject(null, ‘password’));
- echo ‘登录完毕<br/>’;
- echo ‘显示用户组: ’ . $auth->getStorage()->read()->role . ‘<br/>’;
注意:$auth_adapter = new Zend_Auth_Adapter_DbTable(Zend_Registry::get(‘Db’), ‘user’, ‘username’, ‘password’, ‘md5(?)’); 这一句,如果采用和手册一样的写法$credentialTreatment 给 md5 认证是无法成功的!

最新评论