Written by Manabu Bannai

【PHP】フォームから送信された情報をファイルに保存する方法

PHP PROGRAMMING

フォームから送信された情報を『log.txt』というファイルに保存する方法です。フォームからは、名前とEmail情報が送信されることを想定したプログラムです。備忘録的なまとめです。

HTMLコードは以下

<form action="thanks.php" method="post" enctype="multipart/form-data">
	<label for="name_label">名前</label>
	<input type="text" id="name_label" name="name">

	<label for="email_label">Email</label>
	<input type="email" id="email_label" name="email">
</form>

PHPコードは以下

<?php
if (((isset($_POST["name"])) && ($_POST["name"] != "")) or ((isset($_POST["email"])) && ($_POST["email"] != ""))) {         // 名前かEmailがPOSTされたときに、以下を実行する

          if (isset($_POST["name"])) {	//もしPOSTに [name] があれば
                  $name = $_POST["name"];	//POSTのデータを変数$nameに格納
                 if( get_magic_quotes_gpc() ) { $name = stripslashes("$name"); } 		//クォートをエスケープする
                  $name = htmlspecialchars ($name); 	//HTMLタグを禁止する
                  $name = mb_substr ($name, 0, 30, 'UTF-8'); 		//長いデータを30文字でカット
         }

          if (isset($_POST["email"])) {
                  $email = $_POST["email"];  	 //POSTのデータを変数$nameに格納
                 if( get_magic_quotes_gpc() ) { $email = stripslashes("$email"); }    	//クォートをエスケープする
                  $email = htmlspecialchars ($email);  		//HTMLタグ禁止
                  $email = mb_substr ($email, 0, 30, 'UTF-8'); 		//長いデータを30文字でカット
         }

            $time = date("Y/n/j G:i"); 		//日時の取得
            $write = $time . ", ". $name . ", " . $email. ",". $yourID . "/";  	//新しく書き込むデータを <> で区切って整形
            $log = fopen ("log.txt","a");  	 //書き込み用モードでデータを開く
            flock ($log, LOCK_EX); 	 //ファイルロック開始
            fputs ($log,$write);   	//書き込み処理
            flock ($log, LOCK_UN);  	  //ファイルロック解除
            fclose ($log); 		 //ファイルを閉じる
}
?>

以上で完成です。
ぜひご利用ください( ՞ٹ՞)