我正在使用ZEND工作項目提交更新查詢後用戶激活碼不會激活
一個非常奇怪且非邏輯的事情不斷髮生。
當用戶註冊它生成激活碼的寫入DB:
//Generate Activation Code;
$activation_code = date('YmdHis');
$activation_code .= substr(number_format(time() * rand(),0,'',''),0,10);
在數據庫中,我得到了前
。像這樣的代碼:
用戶應該去鏈接/user/activation/201212301653302670595490
我得到這個PARAM與控制器:
public function activateAction() {
$activation_code = htmlentities(trim($this->_getParam('activation_code', 0)));
$activation_code = preg_replace("/[^0-9]/","", $activation_code);
$usersModel = new Users_Model_DbTable_Users();
$result = $usersModel->activUser($activation_code);
if($result) {
$this->view->message = 'Your account is activated. You may now Login.';
} else {
$this->view->message = 'Something went wrong.';
}
}
此操作調用我的模型的函數:
public function activUser($activation_code) {
$data = array(
'status' => 2
);
if($this->update($data, 'activation_code = '. $activation_code)) {
return true;
}
}
這是我Bootstrap中的自定義路由:
$activateUserRoute = new Zend_Controller_Router_Route("user/activate/:activation_code", array(
'module' => 'users',
'controller' => 'manage',
'action' => 'activate'
));
$router->addRoute('activateUserRoute', $activateUserRoute);
我的單元激活代碼在DB表中是長度爲24('cuz生成的代碼長度爲24個符號)的VARCHAR。
的尷尬時刻
它一直未能激活過程。它總是返回false;
如果我去DB,用任何數字1,1231231231234甚至生成的代碼本身(201212301653302670595490)替換生成的代碼,它執行激活。
也許你可以告訴我這裏有什麼問題嗎?任何做法?
Mikey,你有一個自定義的路線設置? URL'/ user/activation/201212301653302670595490'中的'activation'操作與您的'activate'操作不匹配。如果我們可以看到你正在使用什麼路線,那麼我們可以確定'$ this - > _ getParam('activation_code',0)'的值是多少。 – toneplex
@toneplex是的我有我的自定義路由,問題是它工作正常,任何值,我直接在表中通過phpMyAdmin寫入,並且它與第一項(我的意思是當表中只有1個用戶)。我使用自定義路線更新了這個問題。 – mrGott
嘗試將更新語句更改爲以下內容 '$ where = $ this-> getAdapter() - > quoteInto('activation_code =?',$ activation_code); if($ this-> update($ data,$ where){ return true; } – toneplex