/********************************************************************
* 2008/05/09 tanaka ver3.0
* [追加機能]
* 送信メールのログ機能の追加
* 同じ階層に「mailform.log」を作成し
* メール送信毎にログを取ります。
* 又、エラー発生時には、「ERRSENDMAILTO」宛てにメールを送信します。
*
* [追加関数]
* CreateLog(MailFrom,MailTo,errflg)
*
********************************************************************/
ini_set("default_charset", "SJIS");
//ini_set("output_buffering", "On");
ini_set("mbstring.http_output", "SJIS");
ini_set("mbstring.language", "Japanese");
ini_set("mbstring.internal_encoding", "SJIS");
/*****
マルチバイト初期化設定.
ini_set("mbstring.language", "Japanese");
ini_set("mbstring.detect_order", "SJIS, SJIS-win, ASCII, eucJP-win, UTF-8");
print("mb_http_input=".mb_http_input("P")."
");
******/
//文字コード設定
mb_internal_encoding("SJIS");
mb_language("Japanese");
$internal_enc = mb_internal_encoding();
//mb_http_output("UTF-8");//テストサーバーでON/会社サーバーOFF(UTF-8)
//print("internal_enc=".$internal_enc."
");
//print("mb_http_output=".mb_http_output()."
");
//共通ライブラリインクルード
require_once( "cmnlib.php" );
//定数定義
define("DEF_MB_LANG", "ja");
define("DEF_MB_ENC", "SJIS");
define("SMTP_SERVER", "192.168.1.21"); //テスト用(SMTPのサーバー名もしくはIPアドレス)
define("ITEM_SEC","[Item]");
define("ADDR_SEC","[MailAddress]");
define("CFG_FILE","mailformphp.csv");
define("MF_HTML","mailform.html");
define("CONF_HTML","confirm.html");
define("FN_HTML","finish.html");
define("MNG_TXT","mng.txt");
define("USER_TXT","user.txt");
define("FAMILYNAME", "familyname");//ユーザ入力姓のフィールド名
define("ERRSENDMAILTO","srvman@mediarium.jp");
define("LOGLIMIT",100);
define("MNG"," MNG");
define("USER","USER");
define("PHP_VER", "4"); //PHPのバージョン(5以降の場合、5と設定)
//csvファイル読み込み用変数定義
$aFieldName = array();
$aItemName = array();
$aLength = array();
$aAttribute = array();
$aRequire = array();
$aDefaultValue = array();
$data_array = array();
$data = array();
$aMailItem = array();
$aMailAddress = array();
$aCCArray = array();
$aBCCArray = array();
$mdata_array = array();
$mdata = array();
//エラーメッセージ変数定義
$Msg = array();
//送信用変数定義
$m_Subject ="";
$mMain = "";
$u_Subject = "";
$uMain = "";
$m_Main = "";
$u_Main = "";
/*****csvファイル読み込み*****/
$file_name = CFG_FILE;
//ファイルを読み取りモードで開く
$file = fopen($file_name, "r") or die("OPENエラー $file_name");
$fItem = false;
$line_no = 0;
if(PHP_VER == "5"){
/***PHP5以降のCSV読み込み処理 ******/
while (!feof($file)) {
$data_array = fgetcsv_reg($file);
$_enc_to=mb_internal_encoding();
$_enc_from=mb_detect_order();
mb_convert_variables($_enc_to,$_enc_from,$data_array);
$data = $data_array[0];
if($fItem == false){
//行に[Item]がある場合
if(stristr($data,ITEM_SEC) != false){
$fItem = true;
}
}else{
//行が"//"で始まる場合スキップ
if(substr($data,0,2) == "//"){
continue;
}
//行が空白の場合ループを抜ける
if(strlen($data) == 0 ){
break;
}
//各カラムを配列に格納
//フィールド名を配列に格納
$aFieldName[$line_no] = $data_array[0];
//項目名を配列に格納
$aItemName[$line_no] = $data_array[1];
//最大文字数を配列に格納
$aLength[$line_no] = $data_array[2];
//項目属性を配列に格納
$aAttribute[$line_no] = $data_array[3];
//必須項目を配列に格納
$aRequire[$line_no] = $data_array[4];
//初期値を配列に格納
$aDefaultValue[$line_no] = $data_array[5];
$line_no++; //行数カウント
}
}
fclose($file);
}else{
while(!feof($file)){
//1行ずつ読み込む
$data_array = fgetcsv($file, 1000, ",");
$data = $data_array[0];
if($fItem == false){
//行に[Item]がある場合
if(stristr($data,ITEM_SEC) != false){
$fItem = true;
}
}else{
//行が"//"で始まる場合スキップ
if(substr($data,0,2) == "//"){
continue;
}
//行が空白の場合ループを抜ける
if(strlen($data) == 0 ){
break;
}
//各カラムを配列に格納
//フィールド名を配列に格納
$aFieldName[$line_no] = $data_array[0];
//項目名を配列に格納
$aItemName[$line_no] = $data_array[1];
//最大文字数を配列に格納
$aLength[$line_no] = $data_array[2];
//項目属性を配列に格納
$aAttribute[$line_no] = $data_array[3];
//必須項目を配列に格納
$aRequire[$line_no] = $data_array[4];
//初期値を配列に格納
$aDefaultValue[$line_no] = $data_array[5];
$line_no++; //行数カウント
}
}
//ファイルを閉じる
fclose($file);
}
/*****フィールド変数名定義*****/
$aDataName = array();
//PHPバージョン判定
$ver = preg_replace("/(\d).(\d).(\d).*/","$1$2$3",phpversion());
if($ver < 410){
// 4.1.0以前の処理
for ($i = 0; $i < $line_no; $i++){
//$sFieldNameにフィールド名格納
$sFieldName = $aFieldName[$i];
$aDataName[$i] = $HTTP_POST_VARS[$sFieldName];
//$aDataName[$i] = mb_convert_encoding($HTTP_POST_VARS[$sFieldName],DEF_MB_ENC,$internal_enc);
$aDataName[$i] = ChangeTxtData($aDataName[$i],$internal_enc);
$Value[$i] = GetItemValue($aFieldName[$i]);//HTML表示用
}
//モード変数定義
$Mode = $HTTP_POST_VARS["mode"];
}else{
// 4.1.0 以降の処理
for ($i = 0; $i < $line_no; $i++){
//$sFieldNameにフィールド名格納
$sFieldName = $aFieldName[$i];
$aDataName[$i] = $_POST[$sFieldName];
//print("aDataName1".$aDataName[$i]."
");
$aDataName[$i] = mb_convert_encoding($_POST[$sFieldName],DEF_MB_ENC,"EUC-JP");
//print("aDataName2".$aDataName[$i]."
");
$aDataName[$i] = ChangeTxtData($aDataName[$i],$internal_enc);
//print("aDataName3".$aDataName[$i]."
");
$Value[$i] = GetItemValue($aFieldName[$i]);//HTML表示用
}
//モード変数定義
$Mode = $_POST["mode"];
}
/*****確認画面表示*****/
if($Mode == conf){
//エラーがなければ送信ボタンが表示
$Errflg = false;
//エラーチェック
for ($i = 0; $i < $line_no; $i++){
//データが初期値と一致または改行・スペース文字のみの場合
//if($aDataName[$i] == $aDefaultValue[$i] || RePlace($aDataName[$i]) == ""){
if(RePlace($aDataName[$i]) == ""){
//データを空にする
$aDataName[$i] = "";
}
//必須項目で項目属性が"CheckBox"でない場合
if($aRequire[$i] == "1" && $aAttribute[$i] != "CheckBox"){
$Msg[$i] = RequiredCheck($aDataName[$i],"$aItemName[$i]");
}else if($aRequire[$i] == "2" && $aAttribute[$i] != "CheckBox"){
$count = 0;
for($check =$i;$check < $line_no;$check++){
$aDataName[$check] = ChangeStrToBlank($aDataName[$check]);
//データが空欄の場合
if($aDataName[$check] == ""){
$count++;
}
//フィールド名の最後に"__"がある場合
if(substr($aFieldName[$check],-2) == "__"){
break;
}
}
$Msg[$i] = RequiredAllCheck($count,"$aItemName[$i]");
}else if($aRequire[$i] == "3" && $aAttribute[$i] != "CheckBox"){
$count = 0;
for($check =$i;$check < $line_no;$check++){
$aDataName[$check] = ChangeStrToBlank($aDataName[$check]);
//データが空欄ではない場合
if($aDataName[$check] != ""){
$count++;
}
//フィールド名の最後に"__"がある場合
if(substr($aFieldName[$check],-2) == "__"){
break;
}
}
$Msg[$i] = RequiredOneCheck($count,"$aItemName[$i]");
}
//必須チェックをしてエラーがなかった場合
if($Msg[$i] == ""){
//項目属性が"Text"または"TextArea"の場合
if($aAttribute[$i] == "Text" || $aAttribute[$i] == "TextArea"){
//最大文字数チェック
$Msg[$i] = MaxCheck($aDataName[$i],$aLength[$i],"$aLength[$i]");
}
//項目属性が"Num"の場合
if($aAttribute[$i] == "Num"){
//半角数字チェック
$Msg[$i] = NumCheck($aDataName[$i]);
//半角数字チェック後エラーがなかった場合
if($Msg[$i] == ""){
//最大文字数チェック
$Msg[$i] = MaxCheck($aDataName[$i],$aLength[$i],"$aLength[$i]");
}
//項目属性が"NumHyphen"の場合
}else if($aAttribute[$i] == "NumHyphen"){
//電話番号チェック
$Msg[$i] = NumHyphenCheck($aDataName[$i]);
//電話番号チェック後エラーがなかった場合
if($Msg[$i] == ""){
//最大文字数チェック
$Msg[$i] = MaxCheck($aDataName[$i],$aLength[$i],"$aLength[$i]");
}
//項目属性が"UrlAddr"の場合
}else if($aAttribute[$i] == "UrlAddr"){
//Urlアドレスチェック
$Msg[$i] = UrlCheck($aDataName[$i],"$aItemName[$i]");
//項目属性が"MailAddrCnf"の場合
}else if($aAttribute[$i] == "MailAddrCnf"){
//メールアドレスチェック
$Msg[$i] = MailCheck($aDataName[$i],"$aItemName[$i]");
//メールアドレスチェック後エラーがない場合
if($Msg[$i] == ""){
//最大文字数チェック
$Msg[$i] = MaxCheck($aDataName[$i],$aLength[$i],"$aLength[$i]");
}
//項目属性が"MailAddr"の場合
}else if($aAttribute[$i] == "MailAddr"){
//メールアドレスチェック
$Msg[$i] = MailCheck($aDataName[$i],"$aItemName[$i]");
//メールアドレスチェック後エラーがない場合
if($Msg[$i] == ""){
//最大文字数チェック
$Msg[$i] = MaxCheck($aDataName[$i],$aLength[$i],"$aLength[$i]");
//最大文字数チェック後エラーがない場合
if($Msg[$i] == ""){
//確認メールアドレス検索
$Mcnf = false;
for($k=$k+1; $k < $line_no; $k++){
//属性が確認メールアドレスの場合jにkを代入
if($aAttribute[$k] == "MailAddrCnf"){
$j = $k;
$Mcnf = true;
break;
}
}
//確認メールアドレスが検索された場合
if($Mcnf == true){
//メールアドレス・確認メールアドレス一致チェック
$Msg[$i] = EqualCheck($aDataName[$i],$aDataName[$j],$aItemName[$i]);
}
} //最大文字数チェック後エラーがない場合
} //メールアドレス・確認メールアドレスチェック後エラーがない場合
} //属性がメールアドレスの場合
} //必須チェック後エラーがなかった場合
//必須チェック後エラーがあった場合
else{
//データを空にする
$aDataName[$i] = "";
}
//必須項目で項目属性が"CheckBox"の場合
if($aRequire[$i] == "1" && $aAttribute[$i] == "CheckBox"){
$count = 0;
for($check =$i;$check < $line_no;$check++){
//チェックが入っている場合
if($aDataName[$check] != ""){
$count++;
}
//フィールド名の最後に"__"がある場合
if(substr($aFieldName[$check],-2) == "__"){
break;
}
}
$Msg[$i] = CheckCount($count,$aLength[$i],$aItemName[$i]);
}
//エラーがある場合
if($Msg[$i] != ""){
$Errflg = true; //修正ボタンのみ表示
}
} //for
require(CONF_HTML);
/*****確認画面から入力画面に戻る*****/
}else if($Mode == back){
require(MF_HTML);
/*****送信画面表示*****/
}else if($Mode == send){
//CSVファイルを読み取りモードで開く
$file = fopen($file_name, "r") or die("OPENエラー $file_name");
$fMailAddress = false;
$mline_no = 0;
while(!feof($file)){
//1行ずつ読み込む
$mdata_array = fgetcsv($file, 1000, ",");
$mdata = $mdata_array[0];
if($fMailAddress == false){
//行に[MailAddress]がある場合
if(stristr($mdata,ADDR_SEC) != false){
$fMailAddress = true;
}
}else{
//行が"//"で始まる場合スキップ
if(substr($mdata,0,2) == "//"){
continue;
}
//行が空白の場合ループを抜けて終了
if(strlen($mdata) == 0 ){
break;
}
//各カラムを配列に格納
//項目を配列に格納
$aMailItem[$mline_no] = $mdata_array[0];
//メールアドレスを配列に格納
$aMailAddress[$mline_no] = $mdata_array[1];
//同報送信先指定(CC)
if($aMailItem[$mline_no] == "CC"){
$ct = count($mdata_array);
for($i = 1; $i < $ct; $i++){
//データが空白の場合ループを抜ける
if($mdata_array[$i] == ""){
break;
}
//メールアドレスを配列に格納
$aCCArray[$i-1] = $mdata_array[$i];
}
}
//非公開同報送信先指定(BCC)
if($aMailItem[$mline_no] == "BCC"){
for($i = 1; $i < $ct; $i++){
//データが空白の場合ループを抜ける
if($mdata_array[$i] == ""){
break;
}
//メールアドレスを配列に格納
$aBCCArray[$i-1] = $mdata_array[$i];
}
}
$mline_no++; //行数カウント
}
}
//ファイルを閉じる
fclose($file);
for ($j = 0; $j< $line_no; $j++){
//ユーザー入力アドレスを管理者宛てメール送信元に設定
if($aAttribute[$j] == "MailAddr"){
//全角→半角 '08.03.03修正
$mailFrom = ConvNum($aDataName[$j]);
break;
}
}
/*
//ユーザの名前(姓)を取得
for ($j = 0; $j< $line_no; $j++){
if($aFieldName[$j] == FAMILYNAME){
$mailName = $aDataName[$j];
break;
}
}
*/
//メールアドレス設定
for ($i = 0; $i < $mline_no; $i++){
//管理者宛てメール送信(From:お客様 To:弊社 MODE:0)
//ユーザがアドレスを入力していない場合
if($mailFrom == ""){
//送信元アドレス設定
if($aMailItem[$i] == "From"){
$mailFrom = $aMailAddress[$i];
}
}
//管理者宛て送信先アドレス指定
if($aMailItem[$i] == "ToManager"){
//送信先にアドレスを設定している場合
if($aMailAddress[$i] != ""){
//送信先を設定
$mailTo = $aMailAddress[$i];
//管理者宛てテキストファイル読み込み
LoadMailTmpFile(MNG_TXT, $m_Subject, $mMain);
//文字列置き換え
$m_Main = TxtReplace($mMain);
$ret = SendMail($mailTo, $mailFrom, $m_Subject, $m_Main); //メール送信
CreateLog($mailFrom,$mailTo,$ret,MNG);
//SenduMail($mailTo, $mailFrom, $aCCArray, $aBCCArray, $m_Subject, $m_Main);
//print("ret=".$ret."
");
//print("管理人宛てメール送信。"."
");
}
}
//ユーザーへの確認メール送信(From:弊社、To:お客様、BCC:弊社BCC用アドレス MODE:1)
//ユーザー宛て送信元アドレス設定
if($aMailItem[$i] == "From"){
$u_mailFrom = $aMailAddress[$i];
}
//ユーザー宛て送信元名設定
if($aMailItem[$i] == "FromName"){
$u_mailFromName = $aMailAddress[$i];
}
//ユーザー宛てメール送信先アドレス指定
if($aMailItem[$i] == "ToUser"){
//送信先が空白の場合→メール送信
if($aMailAddress[$i] == ""){
for ($j = 0; $j< $line_no; $j++){
//ユーザー入力アドレスを送信先に指定
if($aAttribute[$j] == "MailAddr"){
$u_mailTo = ConvNum($aDataName[$j]);
break;
}
}
//ユーザー宛てテキストファイル読み込み
LoadMailTmpFile(USER_TXT, $u_Subject, $uMain);
//文字列置き換え
$u_Main = TxtReplace($uMain);
//送信先が空でない場合のみ送信
if($u_mailTo != ""){
//$ret = SendMail($u_mailTo, $u_mailFrom, $u_Subject, $u_Main); //メール送信
$ret = SenduMail($u_mailTo, $u_mailFrom, $aCCArray, $aBCCArray, $u_Subject, $u_Main,$u_mailFromName);
CreateLog($u_mailFrom,$u_mailTo,$ret,USER);
//print("ret=".$ret."
");
//print("ユーザあてメール送信。"."
");
}
//送信先が"0"の場合→メールを送信しない
}else if($aMailAddress[$i] == 0){
continue;
}
} //ユーザー宛てメール送信先アドレス指定
}//for
/*
print("u_mailTo=".$u_mailTo."
");
print("u_mailFrom=".$u_mailFrom."
");
print("mailName".$mailName."
");
print("$u_Main".$u_Main."
");
*/
/*
print("mailTo=".$u_mailTo."
");
print("mailFrom=".$u_mailFrom."
");
print("$m_Main".$m_Main."
");
*/
require(FN_HTML);
}else{
require(MF_HTML);
}
//print("POST_convert18=".i18n_convert($_POST["company"], "SJIS")."
");
//print("POST_convert_encoding=".mb_convert_encoding($_POST["company"], DEF_MB_ENC, $internal_enc)."
");
//print("REQUEST_convert_encoding=".mb_convert_encoding($_REQUEST["company"], DEF_MB_ENC, $internal_enc)."
");
//print("REQUEST_convert18=".i18n_convert($_REQUEST["company"], "SJIS")."
");
//print("REQUEST=".$_REQUEST["companykana"]."
");
//print("aDataName=". $aDataName[0]."
");
//テキストファイル文字列置き換えメソッド
function TxtReplace($Text)
{
global $line_no,$aFieldName,$aDataName,$aItemName;
//テキストファイル本文文字列置き換え
//本文文字列変更
$sRet = "";
$ReplaceData = "Anser";
$ReplaceItem = "Item";
for ($i = 0; $i < $line_no; $i++){
$DataWord = $ReplaceData.$i;
$ItemWord = $ReplaceItem.$i;
//$Text = ReplaceString($Text, $aFieldName[$i], $aDataName[$i]);
$Text = ReplaceString($Text, $DataWord, $aDataName[$i]);
$Text = ReplaceString($Text, $ItemWord, $aItemName[$i]);
}
//ユーザー情報文字列置き換え
$IPAddr = getenv('REMOTE_ADDR');
$HosNamet = getenv('REMOTE_HOST');
$UserAgent = getenv('HTTP_USER_AGENT');
$Text = ReplaceString($Text,"REMOTE_ADDR",$IPAddr);
$Text = ReplaceString($Text,"REMOTE_HOST",$HosNamet);
$Text = ReplaceString($Text,"HTTP_USER_AGENT",$UserAgent);
$sRet = $Text;
return $sRet;
}
//value取得メソッド
function GetItemValueRow($sFieldName)
{
global $line_no,$aFieldName,$aDataName,$aDefaultValue,$Mode;
//$sFieldNameがフィールド名にない場合""を返す
$sRet = "";
for ($i = 0; $i < $line_no; $i++){
//$sFieldNameがフィールド名と一致した場合
if($aFieldName[$i] == $sFieldName){
//確認画面表示ではない場合
if($Mode != conf){
//データが空白の場合初期値を返す
if($aDataName[$i] == ""){
if($aDefaultValue[$i] != ""){
$sRet = $aDefaultValue[$i];
break;
}
}
}
$sRet = $aDataName[$i];
break;
}
}
return $sRet;
}
//value取得メソッド(HTMLテキスト表示用)
function GetItemValue($sFieldName)
{
global $ver;
$sRet ="";
if($sFieldName != ""){
$name = GetItemValueRow($sFieldName);
if($ver < 410){
// 4.1.0以前の処理
$sRet = htmlspecialchars($name, ENT_QUOTES);
}else{
// 4.1.0以降の処理
$sRet = htmlspecialchars($name, ENT_QUOTES,DEF_MB_ENC);
}
}
return $sRet;
}
//セレクトボックスselected設定メソッド
function GetSelected($sFieldName,$Value)
{
global $line_no,$aFieldName,$aDataName,$aDefaultValue,$Mode;
//$sFieldNameがフィールド名にない場合""を返す
$sRet = "";
for ($i = 0; $i < $line_no; $i++){
//$sFieldNameがフィールド名と一致した場合
if($aFieldName[$i] == $sFieldName){
if($aDataName[$i] == $Value){
$sRet = "selected";
}
//初期表示の場合 '07.08.03追加
if($Mode != conf){
if($aDataName[$i] == ""){
//初期値を返す
if($aDefaultValue[$i] == $Value){
$sRet = "selected";
}
}
}
break;
}
}
return $sRet;
}
//ラジオボタン・チェックボタンchecked設定メソッド
function GetChecked($sFieldName,$Value)
{
global $line_no,$aFieldName,$aDataName,$aDefaultValue,$Mode;
//$sFieldNameがフィールド名にない場合""を返す
$sRet = "";
for ($i = 0; $i < $line_no; $i++){
//$sFieldNameがフィールド名と一致した場合
if($aFieldName[$i] == $sFieldName){
if($aDataName[$i] == $Value){
$sRet = "checked";
}
//初期表示の場合 '07.08.03追加
if($Mode != conf){
if($aDataName[$i] == ""){
//初期値を返す
if($aDefaultValue[$i] == $Value){
$sRet = "checked";
}
}
}
break;
}
}
return $sRet;
}
//エラーメッセージ取得メソッド
function GetErrMessage($sFieldName)
{
global $line_no,$aFieldName,$Msg;
//$sFieldNameがフィールド名にない場合err文字を返す
$sRet = "err";
for ($i = 0; $i < $line_no; $i++){
//$sFieldNameがフィールド名と一致した場合
if($aFieldName[$i] == $sFieldName){
$sRet = $Msg[$i];
break;
}
}
return $sRet;
}
//フォームリセット文字列を返すメソッド
//初期値が設定されている場合は初期値に戻る(radio,checkbox以外)
function GetFormClear(){
global $line_no,$aFieldName,$aAttribute,$aDefaultValue;
$sRet = "function FormClear(){";
for ($i=0;$i < $line_no;$i++){
if($aAttribute[$i] == "CheckBox"){
$sRet .= "document.formnew.".$aFieldName[$i].".checked =false;"."\n";
}else if($aAttribute[$i] == "Radio"){
$sRet .= "for(i=0;i< document.formnew.".$aFieldName[$i].".length;i++){"."\n".
"document.formnew.".$aFieldName[$i]."[i].checked=false;}"."\n";
}else{
if($aDefaultValue[$i] != ""){
$sRet .= "document.formnew.".$aFieldName[$i].".value = \"".$aDefaultValue[$i]."\";"."\n";
}else{
$sRet .= "document.formnew.".$aFieldName[$i].".value = \"\";"."\n";
}
}
}
$sRet .="}";
return $sRet;
}
//POSTで受け取ったデータ変換
function ChangeTxtData($Str,$internal_enc){
if($internal_enc == "SJIS" || $internal_enc == "UTF-8"){
//バックスラッシュ取り除き
//$Str = stripslashes($Str);
}
if($internal_enc == "EUC-JP"){
//半角ダブル・シングルクォート・\マークを全角に変換
$Str = ConvHanToZen($Str);
}
//半角ダブル・シングルクォート・\マークを全角に変換
$Str = ConvHanToZen($Str);
//半角カナを全角カナに変換
$Str = KanaHanToZen($Str);
//×を「x」に変換(表示で文字化けが発生するため)'08.07.17追加
$Str = KakeruToX($Str);
//$Str = izonReplace($Str);
return $Str;
}
//年セレクト(指定した年〜指定した年)
function CreateYearSelect($Name,$Value,$Firstyear,$LastYear){
$Ret = "";
return $Ret;
}
//月セレクト(1〜12月)
function CreateMonthSelect($Name,$Value){
$Ret = "";
return $Ret;
}
//日セレクト(1〜31日)
function CreateDaySelect($Name,$Value){
$Ret = "";
return $Ret;
}
/*** SENDMAILのログを取ります
* [注意]親ディレクトリのパーミッションは[0777]or[0775]
* にしてください。
***/
function CreateLog($from,$to,$flg,$per){
$ret = true;
$logfile = "mailform.log";
$today = date("Y-m-d H:i:s");
if($flg){
$logString = "$per DATE[$today] FROM[$from] TO[$to]";
}else{
$logString = "SENDERR!! $per DATE[$today] FROM[$from] TO[$to]";
}
if(!$flg){
$logString2 = $logString."\nPATH[".realpath("./")."]\n";
$ret = SendMail(ERRSENDMAILTO, ERRSENDMAILTO, "MailFormERR!!", $logString2);
}
if(!file_exists($logfile)){
touch($logfile);
chmod($logfile,0606);
}
$fd = file($logfile);
$cut = count($fd);
if($cut>LOGLIMIT){
$fp = fopen($logfile, "r");
$allline = array();
$i=0;
while(!feof($fp)) {
$line = fgets($fp,4096);
array_push($allline,$line);
}
fclose($fp);
$fp = fopen($logfile, "w");
$i=2;
while($line = $allline[$i]){
fwrite($fp, $line);
$i++;
}
fclose($fp);
}
if($fp = fopen($logfile, "a")){
fputs($fp,$logString."\n");
fclose($fp);
}else{
$ret = false;
}
return $ret;
}
/**
* ファイルポインタから行を取得し、CSVフィールドを処理する(PHP5以上の場合使用)
* @param resource handle
* @param int length
* @param string delimiter
* @param string enclosure
* @return ファイルの終端に達した場合を含み、エラー時にFALSEを返します。
*/
function fgetcsv_reg (&$handle, $length = null, $d = ',', $e = '"') {
$d = preg_quote($d);
$e = preg_quote($e);
$_line = "";
while ($eof != true) {
$_line .= (empty($length) ? fgets($handle) : fgets($handle, $length));
$itemcnt = preg_match_all('/'.$e.'/', $_line, $dummy);
if ($itemcnt % 2 == 0) $eof = true;
}
$_csv_line = preg_replace('/(?:\r\n|[\r\n])?$/', $d, trim($_line));
$_csv_pattern = '/('.$e.'[^'.$e.']*(?:'.$e.$e.'[^'.$e.']*)*'.$e.'|[^'.$d.']*)'.$d.'/';
preg_match_all($_csv_pattern, $_csv_line, $_csv_matches);
$_csv_data = $_csv_matches[1];
for($_csv_i=0;$_csv_i