.htaccessでPHPのファイルアップロードサイズの上限値を変更
2022.02.5
PHPを使用して画像(動画・PDF等)をアップロードするフォームを作成した際に、ファイル…

メールフォームからの問い合わせデータ。アナログの集計が手間なのでDBを使って保存していたのだけれど、簡単に共有したいとのことでスプレッドシートに保存した際の方法をメモ。
Apps Scriptの利用には「googleアカウント」が必要となるため、お持ちでない方は取得してから操作を行ってください。
新しいスプレッドシートを作成し、1行目に、取得したい項目名を入力(例:タイムスタンプ、 お名前、 メールアドレス、 お問い合わせ内容)
スプレッドシートの「拡張機能」から「Apps Script」を開いて、コードを以下の内容に書き換えて帆保存し、「デプロイ」から「新しいデプロイ」選択して進む。
今回はメールフォームに組み込むのでアクセス出来るユーザーを「全員」にしていしてデプロイ。
WEBアプリURLが発行されるので、コピーしておいて後でPHPのソースコード内で使用する
function doPost(e) {
try {
var params = JSON.parse(e.postData.contents);
var SECRET_KEY = "○○○○";
if (!params.access_key || params.access_key !== SECRET_KEY) {
return ContentService.createTextOutput(JSON.stringify({ "result": "error", "error": "Unauthorized" })).setMimeType(ContentService.MimeType.JSON);
}
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("対象のシート名");
var timestamp = new Date(); // 送信日時
sheet.appendRow([
timestamp,
params.name,
params.email,
params.message
]);
// 4. 成功した旨を返却
return ContentService.createTextOutput(JSON.stringify({ "result": "success" })).setMimeType(ContentService.MimeType.JSON);
} catch (error) {
// システムエラーが発生した場合
return ContentService.createTextOutput(JSON.stringify({ "result": "error", "error": error.toString() })).setMimeType(ContentService.MimeType.JSON);
}
}
$data = array(
'access_key' => '○○○○', // Apps Script側で設定したのと「全く同じ」パスワード
'name' => $data["name"],
'email' => $data["email"],
'message' => $data["message"]
);
$gas_url = "https://script.google.com/△△△△/exec"; // Apps ScriptのWebアプリURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $gas_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); // JSON文字列に変換
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/plain')); // Apps Script受信用
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // GASのリダイレクト(302)を追跡するために「必須」
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // レンタルサーバーの環境に応じてSSL検証をスルー
$response = curl_exec($ch);
curl_close($ch);
上記ソースコードをフォームからのメール送信プラグラムの中に記載。
フォームから受け取った値を適切に処理してから「$data」に格納。
「access_key」の箇所は受け取り側のスクリプト(Apps Script)が、外部からの干渉を受けないための保護対策
「CURLOPT_SSL_VERIFYPEER」の項目は「true」の方が安全だが、一部サーバー環境により動かない時のためにサンプルは「false」にしています。
使用条件を変更する場合や、使わなくなった場合は「デプロイ」から「デプロイを管理」に進み右上の編集またはアーカイブ(ゴミ箱)ボタンより作業をおこなう。
Apps Scriptの利用は「googleアカウント」を持っていれば、誰でも無料で使用できるが利用制限があるため、規模が合わない場合は別の方法を考える必要がある
| 機能 | 一般ユーザー向けアカウント(gmail.com など) | Google Workspace アカウント |
| スクリプトの実行時間 | 6 分 / 実行 | 6 分 / 実行 |
| ユーザーあたりの同時実行数 | 30 / ユーザー | 30 / ユーザー |

2022.02.5
PHPを使用して画像(動画・PDF等)をアップロードするフォームを作成した際に、ファイル…

2024.03.30
外部ファイル(CSVファイル等)を読み込んでサイト内に表示する際に、保存時の文字コードが…

2020.10.3
テキストエリア等で入力した文字の中にURLを含んでいた場合に、自動で認識してリンクタグを…

2020.12.5
メールフォームからメールを送信する際に、画像(ファイル)を添付できるようにしてほしいとの…

2020.08.1
動画ファイルをCMS化して保存するときに、多くの場合はファイルパスをデータベース(MyS…

2023.12.2
ワードプレスの投稿のカテゴリー機能を、目的ごとに使い分けたいというご要望があった際に、カ…

2022.09.24
パソコンやスマートフォンの戻るボタンを使って画面を戻す(ブラウザバックする)時があります…

2022.02.19
画像データ等をサーバーにアップロードする際、一点づつアップロードしても良いけれど、ファイ…

2019.12.29
メールフォーム等での入力値チェック(バリデーション)。PHPの「preg_match」(…

2020.08.15
フォームの入力値やURLのパラメータ等、文字列や数値を受け取る際に正規表現を利用してバリ…