2009年06月09日


Form(サーバー送信)汎用スケルトン

PHP + HTML + JavaScript  Google AJAX Libraries API  prototype.js
テキストエリアで入力したデータをそのままファイルに出力します。
通常 php では shift_jis を使うと 5c が含まれる日本語には \ が付加されるので注意です。
' や " にも注意してください。

FORM のメソッドが POST なので、再表示では再投稿になるので、
初期画面へと遷移する為のボタンを用意しています。

メッセージは変数にセットして、画面定義に埋め込んでいます
Google 経由prototype.js を利用してオブジェクト参照を容易にしています
但し、IE 以外では、id 要素が必要になるので注意して下さい。
strip メソッドは、prototype.js が追加実装したトリム処理です。
※ dump.php で保存して下さい
<?
header( "Content-Type: text/html; Charset=shift_jis" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );

foreach( $_GET as $Key => $Value ) {
	$_POST[$Key] = $_GET[$Key];
}
foreach( $_POST as $Key => $Value ) {
	$_POST[$Key] = str_replace("\\\\", "\\", $Value );
	$_POST[$Key] = str_replace("\\'", "'", $_POST[$Key] );
	$_POST[$Key] = str_replace("\\\"", "\"", $_POST[$Key] );
}

if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {

	$Message = "POSTされました<br>\n";

	// ファイルへ入力されたデータを書き込み
	file_put_contents( "text.dat", $_POST['text'] );

}

?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis" />

<script
	src="http://www.google.com/jsapi"
	type="text/javascript"
	charset="utf-8"
></script>
<script type="text/javascript">

// Google で HOSTINGされているライブラリを使う
google.load("prototype", "1.6");

// *********************************************************
// フォームのチェック
// *********************************************************
function checkdata() {

	var str = $("text").value
	str = str.strip();

	if ( str == '' ) {
		alert("必須入力です");
		$("text").select();
		$("text").focus();
		return false;
	}

	if ( !confirm( "更新しますか?" ) ) {
		return false;
	}

	// サーバーへ送信
	return true;

}

</script>

</head>
<body>

<input type=button value="初期画面" onClick='location.href="<?= $_SERVER['PHP_SELF'] ?>"'>
<form
	name="frmmain"
	method="post"
	action="<?= $_SERVER['PHP_SELF'] ?>"
	onsubmit='return checkdata()'
>
<textarea id=text name=text cols=80 rows=15></textarea>
<br />
<input type=submit name=send value="送信"> <?= $Message ?>
</form>


</body>
</html>

■ 関連する記事
Form(サーバー送信)汎用スケルトン(2)


posted by at 2009-06-09 15:06 | スケルトン | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します