初めての質問です、よろしくお願い申し上げます。
php初心者ながらMVCにチャレンジしたく、zenzdframeworkで会員登録の仕組みを練習しています。
下記のように記述して、DBに登録される所までクリアできたのですが、肝心のエラーチェックがうまくいきません。
親切な方がいましたら、ご教授頂けると有難いです。
lang
1 2<?php 3 4require_once('BaseController.php'); 5 6 7class UsersController extends BaseController 8{ 9 10 /** 11 * メンバー登録フォームを表示 12 */ 13 public function signupAction() 14 { 15 16 } 17 18 19 /** 20 * メンバー登録フォームからの送信内容を処理 21 */ 22 public function emailregistAction() 23 { 24 $errors = array(); 25 26 // 入力内容をチェック 27 28 // email の validation 29 $name = $me['name']; 30 $email = $me['email']; 31 32 // 全角英数を半角にする 33 $email = mb_convert_kana($email, 'a'); 34 35 // email チェック 36 if (empty($email)) { 37 $this->errors['email'] = array('required' => 'メールアドレスを入力してください。'); 38 } elseif (!is_valid_email($email)) { 39 $this->errors['email'] = array('invalid' => 'メールアドレスが正しくありません。'); 40 } else { 41 $user = $this->getUserByEmail($email); 42 if ($user) { 43 $this->errors['email'] = array('duplicate' => 'このメールアドレスはすでに利用されています。'); 44 } 45 } 46 47 // ... ここ大事 48 49 if (!$errors) { 50 // 内容に問題がなければ登録する 51 52 // 登録するデータ 53 $data = array(); 54 $data['user_id'] = md5(uniqid(mt_rand(), true)); // ユーザーIDを発行 55 $data['name'] = $this->_getParam('name'); 56 $data['email'] = $this->_getParam('email'); 57 $data['password'] = sha1($this->_getParam('password')); // パスワードを暗号化 58 59 // データベース接続を取得 60 $db = $this->application->getBootstrap()->getResource('db'); 61 62 // データ登録(挿入) 63 $db->insert("user", $data); 64 65 // ユーザーに登録完了メールを送信 66 67 } else { 68 // エラーがある場合はエラーを表示 69 } 70 71 } 72 73 74 public function newpasswordAction() 75 { 76 // action body 77 } 78 79 80 /** 81 * ログインフォームを表示 82 */ 83 public function signinAction() 84 { 85 $user = Zend_Auth::getInstance()->getStorage()->read(); 86 if ($user) { 87 // ログイン済み 88 // ... 89 } 90 } 91 92 93 /** 94 * ログインフォームからの送信内容を処理 95 */ 96 public function signincheckAction() 97 { 98 // 入力内容をチェック 99 // ... ここ大事 100 101 // データベース接続を取得 102 $db = $this->application->getBootstrap()->getResource('db'); 103 104 // コンストラクタにパラメータを渡し、インスタンスを設定します 105 $authAdapter = new Zend_Auth_Adapter_DbTable( 106 $db, 107 'user', 108 'email', 109 'password', 110 'SHA1(?)' 111 ); 112 113 // 入力情報 (ログインフォームからの値など) を設定します 114 $authAdapter 115 ->setIdentity($this->_getParam('email')) 116 ->setCredential($this->_getParam('password')) 117 ; 118 119 // Zend_Auth_Adapter_DbTable による認証を行います 120 $result = $authAdapter->authenticate(); 121 122 if ($result->isValid()) { 123 // 認証成功 124 125 // 認証情報をオブジェクトとして保存し、username と real_name のみを返します 126 $storage = Zend_Auth::getInstance()->getStorage(); 127 $storage->write($authAdapter->getResultRowObject(array( 128 'user_id', 129 'name', 130 'email' 131 ))); 132 133 /* ... */ 134 135 // トップへ転送 136 $this->_redirect(''); 137 138 } else { 139 // 認証失敗 140 141 /* ... */ 142 143 echo 'login failed'; 144 exit; 145 146 } 147 } 148 149 150 /** 151 * ログアウト処理 152 */ 153 public function signoutAction() { 154 // ログアウト 155 Zend_Auth::getInstance()->clearIdentity(); 156 157 // トップへ転送 158 $this->_redirect(''); 159 } 160 161}

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/05 15:03