<?php
# プログラム bbs.php STEP13
$submit = $HTTP_POST_VARS["SUBMIT"];
if ($submit=="送信") {
$name = $HTTP_POST_VARS["NAME"];
$mail = $HTTP_POST_VARS["MAIL"];
$body = $HTTP_POST_VARS["BODY"];
if ($name=="" or $body=="") {
echo '<font color="#FF000">必須項目入力エラー</font><br>';
echo 'お名前と本文は必ず入力してください<br>';
echo '<a href="javascript:history.back()">戻る</a>';
exit;
}
# HTML取除き
$name = htmlspecialchars("$name");
$mail = htmlspecialchars("$mail");
$body = htmlspecialchars("$body");
# クォート取除き
if( get_magic_quotes_gpc() ) { $name = stripslashes("$name"); }
if( get_magic_quotes_gpc() ) { $mail = stripslashes("$mail"); }
if( get_magic_quotes_gpc() ) { $body = stripslashes("$body"); }
# メッセージ長1,000文字でカット
$body = substr($body, 0, 1000);
$body = str_replace("\r\n", "<br>", $body);
$dt = date("y/m/d H:i:s");
$data = file("data.txt");
$fp = fopen("data.txt", "w");
fwrite($fp, "$name\t$mail\t$body\t$dt\n");
$i = 1;
foreach ($data as $value) {
if($i < 30) {
fwrite($fp, "$value");
$i++;
}
}
fclose($fp);
header("Location: bbs.php");
exit;
}
# ノーキャッシュヘッダー
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
echo '
<html>
<head>
<title>PHP-BBS</title>
</head>
<body>
<h1>PHP-BBS</h1>
STEP11<br>
<form method="post" action="bbs.php" accept-charset="x-euc-jp">
お名前 <input type="text" size="16" maxlength="30" name="NAME">
メール <input type="text" size="30" maxlength="50" name="MAIL"><br>
本文<br>
<textarea rows="10" cols="70" wrap="soft" name="BODY"></textarea><br>
<input type="submit" name="SUBMIT" value="送信">
</form>
';
$data = file("data.txt");
foreach ($data as $value) {
$view = explode("\t", $value);
echo '<hr size="5" width="70%" align="left" noshade>';
if ($view[1]=="") { echo "<font color=\"#000080\"><b>$view[0]</b></font> $view[3]<br>"; }
else { echo "<a href=\"mailto:$mail\"><font color=\"#000080\"><b>$view[0]</b></font></a> $view[3]<br>"; }
echo "$view[2]<br>";
}
echo '</body></html>';
?>
|
if( get_magic_quotes_gpc() )のget_magic_quotes_gpc()はPHPが現在どのようなクォート記号を有効にしているのかの状態を調べる関数で、その結果onの場合は{ }の中を実行します。
$name = stripslashes("$name");のstripslashesはPHPのクォートされた文字列のクォート部分を取り除く命令です。
$nameに格納された文字列からクォートを取り除き再び$nameへ戻しています。
おまじないとして、
if(get_magic_quotes_gpc()) 変数 = stripslashes("変数"); と覚えた方が早いと思います。
これで「簡単PHP掲示板講座」は全て終了です。
最後に今までのプログラム(ソース)をよりPHPっぽく?書いて完成にしたいと思います。
※無理に書き換える必要はありませんが(笑)。
|