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

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

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

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

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

2回答

9178閲覧

cakePHP3.7.0でCSRF token mismatchというエラーが出てしまう

robert

総合スコア20

PHP

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

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

1クリップ

投稿2018/12/16 14:29

現在cakePHP超入門という本でcakePHPの勉強をしているのですが、フォーム送信の部分で躓いてしまいました。
POSTでデータを贈ろうとするとCSRF token mismatchというエラーメッセージが出てしまい正しいページを表示させることができません。

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

CSRF token mismatch. Cake\Http\Exception\InvalidCsrfTokenException

以下のようなソースコードで実行しています。

該当のソースコード

php

1<?php 2namespace App\Controller; 3 4use App\Controller\AppController; 5 6class HelloController extends AppController { 7 8 public function index() { 9 $this->viewBuilder()->autoLayout(false); 10 $this->set('title','Hello!'); 11 } 12 public function form() { 13 $this->viewBuilder()->autoLayout(false); 14 $name = $this->request->data['name']; 15 $mail = $this->request->data['mail']; 16 $age = $this->request->data['age']; 17 $res = "こんにちは、{$name}{$age})さん。メールアドレスは{$mail}ですね?"; 18 $values = [ 19 'title' => 'Result', 20 'message' => $res, 21 ]; 22 $this->set($values); 23 } 24}

同じような質問がありました。
https://teratail.com/questions/138185
こちらの質問ではCSRFを無効にする回答がありましたが、cakePHPが3.6のもので、3.7では同じように対処できませんでした。

cakePHP3.7でCSRFを無効にする方法を教えていただけるとありがたいです。
どうかよろしくお願いいたします。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/12/17 00:05 編集

同じような質問? 同じサンプルをもとに作成して同じ斜め読みしてる適当に勉強して起きるミスでしょ。 $res に設定する方法が違ウだけでそれ以外は同じですよね。
退会済みユーザー

退会済みユーザー

2018/12/17 00:07

著者はろくでもないな→もともと私はAppleの店舗に勤めていましたので、Mac関係の雑誌にライターとして書く時に、お店で扱っている商品の悪口は書けないものですから、ペンネームを作ったんです
guest

回答2

0

CakePHP超入門というテキストで学習されているということですので、サポートページにある補足情報、正誤表を読まれると良いと思います。
https://www.shuwasystem.co.jp/support/7980html/5409.html

また、その箇所は飛ばして先に進んでも大丈夫なようです。

私も同じところでつまずいたのですが、初心者のため他回答者さんの言っていることが理解できず悩みましたので補足として解答いたしました。

投稿2019/04/04 04:48

編集2019/04/04 04:49
logicool_amino

総合スコア16

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

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

0

ベストアンサー

そもそも form を作る際に、テンプレート側で $this->Form->create() を使っていないのですよね。
だから CSRF トークンがない状態になっています。

CSRF を無効化するのではなく、$this->Form->create を使ってフォームを作成するようにしましょう。それが CakePHP における「規約」です。

※この辺は Cookbook を読めば分かるのですが……

投稿2018/12/17 00:58

tacsheaven

総合スコア13703

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問