質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

Q&A

解決済

3回答

3528閲覧

WEBサイトでのお問い合わせフォームの作り方が分かりません。

oyu

総合スコア48

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

0グッド

1クリップ

投稿2019/08/27 01:18

編集2019/08/27 10:57

前提・実現したいこと

WEBサイトでのお問い合わせフォームの作り方が分かりません。
1 入力フォームから必須項目を入れ確認画面へのボタンを押せばアクセスでき
2 入力内容のご確認のページにアクセスできますが
3 最後の送信完了ページにアクセスできません。

complete.phpの中にログファイル設定 DEFAULT_LOGはサーバに合わせること
とネットでググたのですが理解できません。

発生している問題・エラーメッセージ

Can't open /virtual/ikeno-derma/public_html/_demo/company_inquiry/log/contact.csv!

php

1complete.php 2 3<?php 4session_start(); 5session_unset(); 6session_destroy(); 7?> 8 9<?php 10include("phpmailer.inc.php"); 11 12 13//edit(メールアドレスのみ。例えば携帯メールアドレスが必須のような場合「if($_POST['email']!="" && $_POST['email_mobile']!=""){」と記述する。) 14//only for mailaddress 15if($_POST['email']!=""){ 16 17$files = glob('uploads/*'); 18 19//edit(ファイル添付がある場合、その分だけ用意する。この項目が無かったらコメントアウトすること)if the image exists. you must commentout when this column is nothing. 20//$my_path = "uploads/".$_POST['img']; 21//$my_path2 = "uploads/".$_POST['img2']; 22 23 24//edit(自動返信メール(管理者、複数指定可))reply mail for admin (you can specify multiple) 25$items[] = array('subject' => '【】ホームページよりお問い合わせがありました。', 26'header_mail' => $_POST['name'].' 様より、以下のお問い合わせがありました。<br><br><br>', 27'footer_mail' => '', 28'send_fromname' => $_POST['name'], 29'send_from' => $_POST['email'], 30'send_to' => array('support@netoption.co.jp'), 31); 32 33//edit(自動返信メール(エンドユーザ) ※「send_fromname」「send_from」にエンドユーザ向けのFROM表記・メアドを入力する。)reply mail for enduser (input to "send_fromname" & "send_from) 34$items[] = array('subject' => '【】お問い合わせありがとうございます。', 35'header_mail' => $_POST['name'].' 様<br><br> 36お問い合わせありがとうございます。<br> 37このメールは自動送信メールです。<br> 38翌営業日を過ぎましてもお問い合わせに対する対応がない場合は、<br> 39お手数をおかけしますがまで<br> 40ご連絡くださいますようお願い申し上げます。<br><br><br>', 41'footer_mail' => '', 42'send_fromname' => '', 43'send_from' => '', 44'send_to' => array($_POST['email']), 45); 46 47 48foreach($items as $item) 49{ 50//////////////header_mail//////////// 51$data= $item['header_mail']; 52//////////////////////////////////// 53 54 55//edit(管理者・エンドユーザ共通、メールの中心部分)reply mail body for admin & enduser 56$data.= " 57氏名:<br>".$_POST['name']."<br><br> 58フリガナ:<br>".$_POST['kana']."<br><br> 59郵便番号:<br>〒".$_POST['postcode']."<br><br> 60ご住所:<br>".$_POST['add1'].$_POST['add2']."<br><br> 61電話番号:<br>".$_POST['tel1']."-".$_POST['tel2']."-".$_POST['tel3']."<br><br> 62FAX番号:<br>".$_POST['fax1']."-".$_POST['fax2']."-".$_POST['fax3']."<br><br> 63メールアドレス:<br>".$_POST['email']."<br><br> 64お問い合わせ内容:<br>".$_POST['message']."<br><br> 65"; 66 67//////////////footer_mail//////////// 68$data.= $item['footer_mail']; 69//////////////////////////////////// 70 71$fromname = $item['send_fromname']; 72 73////////////// Subject //////////// 74$subject = $item['subject']; 75//////////////////////////////////// 76$send_from = $item['send_from']; 77 78$body = $data; 79 80$mailBody = $body; 81$objMail = new PHPMailer(); 82 83$objMail->ContentType = "text/html"; 84$objMail->CharSet = "utf-8"; 85$objMail->Mailer = "mail"; 86$objMail->Priority = 3; 87$objMail->From = $send_from; 88 89$objMail->FromName =$fromname; 90$objMail->Subject = $subject; 91//edit(ファイル添付がある場合↑と合わせる。)if the image exists. (same ↑.) 92if($_POST['img']!=""){ 93$objMail->AddAttachment($my_path); 94} 95if($_POST['img2']!=""){ 96$objMail->AddAttachment($my_path2); 97} 98 99$objMail->Body = $mailBody; 100//////////////Send to//////////// 101foreach($item['send_to'] as $send_to){ 102$objMail->AddAddress($send_to); 103} 104//////////////////////////////////// 105 106$objMail->Send(); 107 108} 109 110// get all file names 111foreach($files as $file){ // iterate files 112if(is_file($file)) 113unlink($file); // delete file 114} 115 116 117/** 118* Logging class: 119* - contains lfile, lwrite and lclose public methods 120* - lfile sets path and name of log file 121* - lwrite writes message to the log file (and implicitly opens log file) 122* - lclose closes log file 123* - first call of lwrite method will open log file implicitly 124* - message is written with the following format: [d/M/Y:H:i:s] (script name) message */ 125//$msg = str_replace("<br>",",",$datalog); 126 127 128/*--Start Config Log----------------------------------------------------------------*/ 129 130// Filename of log to use when none is given to write_log , and log folder change permission to 777 131 132//edit(ログファイル設定 DEFAULT_LOGはサーバに合わせること)logfile (DEFAULT_LOG is setting for server) 133define("DEFAULT_LOG","/virtual/ikeno-derma/public_html/_demo/company_inquiry/log/contact.csv"); 134$datalog.='氏名:'.$_POST['name'].''; 135$datalog.=","; 136$datalog.='フリガナ:'.$_POST['kana'].''; 137$datalog.=","; 138$datalog.='郵便番号:'.$_POST['postcode'].''; 139$datalog.=","; 140$datalog.='ご住所:'.$_POST['add2'].''; 141$datalog.=","; 142$datalog.='電話番号:'.$_POST['tel'].''; 143$datalog.=","; 144$datalog.='FAX番号:'.$_POST['fax'].''; 145$datalog.=","; 146$datalog.='メールアドレス:'.$_POST['email'].''; 147$datalog.=","; 148$datalog.='お問い合わせ内容:'.$_POST['message'].''; 149 150/*--END Config Log----------------------------------------------------------------*/ 151 152 153 154 155$msg = $datalog; 156class Logging { 157// declare log file and file pointer as private properties 158private $log_file, $fp; 159// set log file (path and name) 160public function lfile($path) { 161$this->log_file = $path; 162} 163// write message to the log file 164public function lwrite($message) { 165// if file pointer doesn't exist, then open log file 166if (!is_resource($this->fp)) { 167$this->lopen(); 168} 169// define script name 170$script_name = pathinfo($_SERVER['PHP_SELF'], PATHINFO_FILENAME); 171// define current time and suppress E_WARNING if using the system TZ settings 172// (don't forget to set the INI setting date.timezone) 173$time = @date('[d/M/Y:H:i:s]'); 174// write current time, script name and message to the log file 175// fwrite($this->fp, "$time ($script_name) $message" . PHP_EOL); 176fwrite($this->fp, "$time , $message" . PHP_EOL); 177} 178// close log file (it's always a good idea to close a file when you're done with it) 179public function lclose() { 180fclose($this->fp); 181} 182// open log file (private method) 183private function lopen() { 184$log_file_default = DEFAULT_LOG; 185// define log file from lfile method or use previously set default 186$lfile = $this->log_file ? $this->log_file : $log_file_default; 187// open log file for writing only and place file pointer at the end of the file 188// (if the file does not exist, try to create it) 189$this->fp = fopen($lfile, 'a') or exit("Can't open $lfile!"); 190} 191} 192 193// Logging class initialization 194$log = new Logging(); 195 196// set path and name of log file (optional) 197$log->lfile(DEFAULT_LOG); 198 199// write message to the log file 200$log->lwrite($msg); 201 202// close log file 203$log->lclose(); 204 205}else{ 206 207header("Location: index.php"); 208 209} 210 211?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/08/27 01:19

再現可能なコード(できればすべて)提示してください。 またphpのバージョン、OS ご提示ください。
azuapricot

2019/08/27 01:20

関係ありそうな現在のコードを提示しましょう
m.ts10806

2019/08/27 01:20

>WEBサイトでのお問い合わせフォームの作り方が分かりません。 というタイトルですが、もっと起きている問題に寄せたほうが良いでしょう。
oyu

2019/08/27 01:21 編集

ご回答ありがとうございます。 phpコードですがどこに貼り付ければいいでしょうか?
azuapricot

2019/08/27 01:23

質問文に追記しましょう
m.ts10806

2019/08/27 01:24 編集

こちらは「質問への追記・修正の依頼」ですので回答ではありません。 基本的に質問本文に記載してください(他の人の質問や回答を参考にしてください)
kong

2019/08/27 01:26

phpコードは本文に貼れば良いです。 投稿文を書くところに、<code> というアイコンがあると思いますので、それをクリックするとソースを書く書式のテンプレが、自動で投稿欄にセットされます。
m.ts10806

2019/08/27 01:30

今までHTML系の質問でコード提示されているのでそれと同じようにして 言語のところを「PHP」にすれば良いです。
m.ts10806

2019/08/27 02:13 編集

そういえば何度かEC-CUBEの質問されていますけどそれとはまったく関係ない、素のPHPの質問ですよね? 質問内容に「ログファイル設定 DEFAULT_LOGはサーバに合わせること」とあるのでそのあたり「タグはPHPだけで良いのかな」と疑問はあります
CHERRY

2019/08/27 02:32 編集

質問の感じからすると どこかのWebサイトで配布されている「コンタクトフォーム」のスクリプトをダウンロードしてきて設置しているのでしょうか? そうであれば、配布元の URL 等を記載していただいたほうが良いと思います。
退会済みユーザー

退会済みユーザー

2019/08/27 03:55

回答、勇み足過ぎたか?
oyu

2019/08/27 04:38 編集

再現可能なコードになります。 <?php session_start(); session_unset(); session_destroy(); ?> <?php include("phpmailer.inc.php"); //edit(メールアドレスのみ。例えば携帯メールアドレスが必須のような場合「if($_POST['email']!="" && $_POST['email_mobile']!=""){」と記述する。) //only for mailaddress if($_POST['email']!=""){ $files = glob('uploads/*'); //edit(ファイル添付がある場合、その分だけ用意する。この項目が無かったらコメントアウトすること)if the image exists. you must commentout when this column is nothing. //$my_path = "uploads/".$_POST['img']; //$my_path2 = "uploads/".$_POST['img2']; //edit(自動返信メール(管理者、複数指定可))reply mail for admin (you can specify multiple) $items[] = array('subject' => '【】ホームページよりお問い合わせがありました。', 'header_mail' => $_POST['name'].' 様より、以下のお問い合わせがありました。<br><br><br>', 'footer_mail' => '', 'send_fromname' => $_POST['name'], 'send_from' => $_POST['email'], 'send_to' => array('support@netoption.co.jp'), ); //edit(自動返信メール(エンドユーザ) ※「send_fromname」「send_from」にエンドユーザ向けのFROM表記・メアドを入力する。)reply mail for enduser (input to "send_fromname" & "send_from) $items[] = array('subject' => '【】お問い合わせありがとうございます。', 'header_mail' => $_POST['name'].' 様<br><br> お問い合わせありがとうございます。<br> このメールは自動送信メールです。<br> 翌営業日を過ぎましてもお問い合わせに対する対応がない場合は、<br> お手数をおかけしますがまで<br> ご連絡くださいますようお願い申し上げます。<br><br><br>', 'footer_mail' => '', 'send_fromname' => '', 'send_from' => '', 'send_to' => array($_POST['email']), ); foreach($items as $item) { //////////////header_mail//////////// $data= $item['header_mail']; //////////////////////////////////// //edit(管理者・エンドユーザ共通、メールの中心部分)reply mail body for admin & enduser $data.= " 氏名:<br>".$_POST['name']."<br><br> フリガナ:<br>".$_POST['kana']."<br><br> 郵便番号:<br>〒".$_POST['postcode']."<br><br> ご住所:<br>".$_POST['add1'].$_POST['add2']."<br><br> 電話番号:<br>".$_POST['tel1']."-".$_POST['tel2']."-".$_POST['tel3']."<br><br> FAX番号:<br>".$_POST['fax1']."-".$_POST['fax2']."-".$_POST['fax3']."<br><br> メールアドレス:<br>".$_POST['email']."<br><br> お問い合わせ内容:<br>".$_POST['message']."<br><br> "; //////////////footer_mail//////////// $data.= $item['footer_mail']; //////////////////////////////////// $fromname = $item['send_fromname']; ////////////// Subject //////////// $subject = $item['subject']; //////////////////////////////////// $send_from = $item['send_from']; $body = $data; $mailBody = $body; $objMail = new PHPMailer(); $objMail->ContentType = "text/html"; $objMail->CharSet = "utf-8"; $objMail->Mailer = "mail"; $objMail->Priority = 3; $objMail->From = $send_from; $objMail->FromName =$fromname; $objMail->Subject = $subject; //edit(ファイル添付がある場合↑と合わせる。)if the image exists. (same ↑.) if($_POST['img']!=""){ $objMail->AddAttachment($my_path); } if($_POST['img2']!=""){ $objMail->AddAttachment($my_path2); } $objMail->Body = $mailBody; //////////////Send to//////////// foreach($item['send_to'] as $send_to){ $objMail->AddAddress($send_to); } //////////////////////////////////// $objMail->Send(); } // get all file names foreach($files as $file){ // iterate files if(is_file($file)) unlink($file); // delete file } /** * Logging class: * - contains lfile, lwrite and lclose public methods * - lfile sets path and name of log file * - lwrite writes message to the log file (and implicitly opens log file) * - lclose closes log file * - first call of lwrite method will open log file implicitly * - message is written with the following format: [d/M/Y:H:i:s] (script name) message */ //$msg = str_replace("<br>",",",$datalog); /*--Start Config Log----------------------------------------------------------------*/ // Filename of log to use when none is given to write_log , and log folder change permission to 777 //edit(ログファイル設定 DEFAULT_LOGはサーバに合わせること)logfile (DEFAULT_LOG is setting for server) define("DEFAULT_LOG","/virtual/ikeno-derma/public_html/_demo/company_inquiry/log/contact.csv"); $datalog.='氏名:'.$_POST['name'].''; $datalog.=","; $datalog.='フリガナ:'.$_POST['kana'].''; $datalog.=","; $datalog.='郵便番号:'.$_POST['postcode'].''; $datalog.=","; $datalog.='ご住所:'.$_POST['add2'].''; $datalog.=","; $datalog.='電話番号:'.$_POST['tel'].''; $datalog.=","; $datalog.='FAX番号:'.$_POST['fax'].''; $datalog.=","; $datalog.='メールアドレス:'.$_POST['email'].''; $datalog.=","; $datalog.='お問い合わせ内容:'.$_POST['message'].''; /*--END Config Log----------------------------------------------------------------*/ $msg = $datalog; class Logging { // declare log file and file pointer as private properties private $log_file, $fp; // set log file (path and name) public function lfile($path) { $this->log_file = $path; } // write message to the log file public function lwrite($message) { // if file pointer doesn't exist, then open log file if (!is_resource($this->fp)) { $this->lopen(); } // define script name $script_name = pathinfo($_SERVER['PHP_SELF'], PATHINFO_FILENAME); // define current time and suppress E_WARNING if using the system TZ settings // (don't forget to set the INI setting date.timezone) $time = @date('[d/M/Y:H:i:s]'); // write current time, script name and message to the log file // fwrite($this->fp, "$time ($script_name) $message" . PHP_EOL); fwrite($this->fp, "$time , $message" . PHP_EOL); } // close log file (it's always a good idea to close a file when you're done with it) public function lclose() { fclose($this->fp); } // open log file (private method) private function lopen() { $log_file_default = DEFAULT_LOG; // define log file from lfile method or use previously set default $lfile = $this->log_file ? $this->log_file : $log_file_default; // open log file for writing only and place file pointer at the end of the file // (if the file does not exist, try to create it) $this->fp = fopen($lfile, 'a') or exit("Can't open $lfile!"); } } // Logging class initialization $log = new Logging(); // set path and name of log file (optional) $log->lfile(DEFAULT_LOG); // write message to the log file $log->lwrite($msg); // close log file $log->lclose(); }else{ header("Location: index.php"); } ?>
m.ts10806

2019/08/27 04:39

質問は編集できます。 こちらはあくまで質問への追記修正依頼のコメント欄でデフォルト非表示です。 マークダウンも使えませんので原則質問本文を編集してください。
CHERRY

2019/08/27 04:55

コメント欄に記載されたコードは、読みにくいので、質問を編集して <code> ボタンを使って、追記していただけないでしょうか?
m.ts10806

2019/08/27 05:08

これ全部1ファイルですか? ファイルが違うのでしたらコードブロックはわけてください。 あとインデントが全くないと問題切り分けも難しくなるのでお手元のコードのインデントを揃えた後、再度質問に貼りなおしてください。 また、includeしているプログラムの内容もご提示ください。
oyu

2019/08/27 08:57

全ファイルを質問に入れたんですが文字数がおおいのか投稿されません。 いい方法はないでしょうか? すみません。 送信完了ページのcomplete.phpがまだ表示されません。 何が原因でしょうか? phpファイルが原因なのでしょうか?
m.ts10806

2019/08/27 10:33

Githubとか外部サービスを使うのもありです。
oyu

2019/08/27 10:51

Githubは今まで利用したことがないのですが難しいでしょうか? complete.phpがアクセスできず表示されないので多分ですが complete.phpが原因かと思うのですがどうでしょうか?
oyu

2019/08/27 10:57

index.php <?php include('conf.php') ?> <h3 class="title" id="blcForm"> 入力フォーム<br><span>Input form</span> </h3> <p class="item"> <span class="required">必須</span>項目は入力必須項目です。お手数ですがご記入お願いいたします。 </p> <form action="index.php#blcForm" method="post" enctype="multipart/form-data"> <table class="tblComm"> <tr> <th>氏名<span class="required">必須</span></th> <td> <input type="text" name="name" value="<?php echo $temp_value['name']; ?>" class="focusAnimation middleSize" placeholder="山田 太郎"> <div class="txtError"><?php if($error['name']) echo $error['name']; ?></div> </td> </tr> <tr> <th>フリガナ<span class="required">必須</span></th> <td> <input type="text" name="kana" value="<?php echo $temp_value['kana']; ?>" class="focusAnimation middleSize" placeholder="ヤマダ タロウ"> <div class="txtError"><?php if($error['kana']) echo $error['kana']; ?></div> </td> </tr> <tr> <th>郵便番号<span class="nRequired">任意</span></th> <td> 〒<input type="tel" name="postcode" value="<?php echo $temp_value['postcode']; ?>" class="focusAnimation narrowSize" placeholder="000-0000"> <div class="txtError"><?php if($error['postcode']) echo $error['postcode']; ?></div> </td> </tr> <tr> <th>ご住所<span class="nRequired">任意</span></th> <td> <select name="add1" class="focusAnimation"> <option value="" selected="selected">お選び下さい</option> <option value="北海道" <?php if($temp_value['add1']=="北海道") echo "selected"; ?> >北海道</option> <option value="青森県" <?php if($temp_value['add1']=="青森県") echo "selected"; ?> >青森県</option> <option value="岩手県" <?php if($temp_value['add1']=="岩手県") echo "selected"; ?> >岩手県</option> <option value="宮城県" <?php if($temp_value['add1']=="宮城県") echo "selected"; ?> >宮城県</option> <option value="秋田県" <?php if($temp_value['add1']=="秋田県") echo "selected"; ?> >秋田県</option> <option value="山形県" <?php if($temp_value['add1']=="山形県") echo "selected"; ?> >山形県</option> <option value="福島県" <?php if($temp_value['add1']=="福島県") echo "selected"; ?> >福島県</option> <option value="茨城県" <?php if($temp_value['add1']=="茨城県") echo "selected"; ?> >茨城県</option> <option value="栃木県" <?php if($temp_value['add1']=="栃木県") echo "selected"; ?> >栃木県</option> <option value="群馬県" <?php if($temp_value['add1']=="群馬県") echo "selected"; ?> >群馬県</option> <option value="埼玉県" <?php if($temp_value['add1']=="埼玉県") echo "selected"; ?> >埼玉県</option> <option value="千葉県" <?php if($temp_value['add1']=="千葉県") echo "selected"; ?> >千葉県</option> <option value="東京都" <?php if($temp_value['add1']=="東京都") echo "selected"; ?> >東京都</option> <option value="神奈川県" <?php if($temp_value['add1']=="神奈川県") echo "selected"; ?> >神奈川県</option> <option value="山梨県" <?php if($temp_value['add1']=="山梨県") echo "selected"; ?> >山梨県</option> <option value="長野県" <?php if($temp_value['add1']=="長野県") echo "selected"; ?> >長野県</option> <option value="新潟県" <?php if($temp_value['add1']=="新潟県") echo "selected"; ?> >新潟県</option> <option value="富山県" <?php if($temp_value['add1']=="富山県") echo "selected"; ?> >富山県</option> <option value="石川県" <?php if($temp_value['add1']=="石川県") echo "selected"; ?> >石川県</option> <option value="福井県" <?php if($temp_value['add1']=="福井県") echo "selected"; ?> >福井県</option> <option value="岐阜県" <?php if($temp_value['add1']=="岐阜県") echo "selected"; ?> >岐阜県</option> <option value="静岡県" <?php if($temp_value['add1']=="静岡県") echo "selected"; ?> >静岡県</option> <option value="愛知県" <?php if($temp_value['add1']=="愛知県") echo "selected"; ?> >愛知県</option> <option value="三重県" <?php if($temp_value['add1']=="三重県") echo "selected"; ?> >三重県</option> <option value="滋賀県" <?php if($temp_value['add1']=="滋賀県") echo "selected"; ?> >滋賀県</option> <option value="京都府" <?php if($temp_value['add1']=="京都府") echo "selected"; ?> >京都府</option> <option value="大阪府" <?php if($temp_value['add1']=="大阪府") echo "selected"; ?> >大阪府</option> <option value="兵庫県" <?php if($temp_value['add1']=="兵庫県") echo "selected"; ?> >兵庫県</option> <option value="奈良県" <?php if($temp_value['add1']=="奈良県") echo "selected"; ?> >奈良県</option> <option value="和歌山県" <?php if($temp_value['add1']=="和歌山県") echo "selected"; ?> >和歌山県</option> <option value="鳥取県" <?php if($temp_value['add1']=="鳥取県") echo "selected"; ?> >鳥取県</option> <option value="島根県" <?php if($temp_value['add1']=="島根県") echo "selected"; ?> >島根県</option> <option value="岡山県" <?php if($temp_value['add1']=="岡山県") echo "selected"; ?> >岡山県</option> <option value="広島県" <?php if($temp_value['add1']=="広島県") echo "selected"; ?> >広島県</option> <option value="山口県" <?php if($temp_value['add1']=="山口県") echo "selected"; ?> >山口県</option> <option value="徳島県" <?php if($temp_value['add1']=="徳島県") echo "selected"; ?> >徳島県</option> <option value="香川県" <?php if($temp_value['add1']=="香川県") echo "selected"; ?> >香川県</option> <option value="愛媛県" <?php if($temp_value['add1']=="愛媛県") echo "selected"; ?> >愛媛県</option> <option value="高知県" <?php if($temp_value['add1']=="高知県") echo "selected"; ?> >高知県</option> <option value="福岡県" <?php if($temp_value['add1']=="福岡県") echo "selected"; ?> >福岡県</option> <option value="佐賀県" <?php if($temp_value['add1']=="佐賀県") echo "selected"; ?> >佐賀県</option> <option value="長崎県" <?php if($temp_value['add1']=="長崎県") echo "selected"; ?> >長崎県</option> <option value="熊本県" <?php if($temp_value['add1']=="熊本県") echo "selected"; ?> >熊本県</option> <option value="大分県" <?php if($temp_value['add1']=="大分県") echo "selected"; ?> >大分県</option> <option value="宮崎県" <?php if($temp_value['add1']=="宮崎県") echo "selected"; ?> >宮崎県</option> <option value="鹿児島県" <?php if($temp_value['add1']=="鹿児島県") echo "selected"; ?> >鹿児島県</option> <option value="沖縄県" <?php if($temp_value['add1']=="沖縄県") echo "selected"; ?> >沖縄県</option> </select> <div class="txtError"><?php if($error['add1']) echo $error['add1']; ?></div> <input type="text" name="add2" value="<?php echo $temp_value['add2']; ?>" class="focusAnimation wideSize" placeholder="○区○町0-0-0 ○マンション○号室"> <div class="txtError"><?php if($error['add2']) echo $error['add2']; ?></div> </td> </tr> <tr> <th>電話番号<span class="nRequired">任意</span></th> <td> <input type="tel" name="tel" value="<?php echo $temp_value['tel']; ?>" class="focusAnimation smallSize" placeholder="0000-0000-0000"> <div class="txtError"><?php if($error['tel']) echo $error['tel']; ?></div> </td> </tr> <tr> <th>FAX番号<span class="nRequired">任意</span></th> <td> <input type="tel" name="fax" value="<?php echo $temp_value['fax']; ?>" class="focusAnimation smallSize" placeholder="0000-0000-0000"> <div class="txtError"><?php if($error['fax']) echo $error['fax']; ?></div> </td> </tr> <tr> <th>メールアドレス<span class="required">必須</span></th> <td> <input type="text" name="email" value="<?php echo $temp_value['email']; ?>" class="focusAnimation middleSize" placeholder="xxx@xxx.co.jp"> <div class="txtError"><?php if($error['email']) echo $error['email']; ?></div> </td> </tr> <tr> <th>お問い合わせ内容<span class="required">必須</span></th> <td> <textarea name="message" class="focusAnimation fullSize"><?php echo $temp_value['message']; ?></textarea> <div class="txtError"><?php if($error['message']) echo $error['message']; ?></div> </td> </tr> </table> <p class="information"> 本サイト上でご提供いただいた個人情報のお取扱いについて、当方はお客様からご提供いただく個人情報の保護のため個人情報保護方針を定めています。ご提供いただ<br> いた個人情報は、この個人情報保護方針および下記の規定に基づき取扱わせていただきます。 </p> <div id="formSubmit"> <input type="submit" name="submit" value="確認画面へ" class="btn animLink"> </div>
oyu

2019/08/27 10:59

confirm.php <?php session_start(); ?> <h3 class="title" id="blcForm"> 入力内容のご確認 </h3> <p class="item"> 以下の内容で宜しければ「送信」ボタンを押して下さい。 </p> <form action="complete.php" method="post" enctype="multipart/form-data"> <table class="tblComm"> <tr> <th>氏名</th> <td> <?php if(isset($_SESSION['name'])) echo $_SESSION['name']; ?> <input type="hidden" name="name" value="<?php if(isset($_SESSION['name'])) echo $_SESSION['name']; ?>"> </td> </tr> <tr> <th>フリガナ</th> <td> <?php if(isset($_SESSION['kana'])) echo $_SESSION['kana']; ?> <input type="hidden" name="kana" value="<?php if(isset($_SESSION['kana'])) echo $_SESSION['kana']; ?>"> </td> </tr> <tr> <th>郵便番号</th> <td> 〒<?php if(isset($_SESSION['postcode'])) echo $_SESSION['postcode']; ?> <input type="hidden" name="postcode" value="<?php if(isset($_SESSION['postcode'])) echo $_SESSION['postcode']; ?>"> </td> </tr> <tr> <th>ご住所</th> <td> <?php if(isset($_SESSION['add1'])) echo $_SESSION['add1']; ?> <input type="hidden" name="add1" value="<?php if(isset($_SESSION['add1'])) echo $_SESSION['add1']; ?>"> <?php if(isset($_SESSION['add2'])) echo $_SESSION['add2']; ?> <input type="hidden" name="add2" value="<?php if(isset($_SESSION['add2'])) echo $_SESSION['add2']; ?>"> </td> </tr> <tr> <th>電話番号</th> <td> <?php if(isset($_SESSION['tel'])) echo $_SESSION['tel']; ?> <input type="hidden" name="tel" value="<?php if(isset($_SESSION['tel'])) echo $_SESSION['tel']; ?>"> </td> </tr> <tr> <th>FAX番号</th> <td> <?php if(isset($_SESSION['fax'])) echo $_SESSION['fax']; ?> <input type="hidden" name="fax" value="<?php if(isset($_SESSION['fax'])) echo $_SESSION['fax']; ?>"> </td> </tr> <tr> <th>メールアドレス</th> <td> <?php if(isset($_SESSION['email'])) echo $_SESSION['email']; ?> <input type="hidden" name="email" value="<?php if(isset($_SESSION['email'])) echo $_SESSION['email']; ?>"> </td> </tr> <tr> <th>お問い合わせ内容</th> <td> <?php if(isset($_SESSION['message'])) echo $_SESSION['message']; ?> <input type="hidden" name="message" value="<?php if(isset($_SESSION['message'])) echo $_SESSION['message']; ?>"> </td> </tr> </table> <div id="formSubmitlink"> <input type="submit" name="submit" value="送信" class="btn animLink link"> <input type="button" value="戻る" class="btn animLink link" onClick="history.back()"> </div>
退会済みユーザー

退会済みユーザー

2019/08/27 11:03

「complete.phpがアクセスできず表示されない」ってことだけど、サーバーのerror_logはチェックしているのかな。画面に表示できないエラーは文法エラーがあったり実行時エラーがあったりすると、真っ白画面のままerror_logにエラーメッセージを出力していたりするのだが。サーバーの設定によってerror_logの出力先が変わったりするので、レンタルサーバーだと業者のドキュメント参照。
oyu

2019/08/27 11:06

サーバーのerror_logとはどのように調べたらいいのでしょうか?
oyu

2019/08/27 11:07

↓こちらのエラーとは別なのでしょうか? Can't open /virtual/ikeno-derma/public_html/_demo/company_inquiry/log/contact.csv!
退会済みユーザー

退会済みユーザー

2019/08/27 11:12 編集

apache httpdが出力するaccess_log、error_logのことです。例えば /var/log/httpd/ あたりにあったりします。詳しくは httpd.confにあるErrorLogディレクティブで定義されます。
oyu

2019/08/27 11:20

XAMPPの中にあるApacheの右側にLogsの中にerror_logがありました。 こちらのデータを修正するのでしょうか?
m.ts10806

2019/08/27 12:08

>Github とりあえずアカウント作ってアップロードするだけで良いかと思いますけど(私もアカウント作って作りっぱなしですが) >エラーログ あくまで起きたエラーが書き込まれていくファイルなので修正するわけではなく「どんなデータが起きているか確認する」用途でのみ利用します。 だから、プログラム実行してエラー起きたら、その時間のエラーが記録されているはずなので、その記録を確認して、原因を探るために役立てます。
oyu

2019/08/28 01:48

話は変わるのですが_path.phpをサーバにアップして、このファイルにアクセスとは どのように行えばいいのでしょうか? _path.phpファイルへのパスが分かるとあります。
oyu

2019/08/28 01:49

_path.phpファイル <?php echo __FILE__; ?>
m.ts10806

2019/08/28 01:52

変わりすぎてどこから出てきた話なのか分からないです。 「ファイルにアクセス」にも色々あります。 ブラウザからアクセスさせたいのか、プログラムから読み込ませたいのか どういう役割でどういうことをさせたいかで決まります。
oyu

2019/08/28 01:57

変わりすぎてすみません。 そうです。 そのファイルにブラウザでアクセスするのですがどのように行えばいいのでしょうか?
oyu

2019/08/28 01:58

設定方法を教えていただけないでしょうか? どうぞよろしくお願いいたします。
m.ts10806

2019/08/28 01:58

別件なので本件解決してからにされたほうが良いかと。
azuapricot

2019/08/28 02:00

それは別質問でたてるべきじゃないですか? 今回のエラーと、関係あるならいいですけど。 はたから見ているとなんで急にその話しだしたの?ってなるだけで余計わけわからなくなります。
azuapricot

2019/08/28 02:01

まずエラーログの在り処を教えてもらったんですよね?何かエラーは出てないんですか? あくまでもこの追記欄は、この質問を解決するために使用して下さい
oyu

2019/08/28 02:02

今回の質問の原因がそれです。
oyu

2019/08/28 02:03

お問い合わせフォームの送信完了ページにアクセスできないのが多分ですが ファイルへのパスが間違っているからです。 Can't open /virtual/ikeno-derma/public_html/_demo/company_inquiry/log/contact.csv!
m.ts10806

2019/08/28 02:03

_path.phpというファイルにはどこにもCan't Openと出るような原因はありませんよ。
azuapricot

2019/08/28 02:04

それがわかれば解決できるっていうなら質問の本文に追記で記載しましょう。
m.ts10806

2019/08/28 02:05

先ほど回答しましたので確認しておいてください。 ファイルパスが間違っているというのは正しいですが、実情は間違ってます。 作る必要があるファイルを作っていない(そしてそのパスを指定していない)と考えます。 Windowsであれば` /virtual/`ではじまるパスはありませんので(Macは詳しくないから知らない)
m.ts10806

2019/08/28 02:07

(。。。タイトル調整してほしいなぁ) (。。。コードにインデントちゃんとつけてほしいなぁ)
azuapricot

2019/08/28 02:32

せっかくマークダウン使ってもインデントが皆無では意味がない。。。。
m.ts10806

2019/08/28 02:37

オフトピなのでこちらに書きますが 「ikeno-derma」って現存する病院のようですけど、どんな関係なんでしょうね。 そのまま使うことで相手に迷惑かけるようなことがなければいいのですけど。
退会済みユーザー

退会済みユーザー

2019/08/28 04:25

サポートアドレス晒してるほうが怒られると思うぞ^^;
m.ts10806

2019/08/28 05:04 編集

おーこれはいかんですね。質問削除しないとマズそう。怒られるだけじゃすまないですね。
azuapricot

2019/08/28 05:51

ほんとだーこれはいかんですね。客先からぶん殴られそう
azuapricot

2019/08/28 05:58

質問が質問になってないし、回答に対してまた意味不明な質問するし、回答者の時間だって有限だしm.ts10806さんが親切だから付き合ってくれているだけであって・・・ まず質問の仕方を練習するところから再度始めたほうがよいですね。 あとセキュリティについて・・・ 回答がついちゃったので質問の削除申請が通るかわかりませんが、バレたら首がとぶかもしれない守秘義務違反だと思うのでこの質問削除することをオススメします
asakuta

2019/08/28 08:30

編集で変数部分を適当な値に置き換えれば良いんじゃない? 質問部分に関係は無さそうだし(まあ何が質問なのかは良くわからんが) 頑なに編集しないのは私怨の可能性もあるが…
guest

回答3

0

  1. ファイルが存在しないためオープンできない
  2. ファイルを格納するディレクトリに対してwebサーバープロセスがアクセスできない(書き込み権限がない)
  3. ファイルを格納するディレクトリに至る途中のディレクトリが存在しない、もしくはwebサーバープロセスからのアクセス権限がない

ろくな情報が出てないところで想像つくのはこれくらいかな

logディレクトリやcsvファイルのオーナーをwebサーバープロセスのものと合わせる(chown/chgrp)か、
他のグループからの書き込みを許可するようchmodすればいいんじゃないかと察した。
細かいコマンドパラメータなどは別途調べてね。

投稿2019/08/27 02:15

編集2019/08/27 02:18
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/08/27 06:29

こんな回答内容で、本当に解決したの? 大丈夫? 何が原因だったか自分でまとめて書いてみることもできるよ?
oyu

2019/08/27 08:38

すみません。 送信完了ページのcomplete.phpがまだ表示されません。 何が原因でしょうか? phpファイルが原因なのでしょうか?
guest

0

WEBサイトでのお問い合わせフォームの作り方が分かりません。

メールフォームは初学者が手を出す分野ではないです。

ざっくりいうと、インフラからクライアントまである程度以上の理解が必要です。
以下は理解必須項目です。

・DNS の設定(MXレコード, SPF, DKIM 他)
・mail システムへの理解(SMTP, 文字コード等)
・サーバ/ネットワークへの基礎知識(連投対策等)
・php の基本(POST/GET, session, output への理解, メールヘッダ/body の作り方)
・基本的なセキュリティ対策(csrf, メールヘッダインジェクション他)
・メールクライアントごとの問題のある特徴

『PHP メールフォーム』の上位10件が勝率10% が笑って読める程度になってから、実装を検討してみて下さい。
適当に作るとスパムの発射台として使われ、ドメインが汚されます。

本件は上記以前の段階で躓いていますが、参考まで。

投稿2019/08/28 03:25

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

//edit(ログファイル設定 DEFAULT_LOGはサーバに合わせること)logfile (DEFAULT_LOG is setting for server)

define("DEFAULT_LOG","/virtual/ikeno-derma/public_html/_demo/company_inquiry/log/contact.csv");

「PHPを動かしている環境に合わせてください」という意味です。
質問者さんがPHPを動かしている環境には/virtual/ikeno-derma/public_html/_demo/company_inquiry/log/contact.csvというファイルは存在しないから出ているメッセージに思います。

下記で引っかかっている

php

1$log_file_default = DEFAULT_LOG; 2// define log file from lfile method or use previously set default 3$lfile = $this->log_file ? $this->log_file : $log_file_default; 4// open log file for writing only and place file pointer at the end of the file 5// (if the file does not exist, try to create it) 6$this->fp = fopen($lfile, 'a') or exit("Can't open $lfile!"); //ここが出てる

システム上で捕捉して出力しているので「把握されているエラー」ですね。

XAMPPの中にあるApacheの右側にLogsの中にerror_logがありました。

というところから、WindowsまたはMacの環境と思いますが、現在のコードを見た限りでは「なかったらそのファイルを作る」という処理すらもないので、自分でcontact.csvというファイルを作ってそのファイルのフルパスをDEFAULT_LOGという定数の定数値として設定する必要があるということになります。

ファイル作ってそのパスを/virtual/ikeno-derma/public_html/_demo/company_inquiry/log/contact.csvから置き換えてください

蛇足:
コメントで依頼してあまり取り上げてもらえてないのでこちらで補足しますと、
コードのインデント(字下げ)がないコードは読みづらく、また{}の対応も見えにくいので問題切り分けが難しくなります。
コードフォーマット機能のあるエディタを使ってください。

下記はEclipseのフォーマット機能を使った例

php

1<?php 2session_start(); 3session_unset(); 4session_destroy(); 5?> 6 7<?php 8include ("phpmailer.inc.php"); 9 10// edit(メールアドレスのみ。例えば携帯メールアドレスが必須のような場合「if($_POST['email']!="" && $_POST['email_mobile']!=""){」と記述する。) 11// only for mailaddress 12if ($_POST['email'] != "") { 13 14 $files = glob('uploads/*'); 15 16 // edit(ファイル添付がある場合、その分だけ用意する。この項目が無かったらコメントアウトすること)if the image exists. you must commentout when this column is nothing. 17 // $my_path = "uploads/".$_POST['img']; 18 // $my_path2 = "uploads/".$_POST['img2']; 19 20 // edit(自動返信メール(管理者、複数指定可))reply mail for admin (you can specify multiple) 21 $items[] = array( 22 'subject' => '【】ホームページよりお問い合わせがありました。', 23 'header_mail' => $_POST['name'] . ' 様より、以下のお問い合わせがありました。<br><br><br>', 24 'footer_mail' => '', 25 'send_fromname' => $_POST['name'], 26 'send_from' => $_POST['email'], 27 'send_to' => array( 28 'support@netoption.co.jp' 29 ) 30 ); 31 32 // edit(自動返信メール(エンドユーザ) ※「send_fromname」「send_from」にエンドユーザ向けのFROM表記・メアドを入力する。)reply mail for enduser (input to "send_fromname" & "send_from) 33 $items[] = array( 34 'subject' => '【】お問い合わせありがとうございます。', 35 'header_mail' => $_POST['name'] . ' 様<br><br> 36お問い合わせありがとうございます。<br> 37このメールは自動送信メールです。<br> 38翌営業日を過ぎましてもお問い合わせに対する対応がない場合は、<br> 39お手数をおかけしますがまで<br> 40ご連絡くださいますようお願い申し上げます。<br><br><br>', 41 'footer_mail' => '', 42 'send_fromname' => '', 43 'send_from' => '', 44 'send_to' => array( 45 $_POST['email'] 46 ) 47 ); 48 49 foreach ($items as $item) { 50 // ////////////header_mail//////////// 51 $data = $item['header_mail']; 52 // ////////////////////////////////// 53 54 // edit(管理者・エンドユーザ共通、メールの中心部分)reply mail body for admin & enduser 55 $data .= " 56氏名:<br>" . $_POST['name'] . "<br><br> 57フリガナ:<br>" . $_POST['kana'] . "<br><br> 58郵便番号:<br>〒" . $_POST['postcode'] . "<br><br> 59ご住所:<br>" . $_POST['add1'] . $_POST['add2'] . "<br><br> 60電話番号:<br>" . $_POST['tel1'] . "-" . $_POST['tel2'] . "-" . $_POST['tel3'] . "<br><br> 61FAX番号:<br>" . $_POST['fax1'] . "-" . $_POST['fax2'] . "-" . $_POST['fax3'] . "<br><br> 62メールアドレス:<br>" . $_POST['email'] . "<br><br> 63お問い合わせ内容:<br>" . $_POST['message'] . "<br><br> 64"; 65 66 // ////////////footer_mail//////////// 67 $data .= $item['footer_mail']; 68 // ////////////////////////////////// 69 70 $fromname = $item['send_fromname']; 71 72 // //////////// Subject //////////// 73 $subject = $item['subject']; 74 // ////////////////////////////////// 75 $send_from = $item['send_from']; 76 77 $body = $data; 78 79 $mailBody = $body; 80 $objMail = new PHPMailer(); 81 82 $objMail->ContentType = "text/html"; 83 $objMail->CharSet = "utf-8"; 84 $objMail->Mailer = "mail"; 85 $objMail->Priority = 3; 86 $objMail->From = $send_from; 87 88 $objMail->FromName = $fromname; 89 $objMail->Subject = $subject; 90 // edit(ファイル添付がある場合↑と合わせる。)if the image exists. (same ↑.) 91 if ($_POST['img'] != "") { 92 $objMail->AddAttachment($my_path); 93 } 94 if ($_POST['img2'] != "") { 95 $objMail->AddAttachment($my_path2); 96 } 97 98 $objMail->Body = $mailBody; 99 // ////////////Send to//////////// 100 foreach ($item['send_to'] as $send_to) { 101 $objMail->AddAddress($send_to); 102 } 103 // ////////////////////////////////// 104 105 $objMail->Send(); 106 } 107 108 // get all file names 109 foreach ($files as $file) { // iterate files 110 if (is_file($file)) 111 unlink($file); // delete file 112 } 113 114 /** 115 * Logging class: 116 * - contains lfile, lwrite and lclose public methods 117 * - lfile sets path and name of log file 118 * - lwrite writes message to the log file (and implicitly opens log file) 119 * - lclose closes log file 120 * - first call of lwrite method will open log file implicitly 121 * - message is written with the following format: [d/M/Y:H:i:s] (script name) message 122 */ 123 // $msg = str_replace("<br>",",",$datalog); 124 125 /* --Start Config Log---------------------------------------------------------------- */ 126 127 // Filename of log to use when none is given to write_log , and log folder change permission to 777 128 129 // edit(ログファイル設定 DEFAULT_LOGはサーバに合わせること)logfile (DEFAULT_LOG is setting for server) 130 define("DEFAULT_LOG", "/virtual/ikeno-derma/public_html/_demo/company_inquiry/log/contact.csv"); 131 $datalog .= '氏名:' . $_POST['name'] . ''; 132 $datalog .= ","; 133 $datalog .= 'フリガナ:' . $_POST['kana'] . ''; 134 $datalog .= ","; 135 $datalog .= '郵便番号:' . $_POST['postcode'] . ''; 136 $datalog .= ","; 137 $datalog .= 'ご住所:' . $_POST['add2'] . ''; 138 $datalog .= ","; 139 $datalog .= '電話番号:' . $_POST['tel'] . ''; 140 $datalog .= ","; 141 $datalog .= 'FAX番号:' . $_POST['fax'] . ''; 142 $datalog .= ","; 143 $datalog .= 'メールアドレス:' . $_POST['email'] . ''; 144 $datalog .= ","; 145 $datalog .= 'お問い合わせ内容:' . $_POST['message'] . ''; 146 147 /* --END Config Log---------------------------------------------------------------- */ 148 149 $msg = $datalog; 150 151 class Logging 152 { 153 154 // declare log file and file pointer as private properties 155 private $log_file, $fp; 156 157 // set log file (path and name) 158 public function lfile($path) 159 { 160 $this->log_file = $path; 161 } 162 163 // write message to the log file 164 public function lwrite($message) 165 { 166 // if file pointer doesn't exist, then open log file 167 if (! is_resource($this->fp)) { 168 $this->lopen(); 169 } 170 // define script name 171 $script_name = pathinfo($_SERVER['PHP_SELF'], PATHINFO_FILENAME); 172 // define current time and suppress E_WARNING if using the system TZ settings 173 // (don't forget to set the INI setting date.timezone) 174 $time = @date('[d/M/Y:H:i:s]'); 175 // write current time, script name and message to the log file 176 // fwrite($this->fp, "$time ($script_name) $message" . PHP_EOL); 177 fwrite($this->fp, "$time , $message" . PHP_EOL); 178 } 179 180 // close log file (it's always a good idea to close a file when you're done with it) 181 public function lclose() 182 { 183 fclose($this->fp); 184 } 185 186 // open log file (private method) 187 private function lopen() 188 { 189 $log_file_default = DEFAULT_LOG; 190 // define log file from lfile method or use previously set default 191 $lfile = $this->log_file ? $this->log_file : $log_file_default; 192 // open log file for writing only and place file pointer at the end of the file 193 // (if the file does not exist, try to create it) 194 $this->fp = fopen($lfile, 'a') or exit("Can't open $lfile!"); 195 } 196 } 197 198 // Logging class initialization 199 $log = new Logging(); 200 201 // set path and name of log file (optional) 202 $log->lfile(DEFAULT_LOG); 203 204 // write message to the log file 205 $log->lwrite($msg); 206 207 // close log file 208 $log->lclose(); 209} else { 210 211 header("Location: index.php"); 212} 213

今、自身が質問に提示されたコードとどちらが読みやすいか見比べてください。

投稿2019/08/28 02:03

編集2019/08/28 02:38
m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/08/28 02:39

ただ、 if文の中にclass定義があるのがすごく謎。 本当にどこから持ってきたコードなんだろう。
oyu

2019/08/28 02:53

contact.csvについてお聞きしたいのですが メモ帳で作るのでしょうか?
m.ts10806

2019/08/28 03:00

csvが何かわかってないという意味でしょうか。 どんな手段でもいいのでまず作ってみてください。 おそらく回答内容をきちんと理解されてないようにも見えますが、 パスさえ正しければcontact.csvというファイル名である必要も、CSVである必要もありません。 みたところCSVとして取得するような内容もないですしfopenしてfwriteしているだけなので PHPからテキストとして扱えるファイル形式であればなんだって構わないわけです。
oyu

2019/08/28 03:03

log/log.csvを作りました。 log.csvファイルにこのパスを入れたらいいのでしょうか? /virtual/ikeno-derma/public_html/_demo/company_inquiry/log/contact.csv
m.ts10806

2019/08/28 03:04

>log.csvファイルにこのパスを入れたらいいのでしょうか? それはどういうことでしょうか。 私の回答が伝わっていない感じがあるのでどう理解したのかを聞きたいです。 というか、PHPの基礎部分すっぽり抜けて理解しないままのコードをいじっても何もうまくいかないと思いますけど・・
oyu

2019/08/28 03:06

log.csvファイルを開いたら このファイルはバイナリか、サポートされていないテキストエンコードを使用しているため、エディターに表示されませんと表示されております。
m.ts10806

2019/08/28 03:15

>log.csvファイルを開いたら どの段階で開いたのでしょうか。というか会話が成り立ってるように思えません。
oyu

2019/08/28 03:19

エディタでlog.csvファイルを開きました。
oyu

2019/08/28 03:20

あとはどうすればいいのでしょうか?
m.ts10806

2019/08/28 03:26

会話が成り立ってるように思えません。(2回目) 責めるつもりはありませんが、私も質問者さんの横にいるわけではなくて全くの他人です。 きちんとコミュニケーションをとってもらわないとただ単に時間だけが過ぎていきます。 「自分がやりたいことだけに答えてればいい」という姿勢は通じませんよ。 つまり、「私の確認事項に何一つ答えてもらってないので答えようがない」というのが実際のところです。 何を言っているか分からない箇所があればきちんと質問するなりして確認してください。
m.ts10806

2019/08/28 03:39

1個1個かなりかみ砕いて書くのできちんと把握してください。 まず回答。 ・エラーと言ってもプログラム側でチェックした結果「出している」エラーである ・もともとDEFAULT_LOG という定数に設定されている値は仮のものであり、自身の環境にあわせる必要がある ・もともとの設定値の箇所にそのファイルがないのであれば、自分でファイルを作り、そのファイルのパスを設定に置き換える必要がある ・コードはインデントを付けないと読みにくい。ちゃんとつけること。できればフォーマット機能のあるエディタを採用すること 次にコメント ・DEFAULT_LOG に指定された~~~contact.csvというファイルについては単に決めるだけの問題で、自分が勝手にファイルを作ってそのファイルのパスを設定値にすれば良い ・どうやって作ったのか、どういう段階を経てファイルを開いたのか書かれないままいきなり「log.csvをファイルを開いたら」と書かれても何のことかわからない ・どうやって作ったのか、どういう段階を経てファイルを開くことになったのか教えてください ・「エディタでlog.csvファイルを開きました。」と言われても何のエディタか分からない。なおメモ帳を「エディタ」と呼んでいるのであればそれは正しくないので「Windows標準のメモ帳」と表現すべき。そうれでないならエディタの正式名称を書くべき 大事なことなのでもう一度書きますが、回答者・熟練者といっても「何も書いてないのに全て察する」ということは無理です。そして赤の他人です。 書いてある内容しかくみ取ることはできないし、その裏に何かあったとしても千差万別なので、質問者がどういう環境で何をやったのかきちんと書かないと何も伝わりません。 説明不足はそのまま無用なやりとりの繰り返しになっていくだけで解決には一切向かいません。 ちゃんと解決したいのでしたら、省かず物事や現象は正確に書いて伝える努力をしてください。 コミュニケーションをきちんと取ってください。 (あとできれば多少なり人の時間を使ってることは認識してもらいたいし、人の力を借りることを選んだ以上は、質問者側はきちんと全て伝える義務があり、問題を解決するまで対応する責任があります)
oyu

2019/08/28 03:51 編集

ファイルがない読み込んでいたいためlog.csvファイルを作ることは理解しました。 そのlog.csvファイルの中にphpコードを埋め込むてことでしょうか? エディタはVisual Studio Codeを利用しております。
m.ts10806

2019/08/28 03:54

>そのlog.csvファイルの中にphpコードを埋め込むてことでしょうか? どこにその話がありますか?どこでそう理解しましたか?
m.ts10806

2019/08/28 03:55 編集

>エディタはVisual Studio Codeを利用しております。 log.csvもVSCodeで作ったのでしょうか? などなど、ちょっとしたことで何度も確認しなければいけないので、お互いしんどいですよ。 最初からきちんと全て伝えてください。 なるべく時間を効率的に使うためにも、省略せずに詳しく書いてください。
m.ts10806

2019/08/28 03:58

「パス」「フルパス」という語句は理解されてますか?
oyu

2019/08/28 04:11

phpコードを埋め込むのは $log_file_default = DEFAULT_LOG; // define log file from lfile method or use previously set default $lfile = $this->log_file ? $this->log_file : $log_file_default; // open log file for writing only and place file pointer at the end of the file // (if the file does not exist, try to create it) $this->fp = fopen($lfile, 'a') or exit("Can't open $lfile!"); //ここが出てる ↑この内容をlog.csv似埋め込むのかと思いました。
oyu

2019/08/28 04:12

Visual Studio Codeでlog.csvファイルを作りました。
m.ts10806

2019/08/28 04:14 編集

>↑この内容をlog.csv似埋め込むのかと思いました。 そもそも「定数」が何かを理解されているのでしょうか? 私の回答に太字で「自分でcontact.csvというファイルを作ってそのファイルのフルパスをDEFAULT_LOGという定数の定数値として設定する」と書きましたが、その意味はどのように理解されているのでしょうか? >Visual Studio Codeでlog.csvファイルを作りました。 了解です。今後は初めからそのようにきちんと具体的に書くようにしてくださいね。
oyu

2019/08/28 04:14

パスとフルパス違いはある程度理解しております。
m.ts10806

2019/08/28 04:15

パスとフルパスの違いを聞いているのではなく「それそのものが何のことか」です。
oyu

2019/08/28 04:31

contact.csvファイルを作り パスを使ってファイルを表示させるてことですよね?
m.ts10806

2019/08/28 04:38

そもそもファイルを表示するプログラムではないですよね。 私が回答で言及しているのはあくまで define("DEFAULT_LOG","/virtual/ikeno-derma/public_html/_demo/company_inquiry/log/contact.csv"); を define("DEFAULT_LOG","作ったファイルのフルパス"); に変更するというだけです。 もし 「/virtual/ikeno-derma/public_html/_demo/company_inquiry/log/contact.csv」がなんのことか理解していなかったり、define()が何しているか分からないならそう聞いてください。 起きている問題に対して求めていることが大きすぎるし、それに対して自身の知識技術が追い付いていないので会話が成立していません。 PHPの基礎をきちんと身に付けることによってようやく成立するものと思います。 今回表示されたCant Open ~~が解消したからってそれ以上の問題が山積みなので、 それを毎回質問してたらキリがないですよ。 もっと簡単なプログラムから始めたほうが自分の手におえるし、 どんどん解決していけます。まずは自力をつけてください。
oyu

2019/08/28 04:50

詳しく教えていただきありがとうございます。 もっと理解を深めてプログラムについて詳しくなりたいと思います。 まだ表示されないのですが 作ったファイルのフルパスは /httpdocs/_demo/ikeno-derma/company_inquiry/log/contact.csv なのですがこのパスならこちらが正しいのでしょうか? define("DEFAULT_LOG","/vhosts/ikeno-derma/public_html/_demo/ikeno-derma/company_inquiry/log/contact.csv");
m.ts10806

2019/08/28 05:02

log.csvは何の話だったんでしょうか。 > このパスならこちらが正しいのでしょうか? 入れてみてください。本当にそれが正しいパスならCant Openは出力されないはずです。
oyu

2019/08/28 05:16

何度もすみません。 log.csvの中身は空でいいのですよね?
m.ts10806

2019/08/28 05:32

「たぶん」としか言えないです。 lwrite()で書き込んでいるだけなので。 しかし、どちらが本当ですか? 正しい情報を提示いただかないとアドバイスしようがないです。 > log/log.csvを作りました。 >作ったファイルのフルパスは /httpdocs/_demo/ikeno-derma/company_inquiry/log/contact.csv なのですが
oyu

2019/08/28 05:46 編集

ファイル名ですがcontact.csvからlog.csvに変更しました。 エラーなのですがこちらになります。 Can't open /virtual/public_html/_demo/ikeno-derma/company_inquiry/log/log.csv! complete.phpにはこちらを表示しています。 //edit(ログファイル設定 DEFAULT_LOGはサーバに合わせること)logfile (DEFAULT_LOG is setting for server) // /var/www/vhosts/n-ado.com/httpdocs/_demo/ikeno-derma/company_inquiry/_path.php define("DEFAULT_LOG","/virtual/public_html/_demo/ikeno-derma/company_inquiry/log/log.csv"); $datalog.='氏名:'.$_POST['name'].''; $datalog.=","; $datalog.='フリガナ:'.$_POST['kana'].''; $datalog.=","; $datalog.='郵便番号:'.$_POST['postcode'].''; $datalog.=","; $datalog.='ご住所:'.$_POST['add2'].''; $datalog.=","; $datalog.='電話番号:'.$_POST['tel'].''; $datalog.=","; $datalog.='FAX番号:'.$_POST['fax'].''; $datalog.=","; $datalog.='メールアドレス:'.$_POST['email'].''; $datalog.=","; $datalog.='お問い合わせ内容:'.$_POST['message'].'';
m.ts10806

2019/08/28 05:46

Cant Openがcomplete.phpってなんででしょうね。 でも/httpdocs/_demo/ikeno-derma/company_inquiry/log/contact.csv のファイル名をlog.csvに変更しただけなら /httpdocs/_demo/ikeno-derma/company_inquiry/log/log.csv になるはずですが、なぜ /virtual/public_html/_demo/ikeno-derma/company_inquiry/log/log.csv を設定しているのでしょうか。 もう一度聞きます。 何が正しいですか?さっさと適当にやるのではなく、やる前に現状を正しく伝えてください。
oyu

2019/08/28 05:46

エラーなのですがこちらになります。 Can't open /virtual/public_html/_demo/ikeno-derma/company_inquiry/log/log.csv!
oyu

2019/08/28 05:48 編集

設定が間違えているのでしょうか?
m.ts10806

2019/08/28 05:50

何度も言ってますが単に「設定」と言われても私は赤の他人ですので あなたが何を意識して「設定」と言っているか分かりません。 要約せず省略せず、きちんと正しく伝えてください。既に感じているかもしれませんが、問題が間延びしすぎです。1個コメントするたびに何回も確認しなきゃいけません。
m.ts10806

2019/08/28 06:13 編集

それに別途コメント欄で問題になっていますが 「ikeno-derma」という実在するものだったりサポートのアドレスをそのまま書いていたり 非常にマズいことをやっているように思います。 セキュリティに触れませんか?あなたの一存で公開できるものですか? 今コードで起きている問題よりそちらを何より先に考えてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問