在入口文件中加上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 '游客';
}
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答