問合せフォ-ム
問合せフォ-ム後処理 PHP ファイル
XAMPP mysqli 用
quest_data_mail.php
XAMPP 5.6.19 版以降にあげる時はこちらのファイルを使用してください。
このファイルはレンタルサ-バ用ではありません。
これは、XAMPP 5.6.19 版以降で PEAR::MDB2_Driver_mysql がインスト-ルできず、
PEAR::MDB2_Driver_mysqli をインスト-ルしたときに使用します。
63 Pear Villageに戻る
<?php
session_start();
header(
'Content-type:text/html;charset=utf-8'
);
// この宣言がないと日本語表示が文字化け
if(empty($_SESSION['phrase'])){
//直接アクセスした時
header("Location: quest_st.php");
exit;
}
if(isset($_POST['check'])){
$_SESSION['check'] =
$_POST['check'];
}
if($_SESSION['phrase']
!= $_SESSION['check']){
header
("Location: quest_st.php");
exit;
}
require_once 'MDB2.php';
/*
$_SESSION デ-タはすでに form で、
htmlspecialchars 関数を適用され
「HTMLの特殊文字」をエスケープして
います。
このあと、prepare メソッドを実行し、
「SQLの特殊文字」をエスケープします。
*/
// データベース info 情報の設定
// $sqltype = 'mysql';
$sqltype = 'mysqli';
$user = 'root';
$server = 'localhost';
$password = '';
// 接続するデータベース名
$dbname = 'phplibs';
/*
レンタルサ-バを使用するときは
$user = '***';
$server = '***';
$password = '***';
$dbname = '****_phplibs';
の値は適宜変更してください。
*/
if(empty($_SESSION["addre"])){
$_SESSION["addre"] = " ";
}
$data = array
($_SESSION["uname"],
$_SESSION["email"],
$_SESSION["postnum"],
$_SESSION["addre"],
$_SESSION["come"]);
// プレ-スフォルダデ-タの
// タイプ配列設定
$types = array
('text', 'text', 'integer',
'text', 'text');
// データベースに接続
$mdb2 = MDB2::connect
($sqltype
.'://'.$user
.':'.$password
.'@'.$server.'/'
.$dbname
.'?charset=utf8');
// 接続チェック
if(MDB2::isError($mdb2))
die("接続に失敗しました");
// SQL文作成
$sql = "INSERT INTO info_q
(uname, email, postnum, addre, come)
VALUES(?, ?, ?, ?, ?)";
/*
テ-ブル名 info のカラム
uname,email,postnum,addre,come
に、
$_POST["uname"], $_POST["email"],
$_POST["postnum"], $_POST["addre"],
$_POST["come"]
を挿入予定
*/
// prepare メソッド実行
/*
$sth = $mdb2->prepare
($sql, $types, MDB2_PREPARE_MANIP);
*/
$sth = $mdb2->prepare($sql, $types);
if (MDB2::isError($sth)) die
("prepare エラ-: "
. $sth->getMessage());
$result = $sth->execute($data);
// $result = $mdb2->exec($sql);
// execメソッドを実施し、
// SQL文$sqlを実行します。
if (MDB2::isError($result)){
// エラーメッセージ出力
echo
"データを挿入できませんでした
<br>エラー:"
.$result->getMessage();
}else{
echo
"問合せ台帳に<br>"
.$_SESSION['uname'].
" さん<br>
のお問合せの内容を挿入しました<br>";
}
// データベース接続の解除
$mdb2->disconnect();
// info 登録 END --- mail 送信 START
mb_language('ja');
mb_internal_encoding("UTF-8");
/*
これがないと
mb_encode_mimeheader('この部分');
が文字化けする
*/
require_once 'Mail.php';
require_once 'Mail/mime.php';
// ここからxampp専用
$params=array(
'host' => 'smtp.gmail.com',
'port' => 587,
'auth' => TRUE,
'username' => '***********',
'password' => '*********');
/*
ここまでxampp専用
レンタルサ-バの時は、
$params['sendmail_path']
= '/usr/sbin/sendmail';
$params['sendmail_args']
= ''; //この行は必須
とする
【ポイント】
Bcc、もしくはCcを設定したい場合、
$headers['Bcc']とか$headers['Cc']
だけでは header に書かれるだけで、
実際にはメールは送信されない。
最後の方にある
$m->send($recip, $headers, $body);
で指定される
「$recip」にアドレスを入れることで正常に
送信される。
$recip =
"noge_to@nog.net, noge_bcc@nog.net";
Bccを *****@gmail.com とすると
*/
$recip =
"*****@gmail.com,".$_SESSION["email"];
$headers=array(
'From' =>
mb_encode_mimeheader('63Pearより'),
/*
'From' => mb_encode_mimeheader
('63Pearより')
'<info-1@63pear.devel.jp>',
'From' =>
'<info-1@63pear.dedel.jp>',
のように記載してもGmailアドレスになる。
*/
'To' => '<'.$_SESSION["email"].'>',
'Subject' =>
mb_encode_mimeheader(
'問合せ確認'));
$html_params=array(
'html_encoding'=>'base64',
'text_charset'=>'ISO-2022-JP',
'head_charset'=>'ISO-2022-JP',
'html_charset'=>'ISO-2022-JP');
$mime = new Mail_mime();
// HTMLパ-ト作成
$html = <<<HTML
<html>
<body background="foot_bg.gif">
<h3>【Webサイトからのメール】</h3>
このメ-ルは、Pear HTML_Mail を使用して
送信しています。
<p style =
"color:red; background:yellow">
送信には gmail を利用しました。
</p>
{$_SESSION['uname']} さん<br>
下記内容のお問合せを受領しました。<br><br>
{$_SESSION['come1']}<br><br>
<a href =
"http://move.devel.jp/index.php">
こちらもご覧ください。</a>
<br><br>
以上です。<br><br>
</body></html>
HTML;
$cont = mb_convert_encoding
($html,'ISO-2022-JP','auto');
$mime->setHTMLBody($cont);
$mime->addHTMLImage
('./img/foot_bg.gif');
$body = $mime->get($html_params);
$headers = $mime->headers($headers);
$m = Mail::factory('smtp', $params);
/*
レンタルサ-バの時は、
$m =
Mail::factory('sendmail', $params);
*/
$m->send($recip, $headers, $body);
if (PEAR::isError($m)) {
die($m->getMessage());
}
echo
'<br>問合せ受領メ-ルを送信しました<br>
時折、迷惑メ-ルフォルダに迷い込むケ-ス
があるようです<br>
ご確認ください
<br><br>';
session_destroy();
?>