1. 現在位置:
  2. トップページ
  3. HP作成tips
  4. PHP-メール送信フォーム
管理者専用メモ
■ サンプル

「メモ」こちら  パスワードは「abcd」

memo.php 表示用、パスワード入力
memo_1.php 入力画面
memo1.php 入力チェック書き込み
memo.dat 書き込み表示
memo1.dat 一時書き込み用

■ ソース

memo.php
<!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>
</head>
<body>
<TABLE BORDERCOLOR="#f5e0e0" BORDER="1" CELLSPACING="0" CELLPADDING="0" width="170">
<?php include("memo.dat"); ?>
</TABLE>
<FORM action="memo_1.php" method="post">
<input type=password name="pass" size=10>
<BR>
<INPUT TYPE="submit" name="submit" VALUE="管理者専用">
</FORM>
</BODY>
</HTML>


■ ソース

memo_1.php
<?php
$pass = $HTTP_POST_VARS["pass"];
$submit = $HTTP_POST_VARS["submit"];

if ($submit == "管理者専用") {}
if (strstr($pass , 'abcd')){

print "<html>\n";
print "<head>\n";
print "<title>メモ</title>\n";
print "<META Http-Equiv='Content-Type' Content='text/html;charset=x-sjis'>\n";
print "</head>\n";
print "<body bgcolor='#ffffff'>\n";
print "<center>\n";
print "<BR><BR><BR>\n";
print "<FORM action='memo1.php' method='post'>\n";
print "<TABLE BORDER=0 cellpadding=0 cellspacing=0>\n";
print "<TR>\n";
print "<TD>内容</TD>\n";
print "<TD><input type='text' name='comment' size=90></TD>\n";
print "</TR>\n";
print "<TR><TD align='center' colspan=2>\n";
print "<BR><INPUT TYPE='submit' VALUE='送信する'>\n";
print "</TD></TR>\n";
print "</TABLE>\n";
print "<FORM>\n";
print "</center>\n";
print "<BR>\n";
print "</body>\n";
print "</html>\n";
}
else{
  print("こちらは管理者専用です。ブラウザの戻るボタンで戻ってください。\n");
  exit;
}
?>


■ ソース

memo1.php
<?php
$count_max = 30;

$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");
  exit;
  }
}

// ファイルに書き込む文字列の作成
  $message = "<TR><TD>$daytime</TD>";
  $message .= "<TD>$comment</TD></TR>\n";

// ファイルオープン1書き込み用排他ロック
// 'r+'=読みこみ・書きこみ用にオープンします。ファイルポインタを ファイルの先頭に置きます。
  $fp = fopen("memo.dat","r+");
  if ($fp == FALSE){
    print("ファイルポインタのオープンに失敗しました。<BR>\n");
    exit;
  }
//LOCK_EX=書き込み用排他ロック flock=汎用のファイルロックを行う
  flock($fp, LOCK_EX);

// ファイルオープン2
// 'w+'=読みこみ・書きこみ用でオープンします。ファイルポインタを ファイルの先頭に置き、ファイルサイズをゼロにします。
  $fp2 = fopen("memo1.dat","w+");
  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: memo.php\n\n");
?>