日本語メール送信(PHP)
PHPのメール送信では「sendmail」を使うと、とっても簡単。
【サンプル】
mb_send_mail("$mailto","$subject","$content","$mailfrom");
mb_send_mail("送付先","タイトル","メール内容","送信元");
これだけでメールが送れるので、かなり重宝しています。
でも、CC・BCC・添付資料とかは?となるとそれなりに大変になってしまう。
ファイル添付が必要になり、簡単に添付できるものはないかと
探していて見つけたのが「PHPMailer 」というライブラリ。
これを使うと、メールのCC・BCC・添付までかなり簡単にできる。ので覚書。
●PHPMailer をダウンロード。※PHP4用、PHP5用とあるのでご注意。
●ダウンロードしたファイルを、解凍してサーバーに置く。
●あとは読み込んで下記のように設定。
【サンプル】
//ライブラリ読み込み
require("./phpmailer/class.phpmailer.php");
//言語設定、内部エンコーディングを指定する
mb_language("japanese");
mb_internal_encoding("EUC-JP");
//日本語添付メールを送る
$to = "to@web.com
"; //宛先
$subject = "タイトル・件名"; //題名
$body = "メール本文"; //本文
$from = "from@web.com
"; //差出人
$fromname = "差出人表示名"; //差し出し人名
$attachfile = "./file.zip"; //添付ファイルパス
$mail = new PHPMailer();
$mail->CharSet = "iso-2022-jp";
$mail->Encoding = "7bit";
$mail->AddAddress($to);
$mail->From = $from;
$mail->FromName = mb_encode_mimeheader(mb_convert_encoding($fromname,"JIS","EUC-JP"));
$mail->Subject = mb_encode_mimeheader(mb_convert_encoding($subject,"JIS","EUC-JP"));
$mail->Body = mb_convert_encoding($subject,"JIS","EUC-JP");
//添付ファイル追加
$mail->AddAttachment($attachfile); //添付ファイルがないならここはいらない。
if (!$mail->Send()){
echo("メールが送信できませんでした。エラー:".$mail->ErrorInfo);
}
なんて簡単なんでしょう?!
mysql.phpとadmin.ini(MySQL)
【mysql.phpコード】 これはこのまま書けばOK。「ini」設定ファイルのパスはそれぞれで。
<?php
////////////////////////////////////
//データベース接続
class MySQL{
//===========================
// 変数宣言
//===========================
var $m_Con;
var $m_HsotName="";
var $m_UserName="";
var $m_Password="";
var $m_DataBase="";
var $m_Row=0;
//===========================
// コンストラクタ
//===========================
function MySQL(){
$filename="絶対パス/admin.ini";
if(!file_exists($filename)){
die("no_file online 60");
}else{
$fp=fopen($filename,"r");
if(!$fp){
die("no_open_DATABASE online 64");
}else{
$this->m_HsotName=trim(fgets($fp));
$this->m_UserName=trim(fgets($fp));
$this->m_Password=trim(fgets($fp));
$this->m_DataBase=trim(fgets($fp));
}
fclose($fp);
}
// MySQLへの接続
$this->m_con=mysql_connect($this->m_HsotName,$this->m_UserName,$this->m_Password);
if(!$this->m_con){
die("no_open_DATABASE online 76");
}
// データベースの選択
if(!mysql_select_db($this->m_DataBase,$this->m_con)){
die("no_choice_DATABASE online 80 DB:{$this->m_DataBase}");
}
}
//===========================
// SQLクエリの処理
//===========================
function query($sql){
$this->m_Rows=mysql_query($sql,$this->m_con);
if(!$this->m_Rows){
die("ERROR!! online 89 <br><b>{$sql}</b><br>" .mysql_errno().":".mysql_error());
}
return $this->m_Rows;
}
//===========================
// 結果をFETCH
//===========================
function fetch(){
return mysql_fetch_array($this->m_Rows);
}
//===========================
// 変更された行の数を得る
//===========================
function affected_rows(){
return mysql_affected_rows();
}
//===========================
// 列数
//===========================
function cols(){
return mysql_num_fields($this->m_Rows);
}
//===========================
// 行数
//===========================
function rows(){
return mysql_num_rows($this->m_Rows);
}
//===========================
// 検索結果の開放
//===========================
function free(){
mysql_free_result($this->m_Rows);
}
//===========================
// MySQLをクローズ
//===========================
function close(){
mysql_close($this->m_con);
}
//===========================
// エラーメッセージ
//===========================
function errors(){
return mysql_errno().": ".mysql_error();
}
//===========================
// エラーナンバー
//===========================
function errorno(){
return mysql_errno();
}
}
?>
【admin.ini】 これはそれぞれ違うよ。
localhost //これはそのまま
ユーザー名
パスワード
DB名
「ini」にはこれだけ書いておく。
ループ処理(PHP)
for (初期値; 条件; 増分) {
break; // ループ脱出
continue; // 次のループへ
}
for ($i = 1; $i <= 10; $i++) {
$a[$i] = 2;
}
for ($i = 1, $j = 1; $i <= 10 and $j == 5; $i++, $j++) {
$a[$i] = ++$j;
}
for (;;) {
// 無限ループ
}
■while () ループ
while (条件) {
条件が真のときループ
break; // ループ脱出
continue; // 次のループへ
}
■foreach ループ (reset、while、each)
$d = array('abc', 'def', 'ghi');
reset($d);
while ($a = each($d)) {
print "<P>$a[0] - $a[1]</P>\n";
}
$d['key1'] = 'abc';
$d['key2'] = 'def';
$d['key3'] = 'ghi';
reset($d);
while ($a = each($d)) {
print "<P>$a[0] - $a[1]</P>\n";
}
■foreach ループ (PHP4)
$d = array('abc', 'def', 'ghi');
foreach ($d as $a) {
print "<P>$a</P>\n";
}
$d['key1'] = 'abc';
$d['key2'] = 'def';
$d['key3'] = 'ghi';
foreach ($d as $a => $b) {
print "<P>$a $b</P>\n";
}
■do () ループ
do {
break; // ループ脱出
continue; // 次のループへ
条件が真のときループ
} while (条件);
・ループが一度は必ず実行される。
■exit 脱出
exit; // PHP 脱出
return; // 関数脱出
日付・時間(PHP)
【現在時刻の取得】
//date関数を使う場合
date("Y-m-d H:i:s");
//strftime関数を使う場合
strftime("%Y-%m-%d %H:%M:%S");
【n日後、n日前の日付を求める】
/**
* 年月日と加算日からn日後、n日前を求める関数
* $year 年
* $month 月
* $day 日
* $addDays 加算日。マイナス指定でn日前も設定可能
*/
function computeDate($year, $month, $day, $addDays) {
$baseSec = mktime(0, 0, 0, $month, $day, $year);//基準日を秒で取得
$addSec = $addDays * 86400;//日数×1日の秒数
$targetSec = $baseSec + $addSec;
return date("Y-m-d H:i:s", $targetSec);
}
//2007年8月10日の30日後の日付を取得
//2007-09-09が表示されます
$dt = computeDate(2007, 8, 10, 30);
print("2007-08-10 + 30days = {$dt}<br />\r\n");
//2007年8月10日の2週間前の日付を取得
//2007-07-27が表示されます
$dt = computeDate(2007, 8, 10, -14);
print("2007-08-10 - 14days = {$dt}<br />\r\n");
【日付の比較を行う】
//2007-08-10と2007-07-31を比較します
//処理Aが実行されます
if(mktime(0, 0, 0, 8, 10, 2007) > mktime(0, 0, 0, 7, 31, 2007)) {
//処理A
} else {
//処理B
}
【2つの日付の差(何日間あるか)を求める】
/**
* 2つの日付の差を求める関数
* $year1 1つのめ日付の年
* $month1 1つめの日付の月
* $day1 1つめの日付の日
* $year2 2つのめ日付の年
* $month2 2つめの日付の月
* $day2 2つめの日付の日
*/
function compareDate($year1, $month1, $day1, $year2, $month2, $day2) {
$dt1 = mktime(0, 0, 0, $month1, $day1, $year1);
$dt2 = mktime(0, 0, 0, $month2, $day2, $year2);
$diff = $dt1 - $dt2;
$diffDay = $diff / 86400;//1日は86400秒
return $diffDay;
}
//2007年8月9日と2007年7月9日の差を求める
//31が表示されます
$days = compareDate(2007, 8, 9, 2007, 7, 9);
print("2007-08-09 - 2007-07-09 = {$days} days<br />\r\n");
//2007年1月10日と2006年10月10日の差を求める
//92が表示されます
$days = compareDate(2007, 1, 10, 2006, 10, 10);
print("2007-01-10 - 2006-10-10 = {$days} days<br />\r\n");
【任意の日付の曜日を取得】
//2007年8月10日の曜日を表示
//金曜日が表示されます
$week = array("日", "月", "火", "水", "木", "金", "土");
$dayOfWeek = date("w", mktime(0, 0, 0, 8, 10, 2007));
print("曜日={$week[$dayOfWeek]}<br />\r\n");
数値関数(PHP)
【数値関数】
srand 乱数初期化
rand 乱数発生
floor 切り捨て整数化
ceil 切り上げ整数化
round 四捨五入
sqrt 平方根
number_format 数値カンマ表記
【srand (乱数初期化)】
srand(time);
** 現在時間で乱数ジェネレータを初期化する。
【rand (乱数発生)】
$i = rand(0, 99);
** $i には、0 ~ 99 の乱数がセットされる。
【floor (切り捨て整数化)】
$i = floor(1.9);
** $i には、1 がセットされる。
【round (四捨五入)】
$i = round(1.526[, 2]);
** $i には、1.53 がセットされる。
$i = round(1.5);
** $i には、2 がセットされる。
$i = round(1.123, 2);
** $i には、1.12 がセットされる。
【sqrt (平方根)】
$i = sqrt(2);
** $i には、1.14... がセットされる。
【number_format (数値カンマ表記)】
$ss=number_format(10000);
** $ss には、10,000 がセットされる。