この記事では、ThinkPHP フォーム トークン エラーに関連する解決策を分析します。参考のために皆さんと共有してください。詳細は次のとおりです:
今日ThinkPHPを使ってプログラムを作っていたところ、createを使ってデータを作成したところ、「フォームトークンエラー」というエラーメッセージが表示され、BaiduやGoogleで色々調べたところ、以下のような回答が得られました
。1. キャッシュをクリアする: 使用後、キャッシュ内のすべてのファイルを削除し、~app.php と ~runtime.php ファイルの両方を同時に削除しましたが、効果はありませんでした。
2. TOKEN_ON パラメータを FALSE に設定します。試してみましたが、フォーム トークン エラーは表示されませんでしたが、データベースに追加されたデータは空でした。
3. テンプレート ファイルのフォームに {__NOTOKEN__} を追加します。追加されましたが、結果も無効になります。
この時点で私は言葉を失いました。もしかして、私のコンピューター上の ThinkPHP が動作していないのでしょうか?そうではないと思いますが、加算関数を書き直したところ、結果は正常でした。この時点で、最後に書いた関数が間違っていたのではないかと思い始めました。でも、調べてみたら、それは正しかったことが分かりました!その後、ゆっくりとファイルを 1 つずつチェックし始め、最終的に理由を発見しました:
ThinkPHPが自動生成するフォルダーの中に「Data」というフォルダーがあり、その下に「_fields」フォルダーがあり、このフォルダーに各モデルのデータテーブルの関連情報、つまりMappingが格納されています。 1 つを注意深く確認したところ、「'_autoinc' => true」を持つファイルは 2 つだけで、他にも次のようなファイルが多数あることがわかりました。 リーリー
この時点で、これらのデータの一部を削除した理由がわかります。このように、ThinkPHP はフォーム検証を実行する際にデータをマッピングできず、そのため ThinkPHP エラーが発生します。データをテーブルに追加した後、再実行すると正常に動作します。以上、この問題は解決しました~~~~
(この記事で説明されている thinkPHP 環境は初期バージョンです。新しいバージョンを使用する場合は、対応するディレクトリを参照してください)
追記: 乱雑なコードを整理するのに役立つ、このサイトで推奨されているいくつかの書式設定/美化/変換ツールを紹介します。
phpコードのオンライン書式設定および美化ツール:
http://tools.jb51.net/code/phpformat
JavaScriptコードの美化/圧縮/フォーマット/暗号化ツール:
http://tools.jb51.net/code/jscompress
オンライン XML フォーマット/圧縮ツール:
http://tools.jb51.net/code/xmlformat
JSON コードのフォーマットおよび美化ツール:
http://tools.jb51.net/code/json
オンライン XML/JSON 変換ツール:
http://tools.jb51.net/code/xmljson
json コードのオンライン整形/美化/圧縮/編集/変換ツール:
http://tools.jb51.net/code/jsoncodeformat
SQL コードのオンライン書式設定および美化ツール:
http://tools.jb51.net/code/sqlcodeformat
この記事が皆さんの ThinkPHP フレームワークに基づく PHP プログラムの設計に役立つことを願っています。