戻る

フォームへの前回入力値を自動入力する

setcookie()関数、$_COOKIE

この例はHTMLフォームから入力されたデータをクッキーに保存しておき、次回そのページが表示された時に、前回入力時の値を自動的に初期表示させる例です。掲示板投稿における投稿者のニックネームやメールアドレスなど、毎回同じデータを入力する画面などを使うことによって、ユーザの入力作業を軽減させることができます。

<?php
	header("Content-type: text/html; charset=utf-8");
	
	if (isset($_POST["btnExec"])) {
		//送信ボタンがクリックされたとき
		$name = $_POST["username"];
		$address = $_POST["useraddress"];
		//データをクッキーに保存
		setcookie("mycookiedata",
							"ck_name=$name&ck_address=$address",
							time() + (3600 * 24 * 7));
		print "送信されたデータは<BR>";
		print "名前→" . $name . "<BR>";
		print "住所→" . $address . "<BR>";
		print "<BR><BR>";
	}
	else {
		//はじめて呼び出されたとき
		if(strlen($_COOKIE["mycookiedata"]) > 0) {
			//クッキーにデータが保存されているとき
			$data = $_COOKIE["mycookiedata"];
			parse_str($data);
			//分解後のデータをフォームで使う変数に代入
			$name		= $ck_name;
			$address = $ck_address;
		}
	}

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=x-euc-jp">
<META http-equiv="Content-Style-Type" content="text/css">
</HEAD>
<BODY>
名前と住所を入力して[送信]ボタンをクリックしてください。
<FORM action="<?=$_SERVER["PHP_SELF"]?>" method="POST">
	名前:<INPUT size="40" type="text" name="username" value="<?=$name?>"><BR>
	住所:<INPUT size="40" type="text" name="useraddress" value="<?=$address?>">
	<INPUT type="submit" name="btnExec" value="送信">
</FORM>
</BODY>
</HTML>

inserted by FC2 system