質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

2回答

4379閲覧

PHPにてCreating default object from empty valueとなる

gobindar

総合スコア51

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2018/11/23 07:07

前提・実現したいこと

php Laravel5.5でWebサイトを作成しており、
userテーブルの項目の値に応じてログイン時のエラーメッセージを
変える機能を実装しております。
以下3ステップを実現したいです。

①request内のemailと合致するuserテーブルのレコードを探す
②レコードがなかった場合、レコードの項目statusを3とする
③レコードがあった場合、レコードの項目statusごとに表示を出力する
(0もしくは2であればauth.failed_provisional、
9であればauth.failed_quit、そのほかはauth.failed)

該当のソースコード

protected function sendFailedLoginResponse(Request $request) { $user = new \stdClass; $user = User::where('email', $request->email)->first(); if (is_null($user)) { $user->status = 3; } if($user->status === 0 or 2){ throw ValidationException::withMessages([ $this->username() => [trans('auth.failed_provisional')], ]); }elseif($user->status === 9){ throw ValidationException::withMessages([ $this->username() => [trans('auth.failed_quit')], ]); }else{ throw ValidationException::withMessages([ $this->username() => [trans('auth.failed')], ]); }}

発生している問題・エラーメッセージ

$user->status = 3;のところで、

Creating default object from empty value

となります。

悩んでいること

まず、エラーの解消法を知りたいです。
その上で、
やりたいことは単純なのですが、
初心者のため、下記疑問があり、非常に効率が悪いです。
(googleで検索をかけても、結局限られた条件下での
対応がヒットするため、MECEな理解が難しいです。)
どなたか助けて頂けますと幸甚です。

・各変数の初期値をどう定義するのが正しいのかわからない
(今は$userが無定義だとエラーが発生するので、$user = new \stdClass;
調べた結果としていますが、本当に正しいかわかりません)
・空白の場合のチェックがis_null($user)でよいのかわからない
・変数が配列なのか要素なのかどうかでどう対応(初期値定義方法や空白
チェックの方法)が異なるのかわからない

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/11/23 07:50

Laravelリファレンスは確認されてますよね・・・?
gobindar

2018/11/23 08:00 編集

ご回答ありがとうございます。確認していますが、自前のログイン制御の項目や、リクエスト関連のページを見ても、全く見当がつきません。わからない単語は一つ一つ検索して確かめて意味を理解するようにしていますが、上記に記載させて頂きました疑問はLaravelというよりphpの体系的な理解が必要のようで、そこにたどり着くまでが非常に難しいです。
guest

回答2

0

自己解決

https://teratail.com/questions/159740
上記の質問の解決方法にて解決しました。

投稿2018/11/27 09:20

gobindar

総合スコア51

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ご自分で認証部分を頑張って作っておられるようですが、実はLaravelには標準で認証周り一通り作ってくれる便利な機能があります。もしご存知ではなく、なさろうとしている事の要件に見合うのであれば、以下のサイト等を参考に、コマンドを実行してみてはいかがでしょうか?

Laravel 5.5 認証
https://readouble.com/laravel/5.5/ja/authentication.html

Laravelの認証機能でログイン/ユーザ登録/パスワードリセットなどの管理画面を一撃構築する(基本&入門編)
https://www.ritolab.com/entry/51

Laravel 5.5 の認証機能とそのカスタマイズ
https://qiita.com/naga3/items/4f3defde59b31a1a797e

ただ、ある程度、認証周りをオリジナルで作り込んだ後に、認証を作るコマンドphp artisan make:authを入力しても、上手く作れない例もあるそうなので、ご注意ください。その場合はGit管理をされていれば、First Commitまで戻ってから認証追加のコマンドを入れ、あとでマージするのが良いかと思います。

投稿2018/11/26 11:31

sakamata

総合スコア203

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gobindar

2018/11/27 00:05

ご回答有り難うございます。 実は挙げて頂いたページを見て、機能を作成致しました。 ですが、下記2つの理由で、作成した機能に対して カスタマイズを行っているところです。 ・仮会員登録→本会員登録の機能がない ・仮会員や本会員登録などのステータスによって  異なるエラーを出す機能がない せっかく参考文献を挙げて頂いたにも関わらず大変恐縮なのですが、 ご質問を再度ご確認して頂けますと幸甚です。 宜しくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問