template_dir = APP_TEMPLATE_DIR; #◆Smartyのテンプレートのキャッシュファイル格納先を指定 $smarty->compile_dir = APP_TEMPLATE_COMPILE_DIR; $cCommon = new cCommon; #----------------------------------------------------------------------------- # ■ smartyの読み込み #----------------------------------------------------------------------------- $Field = array(); $Item = array(); #◆ GETとPOSTの内容をマージ $_POST = array_merge($_POST, $_GET); #◆POSTされたデータをHTML表示用配列へ追加 foreach ($_POST As $Keys => $value){ if(!isset($Item[$Keys])){ $Item[$Keys] = $value; } } #◆httpsでなければエラー処理 if (isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on')) { # nop } else { header(sprintf("Location: https://%s%s", $_SERVER['SERVER_NAME'], $_SERVER['SCRIPT_NAME'])); die; } $Field['Message'] = array(); #◆登録の実行 if(isset($_POST['Writing'])){ switch($_POST['Writing']){ case 'Execution': #◆ メールアドレスが存在しないとき、空欄とする if(!isset($_POST['EMail'])){ $_POST['EMail']=''; } #◆メールアドレスが空欄の場合はエラー if($_POST['EMail']==''){ array_push($Field['Message'], 'メールアドレスを入力してください。'); break; } if (_CheckEMail($_POST['EMail']) == 'OK') { #◆ブラウザが更新された場合はTOP画面へ戻す。 if(!isset($_SESSION['mailmag']['FlgExecution'])){ $_SESSION['mailmag']['FlgExecution']='0'; } if($_SESSION['mailmag']['FlgExecution']=='1'){ header("Location: http://www.kobac.co.jp/bin/mailmag.php"); die; } #◆メールアドレスが重複する場合はエラーとする。 $cMagazine_EMail = new cMagazine_EMail; $rSelect = array( 'FlgDelete' => 0, 'FlgVisible' => 1, 'FlgComplet' => 1, 'EMail' => $_POST['EMail'], ); $res = $cMagazine_EMail -> Select($rSelect); $Temp = array(); if(mysql_num_rows($res)==1){ array_push($Field['Message'], 'メールアドレスは既に登録されています。'); break; } #◆登録処理 $Field['d'] = ''; //初期化 $cMagazine_EMail = new cMagazine_EMail; $rSelect = array( 'FlgDelete' => '0', 'FlgVisible' => '1', 'EMail' => $_POST['EMail'], ); $res = $cMagazine_EMail -> Select($rSelect); $Temp = array(); if(mysql_num_rows($res)==1){ $Temp = mysql_fetch_array($res); $Field['d'] = $Temp['d']; } //ダイジェスト値が無い場合は新規としてDBへ追加する。 if($Field['d']==''){ //ダイジェスト値生成 $Field['d'] = _GenerateDigest($_POST['EMail']); //登録元IPを取得 $Field['Kari_Remote_Addr'] = ''; if(isset($_SERVER['REMOTE_ADDR'])){ $Field['Kari_Remote_Addr'] = $_SERVER['REMOTE_ADDR'];} $cMagazine_EMail = new cMagazine_EMail; $rSelect = array( 'FlgDelete' => '0', 'FlgVisible' => '1', 'Torokubi' => date("Y-m-d H:i:s"), 'FlgComplet' => '0', 'Kari_TorokuDate' => date("Y-m-d H:i:s"), 'Kari_Remote_Addr' => $Field['Kari_Remote_Addr'], 'EMail' => $_POST['EMail'], 'd' => $Field['d'], ); $Temp = $cMagazine_EMail->Insert($rSelect); if(isset($Temp['Message'])){ //Error $cCommon->fLog(implode("\t", array($_SERVER['REMOTE_ADDR'], 'NG', $_POST['EMail'])),'mailmag.php'); } } #◆メール送信処理 #◆件名の生成 $Subject = ''; #◆宛先の生成 $arrTo = array(); $smarty2 = new Smarty; #◆テンプレートの存在するディレクトリを指定 $smarty2->template_dir = APP_MAIL_TEMPLATE_DIR; #◆Smartyのテンプレートのキャッシュファイル格納先を指定 $smarty2->compile_dir = APP_MAIL_TEMPLATE_COMPILE_DIR; array_push($arrTo, $_POST['EMail']); #◆実稼働時は有効に //array_push($arrTo, APP_ADMIN_MAIL); #◆管理者 array_push($arrTo, 'helper01@sun-inet.or.jp'); #◆テスト $mailField = array( 'd' => $Field['d'], ); #◆配列をテンプレートへ渡す $smarty2->assign('mailField',$mailField); $Body = $smarty2->fetch('Mailmag_Regist.tpl'); $rSelect = array( 'arrTo' => $arrTo, 'Subject' => 'メールマガジン登録用URL送信のお知らせ', 'Body' => $Body, ); $cMailSender = new cMailSender; $cMailSender->Sendmail($rSelect); #◆処理完了Flgを立てる。 $_SESSION['mailmag']['FlgExecution'] = '1'; #◆完了画面を表示する。 $smarty->assign("Field",$Field); $smarty->assign("Item",$Item); $smarty->display("mailmag_regist.html"); die; }else{ array_push($Field['Message'], 'ご入力いただいたメールアドレスに誤りがございます。ご確認後、再度「登録」ボタンを押して下さい。'); } break; } } #◆セッションの初期化 $_SESSION['mailmag']['FlgExecution'] = '0'; #◆配列をテンプレートへ渡す $smarty->assign("Field",$Field); $smarty->assign("Item",$Item); #◆ページ表示 $smarty->display("mailmag.html"); #============================================================================= # ■ 共通関数など #============================================================================= #----------------------------------------------------------------------------- # ■ メールアドレスチェック #----------------------------------------------------------------------------- function _CheckEMail($EMail) { #◆ メールアドレスのチェック # xxx@xxx.xx の形式かどうか? $Confirm = 'OK'; if (preg_match('/^[^\@\s<>\\/]+\@[^\.\@\s<>\\/]+\.[^\@\s<>\\/]+$/', $EMail, $Result) > 0) { } else { $Confirm = 'BadEMailFormat'; } return $Confirm; } #----------------------------------------------------------------------------- # ■ ダイジェスト値生成 #----------------------------------------------------------------------------- function _GenerateDigest($EMail) { $fingerprint = 'secret'; $fingerprint .= date("Y-m-d H:i:s"); if (!empty($_SERVER['HTTP_USER_AGENT'])) { $fingerprint .= $_SERVER['HTTP_USER_AGENT']; } if (!empty($_SERVER['HTTP_ACCEPT_CHARSET'])) { $fingerprint .= $_SERVER['HTTP_ACCEPT_CHARSET']; } return md5($EMail. ' ' .$fingerprint); } ?>