実際の動作【関数名】form(設定パス) 戻り値なし
【関数内容】チャットフォームを出力する
<?
//########################################
//##### 元々取得しておく項目 #####
//########################################
$user_name = "test";
include("config.php");
require("function.php");
//チャットを記述するパスを設定
$chat_path = "main.txt";
//チャットの記述かどうかフラグを立てる
$chat_write = $_POST["chat_write"];
if($chat_write==""){
$chat_write = 0;
}
//チャットフォームの呼び出し
chat($chat_path,$user_name,$chat_write);
//チャットを呼び出し・書き込みする関数
function chat($chat_path,$user_name,$chat_write){
//送信ボタンのインタフェース
global $chat_form;
//チャットを記述する場合は書き込みする
if($chat_write == 1){
//書き込みメッセージを取得する
$chat_message = $_POST["chat_message"];
//入力情報をチェックする
$chat_message = strip_tags($chat_message);
$chat_message = str_replace("\n","",$chat_message);
$chat_message = trim($chat_message);
if($chat_message==""){
//空欄の場合は処理を中止する
$chat_error = "メッセージを記述して下さい。";
}
else{
//ログ情報を取得する
include("time.php");
$chat_time = $time1 . "(" . $time2 . ")";
//ログ情報を纏める
$chat_message = $user_name."\t".$chat_time."\t".$chat_message."\t".$ip."\t".$host."\n";
//書き込み内容を保存する
file_mode($chat_path,"aa",$chat_message);
}
}
//チャット画面の生成
print "<table><tr><td>";
print "<form action=\"\" method=\"POST\">
メッセージ:<input type=\"text\" name=\"chat_message\" size=\"40\">
<input type=\"hidden\" name=\"chat_write\" value=\"1\">
</td><td>
<input type=\"submit\" name=\"send\" value=\"送信\" $chat_form> <a href=\"chat.php\">更新</a></td>
<tr><td colspan=2>".
$chat_error."
<hr class=chat></td></tr>";
//チャットファイルがあれば表示する
if(!file_exists($chat_path)){}
else{
$i=0;
$templog = file($chat_path);
//最新の30メッセージを表示する
while($templog[$i]!="" && $i<30){
//チャットのログを読み取る
list($name,$zikan,$message,$ip,$host)=explode("\t",$templog[$i]);
//チャットの内容を纏める
$chat_contents = $chat_contents .$name.":".$message."<br>";
$i=$i+1;
}
}
print "</form>";
print "<tr><td colspan=2>".$chat_contents."</td></tr></table>";
}
//config.php
<?
//##########################################
//##### チャットの色を変更する #####
//##########################################
//書き込みの色の変更
$comment_form = "STYLE=\"color:black;background-color:white;border:1px solid black\"";
?>
//function.php
<?
//ファイル入出力を制御する関数
function file_mode($file_path,$file_mode,$write_data){
//最後の出力結果
$data = "";
//ファイルを読み込む場合
if($file_mode=="r" || $file_mode=="r+"){
//ファイルが存在するか調べる
if(file_exists($file_path)){
$data = file_get_contents($file_path);
}
else{
$data = "読み込むファイルが存在しません。";
}
}
//ファイルを書き込む場合
elseif($file_mode=="w" || $file_mode=="w+"){
$fp = fopen($file_path,$file_mode);
if (!$fp) {
$data= "ファイルポインタのオープンに失敗しました。";
}
if (!flock($fp,2)) {
$data = "ファイルロックに失敗しました。";
}
if (!fputs($fp,$write_data)) {
$data = "書き込みに失敗しました。";
}
if (!flock($fp,3)) {
$data = "ファイルロックの解放に失敗しました。";
}
//ファイルに正常に書きこめた場合の戻り値を1にする
if($data==""){
$data = 1;
}
fclose($fp);
}
//ファイルモードがa系の場合
elseif($file_mode=="a" || $file_mode=="a+" || $file_mode=="aa" || $file_mode=="aa+"){
//ファイルの最後に書き込む場合
if($file_mode=="a" || $file_mode=="a+"){
$fp = fopen($file_path,$file_mode);
if (!$fp) {
$data= "ファイルポインタのオープンに失敗しました。";
}
if (!flock($fp,2)) {
$data = "ファイルロックに失敗しました。";
}
if (!fputs($fp,$write_data)) {
$data = "書き込みに失敗しました。";
}
if (!flock($fp,3)) {
$data = "ファイルロックの解放に失敗しました。";
}
fclose($fp);
}
//ファイルの最後に書き込む場合
else{
if(file_exists($file_path)){
//ファイルの内容を読みこんでおく
$data = file_get_contents($file_path);
}
//書き込む内容を戦闘にする
$write_data = $write_data . $data;
$fp = fopen($file_path,"w");
if (!fputs($fp,$write_data)) {
$data = "書き込みに失敗しました。";
}
if (!flock($fp,3)) {
$data = "ファイルロックの解放に失敗しました。";
}
fclose($fp);
$data = 1;
}
if($data==""){
$data = 1;
}
}
else{
$data = "ファイルモードが不正です。";
}
return $data;
}
?>