投稿

ラベル(JavaScript)が付いた投稿を表示しています

【PHP, JavaScript】POSTデータが多すぎてエラーになったときにとった対応

画面からユーザーの入力値をPOSTするプログラムで500エラーが発生し、エラーログを確認すると以下のメッセージを吐いていました。 *413 FastCGI sent in stderr: "PHP message: PHP Warning: Unknown: Input variables exceeded nnn. このエラーはユーザーの入力値が多すぎて、submitしたときサーバー側で弾かれているエラーで、しきい値は php.ini の以下で設定できます。 php.ini ; How many GET/POST/COOKIE input variables may be accepted max_input_vars = 100 しかし本来セキュリティの観点から、この値は抑えられている(デフォルトは1000)ケースがあります。その場合は、フロント側で吸収する必要があるためその方法をまとめます。※あくまで一つの例なので他に良い方法があるかもしれません。 今回発生したケースでは、ユーザーや店舗などの設定値を縦に並べて一括で更新するという処理で、100は余裕で超えてしまうため対応を行いました。 POSTデータを入力するView(修正前) (※だいぶ簡単にしたもの) <form method="post" action="/users/index"> <input type="submit" name="regist">更新</input> <?php foreach($users as $user):?> <label><?php echo $user['id'];?></label> <label><?php echo $user['name'];?></label> <input type="text" name="age[<?php echo $user['id'];?&

【js】ブラウザの言語設定により表示する文字を切り替える

イメージ
Javascriptを利用してブラウザで設定されている言語を取得し、言語によって表示を切り替える方法をまとめます。 Javascriptでブラウザの言語設定を取得する方法は、使用するブラウザによって異なります。 これは以下の記事を参考にしました。 https://easyramble.com/get-language-setting-by-javascript.html 方法としてはonloadでブラウザの言語設定を取得して、あらかじめ2パターン用意した記述の片方を非表示にします。 実装 ブラウザの言語設定取得 language_test.html <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Laungage Test</title> <style type="text/css"> <!-- #body { margin-left: 1em; margin-right: 1em; } --> </style> <script> window.onload = function() { var language; if (navigator.browserLanguage != null) { // Internet Explorer, Opera, 他 language = navigator.browserLanguage.substr(0, 2); } else if(navigator.userLanguage != null) { // Internet Explorerの場合 language = navigator.userLanguage.substr(0, 2); } else if(navigator.language != null) { // Chro