1. 現在位置:
  2. トップページ
  3. HP作成tips
  4. PHP-メッセージ
メッセージ
■ サンプル

更新履歴の応用です
「一言メッセージ?」こちら 管理者パスワードは「test」です

書き込みは最大72文字で設定してあります、それ以上にするとレイアウトが崩れます。
メッセージ表示 new.php
管理者パスワードチェックと書き込み new_a.php
書き込みチェック new1.php
ログファイル new.dat(666)
一時書き込み用 new1.dat(666)

■ ソース

new.php  レイアウトや画像はご自由に
<?php
/*
 * メッセージ
 *
 * Author  : Othubo Mithue
 * Date    : 2005.12.7
 * LastModify : 2005.12.7
 *
 * (c) 2005 mitti All rights reserved.
 *
 */
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=x-sjis">
<title>メッセージ(カエル)</title>
<style type="text/css">
TD { font-size: 10pt }
</style>
</head>
<body bgcolor="#ffffff">
<CENTER>
<FORM action="new_a.php" method="post">
<TABLE BORDERCOLOR="#ffffff" BORDER="0" CELLSPACING="0" CELLPADDING="0" width="200">
<TR><TD colspan="3" WIDTH="200"><IMG SRC="kaeru1.gif"></TD></TR>
<TR>
<TD WIDTH="28"><IMG SRC="kaeru2.gif"></TD>
<TD WIDTH="149" VALIGN="top"><? include("new.dat"); ?></TD>
<TD WIDTH="23"><IMG SRC="kaeru3.gif"></TD></TR>
<TR><TD colspan="3" WIDTH="200"><IMG SRC="kaeru4.gif"></TD></TR>
</TABLE>
<input type=password name="pass" size=10>
<INPUT type="image" src="tama.gif" alt="管理者専用">
</FORM>
</CENTER>
</BODY>
</HTML>

■ ソース

new_a.php
<?php
/*
 * メッセージ
 *
 * Author  : Othubo Mithue
 * Date    : 2005.12.7
 * LastModify : 2005.12.7
 *
 * (c) 2005 mitti All rights reserved.
 *
 */
$pass = $HTTP_POST_VARS['pass'];
$submit = $HTTP_POST_VARS['submit'];

//★ 書き込みボタンが押されて呼出された後の処理
if ($image == "管理者専用") {
}
//★ 入力のチェック
if (strstr($pass , 'test')){

print "<html>\n";
print "<head>\n";
print "<title>メッセージ(カエル)</title>\n";
print "<META Http-Equiv='Content-Type' Content='text/html;charset=x-sjis'>\n";
print "<style type='text/css'>\n";
print "TD { font-size: 10pt }\n";
print "</style>\n";
print "</head>\n";
print "<body bgcolor='#ffffff' link='#3333ff' vlink='#000033' alink='#ffff00' marginwidth=0 marginheight=0 leftmargin=0 topmargin=0>\n";
print "<center>\n";
print "<BR><BR><BR>\n";
print "<FORM action='new1.php' method='post'>\n";
print "<TABLE BORDER=0 cellpadding=5 cellspacing=0>\n";
print "<TR>\n";
print "<TD>メッセージ</TD>\n";
print "<TD><input type='text' name='comment' size=60 MAXLENGTH=72></TD>\n";
print "</TR>\n";
print "<TR><TD align='center' colspan=2>\n";
print "<INPUT TYPE='submit' VALUE='送信する'>\n";
print "</TD></TR>\n";
print "</TABLE>\n";
print "</FORM>\n";
print "<BR>\n";
print "</center>\n";
print "</body>\n";
print "</html>\n";
}
else{
    print("こちらは管理者専用です。ブラウザの戻るボタンで戻ってください。\n");
    exit;
}
?>

■ ソース

new1.php
<?php
/*
 * メッセージ
 *
 * Author  : Othubo Mithue
 * Date    : 2005.12.7
 * LastModify : 2005.12.7
 *
 * (c) 2005 mitti All rights reserved.
 *
 */

$comment = $HTTP_POST_VARS["comment"];
$submit = $HTTP_POST_VARS["submit"];
$daytime = date('Y/m/d');

$comment = stripslashes($comment);

//★ 書き込みボタンが押されて呼出された後の処理
if ($submit == "送信する") {

//★ 入力のチェック
if (! empty($comment)) {
}

else{
    print("記入もれです。ブラウザの戻るボタンで戻ってください。<BR>\n");
}
}

//★ ファイルに書き込む文字列の作成
    $message = "$comment \n";

// ファイルオープン1
    $fp = fopen("new.dat","r+");
    if ($fp == FALSE){
        print("ファイルポインタのオープンに失敗しました。<BR>\n");
        exit;
    }
    flock($fp, LOCK_EX);

// ファイルオープン2
    $fp2 = fopen("new1.dat","w+");  // fopen=ファイルまたはURLをオープンする
    if($fp2 == FALSE){
        print("ファイルポインタのオープンに失敗しました。<BR>\n");
        exit;
    }

    set_file_buffer($fp, 0);  // set_file_buffer=指定したファイルポインタのファイルバッファを設定する
    set_file_buffer($fp2, 0);  // 0とした場合、書き込み操作は、 バッファリングされません

// フアイル2に追加書込みを書き込む
    fputs($fp2,$message);  // fputs=ファイルポインタに書き込む

// ファイル1からファイル2へ読込み
    $count = 1;    // 最大表示チェック
    while(!feof($fp) && ($count < $count_max)){  // feof=ファイルポインタがファイル終端に達しているかどうか調べる
        $buffer = fgets($fp,4096);  // fgets=ファイルポインタから1行取得する
        fputs($fp2,$buffer);  // fputs=ファイルポインタに書き込む
        $count++;
    }
    rewind($fp);  // rewind=ファイルポインタの位置を先頭に戻す
    rewind($fp2);

// ファイル2からファイル1へ読込み
    while(!feof($fp2)){  // feof=ファイルポインタがファイル終端に達しているかどうか調べる
        $buffer = fgets($fp2,4096);  // fgets=ファイルポインタから1行取得する
        fputs($fp,$buffer);  // fputs=ファイルポインタに書き込む
    }
    $len = ftell($fp);  // ftell=ファイルポインタから読み書きの位置を取得する=最終的に書き込んだ終端を取得する
    ftruncate($fp,$len);  // ftruncate=ファイルを指定した長さに丸める=余計な分を切り落とす

// ファイル1をロック解除
    flock($fp, LOCK_UN);  //LOCK_UN=ロック解除 flock=汎用のファイルロックを行う

    fclose($fp);  // fclose=オープンされたファイルポインタをクローズする
    if (!$fp) {
        print("ファイルポインタのクローズに失敗しました。<BR>\n");
        exit;
    }
    fclose($fp2);
    if (!$fp2) {
        print("ファイルポインタのクローズに失敗しました。<BR>\n");
        exit;
    }
header("Location: new.php\n\n");
?>