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

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

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

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

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

パスワード

パスワードは主に情報にアクセスする際に扱われます。主に、アクセス可能なユーザーを限定する手段として使われます。

CSRF

クロスサイトリクエストフォージェリ (Cross site request forgeries、CSRF)は、 外部Webページから、HTTPリクエストによって、 Webサイトの機能の一部が実行されてしまうWWWにおける攻撃手法です。

Q&A

解決済

2回答

956閲覧

POST指定をしているがPOSTで送信されない(パスワードリセット)

kuwabaraakinori

総合スコア10

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

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

パスワード

パスワードは主に情報にアクセスする際に扱われます。主に、アクセス可能なユーザーを限定する手段として使われます。

CSRF

クロスサイトリクエストフォージェリ (Cross site request forgeries、CSRF)は、 外部Webページから、HTTPリクエストによって、 Webサイトの機能の一部が実行されてしまうWWWにおける攻撃手法です。

0グッド

1クリップ

投稿2020/07/29 12:54

編集2020/07/30 04:11

前提・実現したいこと

Laravel6.0で旅行投稿サイトを制作しています。
今発生している問題は、login.blade.phpで「パスワードをお忘れの方」からパスワードリセットのためのemail.blade.phpに飛ばそうとしていますが、下記のエラーが発生しています。

ご教授いただけますと幸いです。

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

The GET method is not supported for this route. Supported methods: POST

該当のソースコード

login.blade.php @extends('layouts.app') @section('content') <div class="text-center"> <h1 style="font-family:serif; text-align:center; margin-top:20px;">ログイン</h1> </div> <div class="row"> <div class="col-sm-6 offset-sm-3"> {!! Form::open(['route' => 'login.post']) !!} <div class="form-group"> {!! Form::label('email', 'Email') !!} {!! Form::email('email', old('email'), ['class' => 'form-control']) !!} </div> <div class="form-group"> {!! Form::label('password', 'Password') !!} {!! Form::password('password', ['class' => 'form-control']) !!} </div> {!! Form::submit('ログイン', ['class' => 'btn btn-primary btn-block']) !!} <div class="text"> <h6 style="font-family:serif; text-align:center; margin-top:20px;"><a href="/signup" class="btn btn-link">ユーザー登録がまだの方</a></h6> </div> <div class="text"> <h6 style="font-family:serif; text-align:center; margin-top:20px;"><a href="{{ route('password.email') }}" class="btn btn-link" >パスワードをお忘れの方</a></h6> </div> {!! Form::close() !!} </div> </div> @endsection
<?php /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */ Route::get('/' , 'ContentController@index')->name('index'); Auth::routes(['verify' => true]); Route::get('signup', 'Auth\RegisterController@showRegistrationForm')->name('signup.get'); Route::post('signup', 'Auth\RegisterController@register')->name('signup.post'); Route::get('login' , 'Auth\LoginController@showLoginForm')->name('login'); Route::post('login' , 'Auth\LoginController@login')->name('login.post'); Route::get('logout' , 'Auth\LoginController@logout')->name('logout.get'); Route::get('search' , 'SearchController@index')->name('search'); Route::get('/contact' , 'ContactController@index')->name('contact.index'); Route::post('/contact/confirm' , 'ContactController@confirm')->name('contact.confirm'); Route::match(['get', 'post'], '/contact/send' ,'ContactController@send')->name('contact.send'); Route::post('password/email' , 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email'); Route::post('password/confirm' , 'Auth\ConfirmPasswordController@showConfirmForm')->name('password.confirm'); Route::get('password/reset/{token}' , 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.update'); Route::post('password/reset', 'Auth\ResetPasswordController@reset'); Route::group(['middleware' => ['auth']], function(){ Route::resource('/content' , 'ContentController' , ['except'=>['index']]); Route::resource('users', 'UsersController', ['only' => ['index' , 'show' ]]); });
email.blade.php @extends('layouts.app') @section('content') <div class="container"> <div class="row justify-content-center"> <div class="col-md-8"> <div class="card"> <div class="card-header">{{ __('Reset Password') }}</div> <div class="card-body"> @if (session('status')) <div class="alert alert-success" role="alert"> {{ session('status') }} </div> @endif <form method="POST" action="{{ route('password.email') }}"> @csrf <div class="form-group row"> <label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label> <div class="col-md-6"> <input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email" autofocus> @error('email') <span class="invalid-feedback" role="alert"> <strong>{{ $message }}</strong> </span> @enderror </div> </div> <div class="form-group row mb-0"> <div class="col-md-6 offset-md-4"> <button type="submit" class="btn btn-primary"> {{ __('Send Password Reset Link') }} </button> </div> </div> </form> </div> </div> </div> </div> </div> @endsection

試したこと

・ @csrf追加
・Route::match([get,post]~の実装

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

Laravel6.0

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

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

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

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

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

norirnori

2020/07/29 13:11 編集

書き間違い
kuwabaraakinori

2020/07/29 13:24

前回のものは@csrfが抜けていたので、エラーをはいていました。今回は、@csrfを入れているのにエラーをはいているので、今回質問しました。言葉足らずですいません。
guest

回答2

0

自己解決

自己解決しました。↓

そもそもrouteがおかしかったです。加えて、if (Route::has('passsword.request'))で

<h6 style="font-family:serif; text-align:center; margin-top:20px;"><a href="{{ route('password.email') }}" class="btn btn-link" >パスワードをお忘れの方</a></h6>

@if (Route::has('password.request')) <h6 style="font-family:serif; text-align:center; margin-top:20px;"><a href= "{{ route('password.request') }}">パスワードをお忘れの方</a></h6> @endif

に変更しました。

回答してくださった方々ありがとうございました。

投稿2020/07/30 12:01

kuwabaraakinori

総合スコア10

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

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

0

php

1Route::post('login' , 'Auth\LoginController@login')->name('login.post');

と書いているのに、methodにGETを指定しているから

The GET method is not supported for this route. Supported methods: POST

と言われるのでしょう。

Form::open という書き方は詳しく知らないですが、出力されているHTMLを確認してみて下さい。

投稿2020/07/29 14:45

yuki84web

総合スコア1857

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

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

kuwabaraakinori

2020/07/29 15:21

ご回答ありがとうございます。 恐らく、login.blade.phpの中のloginとsignup.getがget methodでpassword.emailがpost methodの違いによるものと判断してこのエラーが発生すると考えました。しかし、password.emailのほうをget methodに変更した場合、そのままsignup.getのrouteに飛んでしまうのですが、これはどのようにするべきでしょうか? 分からないなりに@includeでpassword.emailの部分だけ別のファイルを作ってやってみましたが、だめでした。他に何か手がかりなどはあるでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問