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

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

新規登録して質問してみよう
ただいま回答率
85.47%
Laravel 6

Laravel 6は、オープンソースなPHPのフレームワーク。Webアプリケーションの開発に適しており、バージョン6はLTSです。5.8での向上に加えて、セマンティックバージョニングの採用やLaravel Vaporとのコンパチビリティなどが変更されています。

PHP

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

Q&A

解決済

1回答

474閲覧

ブログサイトのログイン画面のエラーメッセージの作成中に起きたエラー解決

退会済みユーザー

退会済みユーザー

総合スコア0

Laravel 6

Laravel 6は、オープンソースなPHPのフレームワーク。Webアプリケーションの開発に適しており、バージョン6はLTSです。5.8での向上に加えて、セマンティックバージョニングの採用やLaravel Vaporとのコンパチビリティなどが変更されています。

PHP

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

0グッド

0クリップ

投稿2023/03/12 02:10

実現したいこと

ログイン画面の実装中に起きたエラーの解決

前提

PHP laravelでブログサイトを作成しています。
ログイン画面で適当な文字を入れた場合や何も入れなかった場合のエラーメッセージを実装中にエラーが出ました。

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

SessionController.phpの19行目

Trying to get property 'password' of non-object

該当のソースコード

SessionController.php

php

1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6 7 8use App\User; 9 10class SessionController extends Controller 11{ 12 public function create(){ 13 return view('session.create', [ 14 'title' => 'ログイン', 15 ]); 16 } 17 public function store(Request $request){ 18 $user = User::where('name', $request->name)->first(); 19 if($user->password !== $request->password){ 20 session()->flash('danger', 'ログインに失敗しました。'); 21 return redirect()->route('session.create'); 22 } 23 session()->put('user_id', $user->id); 24 return redirect()->route('posts.index'); 25 } 26 public function destroy(){ 27 session()->flush(); 28 return redirect()->route('session.create'); 29 } 30} 31

LoginController.php

php

1<?php 2 3namespace App\Http\Controllers\Auth; 4 5use App\Http\Controllers\Controller; 6use App\Providers\RouteServiceProvider; 7use Illuminate\Foundation\Auth\AuthenticatesUsers; 8use App\User; 9use Illuminate\Support\Facades\Validator; 10 11 12class LoginController extends Controller 13{ 14 /* 15 |-------------------------------------------------------------------------- 16 | Login Controller 17 |-------------------------------------------------------------------------- 18 | 19 | This controller handles authenticating users for the application and 20 | redirecting them to your home screen. The controller uses a trait 21 | to conveniently provide its functionality to your applications. 22 | 23 */ 24 25 use AuthenticatesUsers; 26 27 /** 28 * Where to redirect users after login. 29 * 30 * @var string 31 */ 32 protected $redirectTo = RouteServiceProvider::HOME; 33 34 /** 35 * Create a new controller instance. 36 * 37 * @return void 38 */ 39 public function __construct() 40 { 41 $this->middleware('guest')->except('logout'); 42 } 43 44 protected function validator(array $data) 45 { 46 return Validator::make($data, [ 47 'email' => ['required', 'string', 'max:255', 'unique:users'], 48 'password' => ['required', 'string', 'min:8', 'confirmed', 'max:255'], 49 ]); 50 } 51} 52

web.php

php

1<?php 2 3/* 4|-------------------------------------------------------------------------- 5| Web Routes 6|-------------------------------------------------------------------------- 7| 8| Here is where you can register web routes for your application. These 9| routes are loaded by the RouteServiceProvider within a group which 10| contains the "web" middleware group. Now create something great! 11| 12*/ 13 14Route::get('/', function () { 15 return redirect()->route('posts.index'); 16}); 17Route::resource('users', 'UserController')->only([ 18 'create', 'store','edit', 'update' 19]); 20Route::resource('posts', 'PostController')->except([ 21 'show', 22]); 23Route::get('/login', 'SessionController@create')->name('session.create'); 24Route::post('/login', 'SessionController@store')->name('session.store'); 25Route::delete('/logout', 'SessionController@destroy')->name('session.destroy');

試したこと

自分で調べたみたところヘルパ関数のoptional()を使うと良いというサイトが多く自分でも使ってみたのですがnullで返ってくるのでエラーは起きませんでしたがエラーメッセージが出ませんでした。

補足情報(FW/ツールのバージョンなど)

laravel6です。
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

「初心者はログイン機能を自分で作るな」は常識。
if($user->password !== $request->password){なんて書いてる時点で全部間違ってるので最初からやり直し。
store()でやってることは何もかも全部間違ってる。
全部間違ってるのでエラーを修正しても何も解決しない。

Laravel6はすでにサポート切れなのでLaravel9以上とbreezeでLaravelのログイン機能の使い方を覚えるのが一番最初にやるべきこと。

投稿2023/03/12 02:59

kawax

総合スコア10377

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

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

退会済みユーザー

退会済みユーザー

2023/03/12 06:34

ありがとうございます。見直して書き換えようと思います。 また機会がありましたらアドバイスの方よろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問