【関数名】form(設定パス) 戻り値なし
【関数内容】コメントフォームを出力する
<?
//フォームの設定パスを読み取る
$form_path = "form_style.php";
function form($form_path){
include($form_path);
//送信された内容を取得する
$name = $_POST{"name"};
$mail = $_POST{"mail"};
$comment = $_POST{"comment"};
$write = $_POST{"write"};
//書き込みフラグが有効ではない場合
if($write!=1){
//入力フォームを出力する
print "<form action=\"\" method=post>";
print "<table>";
print "<tr><td class=form>名前</td><td><input type=\"text\" name=\"name\" size=\"$name_num\" value=$name></tr>";
print "<tr><td class=form>メールアドレス</td><td><input type=\"text\" name=\"mail\" size=\"$mail_num\" value=$mail></tr>";
print "<tr><td class=comment>コメント</td><td><textarea name=\"comment\" cols=\"$comment_cols\" rows=\"$comment_rows\">$comment</textarea></tr>";
print "<tr><td colspan=2><input type=\"submit\" NAME=\"send\" VALUE=\"送信する\" $form_style></td>";
//送信されたかどうかフラグを立てる
print "<input type=\"hidden\" name=\"write\" value=1>";
print "</table>";
}
else{
//ログ情報の取得
//現在の日付を取得
$time = gmdate("Y/m/d",time()+60*60*9);
//現在の時刻を取得
$time2 = gmdate("H:i",time()+60*60*9);
//日付の取得
$time3 = date("D",time());
//IPアドレスを取得
$ip=getenv("REMOTE_ADDR");
//ホスト情報を取得
$host = getenv("REMOTE_HOST");
if (!$REMOTE_HOST){
$host = gethostbyaddr($ip);
}
//直前のURLを取得
$url=getenv("HTTP_REFERER");
//ブラウザ情報を取得
$brw=getenv("HTTP_USER_AGENT");
$log = "IP:".$ip."\nホスト:".$host."\nリファラー:".$url."\nブラウザ:".$brw."\n\n";
//内容チェック
$comment2=strip_tags($comment);
$comment2=str_replace("\n","",$comment);
$comment2=trim($comment);
$mail2=strip_tags($mail);
$mail2=str_replace("\n","",$mail);
$mail2=trim($mail);
$name2=strip_tags($name);
$name2=str_replace("\n","",$name);
$name2=trim($name);
//名前が何もない場合
if($name2=="" && $default_name==1){
$error=1;
$name_error = "名前が記載されていません!<br>";
$error_contents = $error_contents . $name_error . "<br>";
}
//メールアドレスの記述が何もない場合
if($mail2=="" && $default_mail==1){
$error=1;
$mail_error = "メールアドレスが記載されていません!<br>";
$error_contents = $error_contents . $mail_error . "<br>";
}
//コメントの記述が何もない場合
if($comment2=="" && $default_comment==1){
$error=1;
$comment_error = "コメントが記載されていません!<br>";
$error_contents = $error_contents . $comment_error . "<br>";
}
//エラーによる場合分け
if($error==1){
//エラーが存在する場合は、エラー内容を表示する
print $error_contents;
//戻るフォームを出力する
print "<form action=\"\" method=post>";
print "<input type=\"hidden\" name=\"name\" value=$name2>";
print "<input type=\"hidden\" name=\"mail\" value=$mail2>";
print "<input type=\"hidden\" name=\"comment\" value=$comment2>";
print "<input type=\"submit\" NAME=\"send\" VALUE=\"戻る\" $form_style>";
}
else{
//エラーがない場合
print $thanks."<br><br>";
//戻るフォームを出力する
print "<form action=\"\" method=post>";
print "<input type=\"hidden\" name=\"write\" value=0>";
print "<input type=\"submit\" NAME=\"send\" VALUE=\"戻る\" $form_style>";
//メールを送信するかどうか
if($mail_flag==1){
//メールのタイトル
$mail_title = $time." " . $time2 . "の書き込みです";
$mail_contents = $time." " . $time2 . "の書き込み\n\n" . "名前:" . $name2 ."\nメールアドレス:" .$mail."\n内容:".$comment."\n\n".$log;
$from_mailaddress = "From:".$from_mailaddress;
mail($to_mailaddress,$mail_title,$mail_contents,$from_mailaddress);
}
//ログファイルに書き込み
$log_contents = $time."\t".$time2."\t".$name2."\t".$mail."\t".$comment."\t".$ip."\t".$host."\t".$url."\t".$brw."\n";
file_mode($log_path,"aa",$log_contents);
}
}
}
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{
//ファイルの内容を読みこんでおく
$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;
}
?>
【設定ファイル】form_style.php
<?
//フォームの色を変更する
$form_style = "STYLE=\"color:black;background-color:white;border:1px solid black\"";
//フォーム入力の幅を変更する
$name_num = 20;//名前
$mail_num = 20;//メールアドレス
$comment_cols = 20;//コメントの横幅
$comment_rows = 5;//コメントの縦幅
//名前がエラーの時のコメント
$name_error = "・名前が不正です";
//メールがエラーの時のコメント
$comment_error = "・メールアドレスが不正です";
//コメントがエラーの時のコメント
$comment_error = "・コメント内容が不正です";
//メッセージ書き込み時のコメント
$thanks = "メッセージ有難う御座います!!";
//必須項目を設定する(1で必須)
$default_name = 1;//名前が必須かどうか
$default_mail = 0;//メールが必須かどうか
$default_comment = 1;//コメントが必須かどうか
//メールを送信するか(1で送信)
$mail_flag = 1;
//送信するメールアドレス
$to_mailaddress = "admin@aineko.com";
//送信元のメールアドレス
$from_mailaddress = "admin@aineko.com";
//書き込み内容を保存するファイルパス
$log_path = "log.txt";
?>