投稿者「後藤 祐一」のアーカイブ

後藤 祐一 について

フリーランスとしてWebプログラミングを行っています。 宜しくお願いします。

CakePHP2.x CakeEmailでメール送信

ここではCakePHP2.xでCakeEmailを使いメールの送信をします。

cakephp

email.phpの設定

/app/Config/email.php

<?php

    class EmailConfig {
   
        public $default = array(
                'transport' => 'Mail',
                'from' => 'info@example.com',
                'emailFormat' => 'text',
        );
    }

text形式で送信する単純な設定ファイルです。

Layoutファイル作成

/app/View/Layouts/Emails/text/layout.ctp

ヘッダ文章
   
<?php echo $content_for_layout; ?>
   
フッダ文章

Layout内でのView読み込みはいつもどおり$content_for_layoutで読み込めます。

Viewファイル作成

/app/View/Emails/text/tmp.ctp

●お名前:<?php echo $name; ?> 様
●フリガナ:<?php echo $furigana; ?> 様

この例では「様」があるので自動的に改行されますが、行の最後に変数が来る場合は自動的に改行されません。

●お名前:<?php echo $name . "\n"; ?>
●フリガナ:<?php echo $furigana . "\n"; ?>

このように改行を入れてください。
※シングルクォーテーションでは改行されません、ダブルクォーテーションを使用してください。

コントローラー内の記述

読み込み

App::uses('CakeEmail', 'Network/Email');

送信

// /app/Config/email.phpの設定読み込み
$email = new CakeEmail('default');
  
// テンプレートに渡す変数
$arrVal = array (
        'name' => '名前',
        'furigana' => 'フリガナ',
);
  
// 送信
$email->template('tmp', 'layout')
      ->viewVars($arrVal)
      ->to('to@example.com')
      ->subject('件名')
      ->send();

解説

$email->template(‘tmp’, ‘layout’); (11行目)
第一引数に読み込むViewファイル、第二引数に読み込むLayoutファイルを指定します。

$email->viewVars($arrVal); (12行目)
Viewファイルに変数を設定します。

$email->to(‘to@example.com’); (13行目)
メールを送信する宛先です。

$email->subject(‘件名’); (14行目)
件名の設定です。

$email->send(); (15行目)
メールの送信です。

最後にCakePHP2.x CakeEmailの公式ドキュメントです。
http://book.cakephp.org/2.0/en/core-utility-libraries/email.html

PHPExcelでExcel出力

ここではPHPExcelを使ってExcelファイルを出力していきます。

phpexcel

PHPExcelをダウンロード
http://phpexcel.codeplex.com/

サンプルソース

<?php

    require_once 'PHPExcel.php';
    require_once 'PHPExcel/Writer/Excel5.php';
    require_once 'PHPExcel/IOFactory.php';
   
    $ex = new PHPExcel();
    $sheet = $ex->getActiveSheet();
   
    // Excelファイル読み込み Excel5
    // $reader = PHPExcel_IOFactory::createReader('Excel5');
    // $ex = $reader->load("include.xls");
    // $sheet = $ex->getActiveSheet();
   
    // Excelファイル読み込み Excel2007
    // $reader = PHPExcel_IOFactory::createReader('Excel2007');
    // $ex = $reader->load("include.xls");
    // $sheet = $ex->getActiveSheet();
   
    // シートタイトル設定
    $sheet->setTitle('シート1');
    // フォント設定
    $sheet->getDefaultStyle()->getFont()->setName('MS ゴシック');
    // フォントサイズ設定
    $sheet->getDefaultStyle()->getFont()->setSize(11);
   
    // 書き込み
    $sheet->setCellValue('A1', 'A1に書き込み');
    $sheet->setCellValueByColumnAndRow(1, 2, 'B2に書き込み');
   
    // C1をセンター揃え
    $sheet->setCellValue('C1', 'C');
    $sheet->getStyle('C1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
   
    // 背景色
    $sheet->getStyleByColumnAndRow(0, 2)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
    $sheet->getStyleByColumnAndRow(0, 2)->getFill()->getStartColor()->setRGB('000000');
   
    // 文字色 A1
    $sheet->getStyleByColumnAndRow(0, 1)->getFont()->getColor()->setRGB('00ffff');
   
    // 罫線
    $line = array(
            'borders' => array(
                    'top'     => array('style' => PHPExcel_Style_Border::BORDER_THIN),
                    'bottom'  => array('style' => PHPExcel_Style_Border::BORDER_THIN),
                    'left'    => array('style' => PHPExcel_Style_Border::BORDER_THIN),
                    'right'   => array('style' => PHPExcel_Style_Border::BORDER_THIN)
            )
    );
    $sheet->getStyle('D1')->applyFromArray($line);
    $sheet->getStyleByColumnAndRow(4, 1)->applyFromArray($line);
   
    // Excel 2007 形式で保存
    // $writer = PHPExcel_IOFactory::createWriter($ex, 'Excel2007');
    // $writer->save("output.xlsx");
   
    // Excel 2003 以前の形式で保存
    $writer = new PHPExcel_Writer_Excel5($ex);
    $writer->save('output.xls');
   
    // ファイルをダウンロード
    $file = 'output.xls';
    $fileSize = filesize($file);
    header ("Content-Disposition: attachment; filename={$file}");
    header ("Content-Length:{$fileSize}");
    header ("Content-Type: application/octet-stream");
    readfile($file);

解説

$sheet->setTitle(‘シート1’); (21行目)
シートのタイトルを設定します。

$sheet->getDefaultStyle()->getFont()->setName(‘MS ゴシック’); (23行目)
フォントの指定をします。

$sheet->getDefaultStyle()->getFont()->setSize(11); (25行目)
フォントのサイズを設定します。

$sheet->setCellValue(‘A1’, ‘A1に書き込み’); (28、29行目)
A1を指定してExcelに書き込みます。
数値で書き込む場合、列は0から始まるのに対して、行は1から始まるので注意が必要です。

->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); (33行目)
センター揃えを指定しています。

->getFill()->getStartColor()->setRGB(‘000000’); (37行目)
背景色を指定しています。
setFillType(PHPExcel_Style_Fill::FILL_SOLID);(36行目)がないと色がつきませんでした。

->getFont()->getColor()->setRGB(’00ffff’); (40行目)
文字色を指定しています。

->applyFromArray($line); (51、52行目)
連想配列で指定できるので、例では連想配列を指定しています。

テンプレートの読み込みや保存はご利用のExcelのバージョンに合わせてご使用ください。

setHorizontal();の定数一覧

中央揃え PHPExcel_Style_Alignment::HORIZONTAL_CENTER
左揃え PHPExcel_Style_Alignment::HORIZONTAL_LEFT
右揃え PHPExcel_Style_Alignment::HORIZONTAL_RIGHT

上詰め PHPExcel_Style_Alignment::VERTICAL_TOP
中央揃え PHPExcel_Style_Alignment::VERTICAL_CENTER
下詰め PHPExcel_Style_Alignment::VERTICAL_BOTTOM

Ubuntu VPS ファイアーウォールの設定

ここではUbuntuをVPSサーバーでファイアーウォールを設定する方法について解説をしています。

ufwのインストール

$ sudo apt-get install ufw

ufwの確認

$ sudo ufw status

最初に全てのアクセスを拒否

$ sudo ufw default deny

20000番のポートを空ける

$ sudo ufw allow 20000

22番のポートを閉じる

$ sudo ufw deny 22

確認したら最後にufw有効にする

$ sudo ufw enable

Ubuntu VPS SSH インストールから編集まで

ここではUbuntuをVPSサーバーでSSHの編集までの解説をしています。

SSH インストール

$ sudo apt-get install openssh-server

SSHの設定ファイルの場所は/etc/ssh/sshd_configになります。

SSH リスタート

$ sudo /etc/init.d/ssh restart

設定ファイルの編集をしたら必ずSSHサーバーを再起動します。

SSHの設定ファイルの編集

$ sudo nano /etc/ssh/sshd_config

好きなエディタで編集してください。

sshd_configファイルの変更点
#デフォルト22から好きなポート番号に変更
Port 22102
#root ログインの禁止
PermitRootLogin no
#パスワード認証の許可
PasswordAuthentication yes

編集後SSHのリスタートをしてください。

PHP PHPからJavascriptに配列変数を渡す

ここではPHPからJavascriptに配列変数を渡す方法を解説しています。

PHPで配列を文字列に整形

<?php

    $arrBar = array(1,2,3);
    $arrBar = implode(',', $arrBar);

「implode」を使い、配列を「,」カンマ区切りの文字列に整形します。

Javascriptに変数を渡す

<script type="text/javascript">
    var jsBar = '<?php echo $arrBar; ?>';
</script>

PHP側で「,」カンマ区切りの文字列に整形した変数をJavascriptに渡します。

Javascriptで文字列から配列へ整形

<script type="text/javascript">
    var bar = jsBar.split(',');
</script>

「split」を使い、受け取った変数を文字列から配列に整形し直します。

これで配列変数の受け渡しができます。

関連記事
PHP PHPからJavascriptに変数を渡す