見出し画像

第128回:PHPでログイン機能開発。ver6.0

こんにちは。NGE16です。

前回に引き続き、エラー処理を行なっていきましょう。

errorsオブジェクトの作成

Controller.phpにエラー情報を格納するため、_errorsオブジェクトを作成してプライベートプロパティを宣言します。

private $_errors;

初期化を行うために、以下の記述を加えていきます。

public function __construct() {
  $this->_errors = new \stdClass();
}

setErrorsメソッドの処理内容をつくっていくために、以下の記述を加えていきます。

protected function setErrors($key, $error) {
  $this->_errors->$key = $error;
}

getErrorsメソッドの処理内容をつくっていくために、以下の記述を加えていきます。

public function getErrors($key) {
  return isset($this->_errors->$key) ?  $this->_errors->$key : '';
}

hasErrorメソッドの処理内容をつくっていくために、以下の記述を加えていきます。

protected function hasError() {
  return !empty(get_object_vars($this->_errors));
}

Webブラウザで確認を行い、メールアドレスが間違っていると、このような表示になります。

メールアドレスが正しいが、パスワードが無い場合は、このような表示になります。

valuesオブジェクトの作成

Controller.phpにViewと値を受け渡すために、_valuesオブジェクトを作成してプライベートプロパティを宣言します。

private $_values;

初期化を行うために、以下の記述を加えていきます。

$this->_values = new \stdClass();

setValuesメソッドの処理内容をつくっていくために、以下の記述を加えていきます。

protected function setValues($key, $value) {
  $this->_values->$key = $value;
}

getValuesメソッドの処理内容をつくっていくために、以下の記述を加えていきます。

public function getValues() {
  return $this->_values;
}

valuesオブジェクトにemailの値を入れるために、Signup.phpに以下の記述を加えていきます。

$this->setValues('email', $_POST['email']);

viewで表示するために、signup.phpに以下の記述を加えていきます。

<input type="text" name="email" placeholder="email" value="<?= isset($app->getValues()->email) ? h($app->getValues()->email) : ''; ?>">

Webブラウザで、メールアドレスの入力後にエラーが発生してもメールアドレスは表示されたままであることを確認します。

今回は以上になります。

次回は、CSRF対策とユーザーの新規登録について進めていきたいと思います。
"PHPでログイン機能開発。ver6.0" へ続く。

この記事が気に入ったらサポートをしてみませんか?