ZENDを使用してプロジェクトに取り組んでいます
非常に奇妙で非論理的なことが起こり続けています。
ユーザーが登録すると、アクティベーションコードが生成され、DBに書き込まれます。
//Generate Activation Code;
$activation_code = date('YmdHis');
$activation_code .= substr(number_format(time() * rand(),0,'',''),0,10);
データベースで私は例のために取得します。このようなコード:201212301653302670595490
ユーザーはリンクに移動する必要があります /user/activation/201212301653302670595490
私はコントローラーでこのパラメーターを取得します:
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;
}
}
これは私のブートストラップのカスタムルートです:
$activateUserRoute = new Zend_Controller_Router_Route("user/activate/:activation_code", array(
'module' => 'users',
'controller' => 'manage',
'action' => 'activate'
));
$router->addRoute('activateUserRoute', $activateUserRoute);
DBテーブルの私のセルactivation_codeは、長さが24のVARCHARです('cuzは、24シンボルの長さで生成されたコードです)。
気まずい瞬間
アクティベーションプロセスに失敗し続けます。常にfalseを返します。
DBに移動すると、生成されたコードを任意の番号1、1231231231234、または生成されたコード自体(201212301653302670595490)に置き換えて、アクティブ化します。
たぶん、ここで何が問題になっているのか教えていただけますか?何か練習はありますか?