PHPで出力しかしない処理を記述する場合の短縮(?)ソース

PHP

出力処理コード短縮

PHPで出力処理を書く場合

 <?php echo 'hoge'; ?>

としますが、短縮できます。

 <?='hoge' ?>

また、何かの判断をひとつ入れた後の出力も以下のように書けばOK。

 <?=($num == 1) ? 'numは1です' : '1じゃない' ?>

この書き方は1行で終わる処理の場合、有効です。
ちなみに以下の書き方はエラーになります。

 <?= if($num == 1){ echo 'numは1です'; } else { echo '1じゃない'; } ?>

■■■ 動作はcakePHP1.3で確認しています。 ■■■

PHPでHTMLメールを送信する サンプルコードあり

PHP

PHPでHTMLメールを送信する サンプルコードあり

PHPでメールを送信するには、mb_send_mailとか便利な関数がありますが、HTMLメールを送りたい!という時には、若干面倒です。

そこに、HTMLのメールや、添付ファイル有りのメールもさくっと送信できる、PHPMailerという便利なライブラリがありましたので、紹介します。

下記のGithubから、PHPMailerをダウンロードします。

https://github.com/PHPMailer/PHPMailer
Githubをインストールしていない場合は、右下あたりのDownload Zipをクリックします。

解凍して、class.phpmailer.phpが必要なので、読み込みましょう。
皆さんの環境に合わせて、読み込みの場所を変更してくださいね。

 require("PHPMailer/class.phpmailer.php");

そのあと、次のように書きます。

 <?php
 //言語設定、内部エンコーディングを指定する
 require("PHPMailer/class.phpmailer.php");
 mb_language("japanese");
 mb_internal_encoding("UTF-8");
 
 $to = "hoge@onlineconsultant.jp"; //宛先
 $subject = "メールのタイトル"; //題名
 $user_name = "勇者hogehoge"; //HTMLメールの中で使うユーザーの名前
 $body_html = <<<EOD
    <div align="center" 
    style="background-color: #fdf7e7;
    background-repeat: repeat-x;
    color: #996600;
    text-align:center;">
    <img src="http://hogehoge.net/images/logo-mini.png" width="320" height="87" alt="ロゴだよん" >
     <p>$user_name様</p>
     <h1 style="font-size:larger; font-size:30px;font-weight:bold;color:#996600;">死んでしまうとはなにごとだ</h1>
 
      <p style="color:#996600;">もう一度がんばってね</p>
      
    </div>
    <hr>
  </div>
   
 EOD;
 
 $fromname = '王様'; //メールの送信者名
 $from = 'king@onlineconsultant.jp'; //メールのFromアドレス
 
 $mail = new PHPMailer();
 $mail->CharSet = "iso-2022-jp";
 $mail->Encoding = "7bit";
 $mail->AddAddress($to);
 $mail->AddBCC('secret@onlineconsultant.jp', 'Admin'); //BCCがつけれます
 $mail->From = $from;
 $mail->FromName = mb_encode_mimeheader(mb_convert_encoding($fromname,"JIS","UTF-8"));
 $mail->Subject =  mb_encode_mimeheader(mb_convert_encoding($subject,"JIS","UTF-8"));
 
 $mail->Body = mb_convert_encoding($body_html,"JIS","UTF-8");
 
 //HTMLメールが受信できない場合 
 $message_content = "おお勇者よ HTMLメールが受信できないとは情けない";
 
 $mail->AltBody = mb_convert_encoding($message_content,"JIS","UTF-8");;
 
 if (!$mail->Send()){
    	echo("メールが送信できませんでした。エラー:".$mail->ErrorInfo);
     }
 }
 ?>

ところで、PHPMailerの本家サイトは下記ですが
http://phpmailer.worxware.com/
どうやらAndy Prevostという方が糖尿病になってしまって 大変なので、寄付をしてくれ!ということが書いてあります。
Andy Prevostさんは、PHPMailerのもともとの作者なのでしょうか?
いくつかオープンソースの人気プロジェクトを手掛けたと書いてありますが…。
現在はMarcus BointonさんがPHPMailerを作っているようです。
https://github.com/Synchro
ぜひ、みなさん寄付をしてあげてください。

なお、下記のサイトさんも参考にさせて頂きました。
http://plus.vc/web/4271/
有難うございます!!

PHPが実行されない PHPファイルがダウンロードされてしまう

Webサイト作成 トラブル

PHPが実行されない、PHPファイルがダウンロードされてしまう

PHPが動作するはずのサーバーをレンタルしたのに、PHPのファイルにブラウザからアクセスするとブラウザにPHPスクリプトが表示されたり、PHPファイルを「ダウンロード」するようになってしまう。

デフォルトで、PHPを実行しないようになっているトリッキーなサーバーもあります。

KDDIのCPIというサーバーなんかそうですね。
KDDIのCPIの場合は、下記の手順でやってみてください。
http://z.document.secure.ne.jp/tools/php/php.php

PHPからTCPDFを利用して横向きのPDFを出力する

PHP

PHPからTCPDFを利用して横向きのPDFを出力する

バージョン 5.9.179

横向きの画面を出力したいとなると、HTMLでやるのは頭をひねるところですよね。
PDFにしちゃった方が簡単です。

TCPDFやインストール方法については、
PHPからPDFを出力する
を見てみてください。

TCPDFの横向き設定は、TCPDFのコンフィグファイルの中でできます。
下記の部分を書き変えましょう。

 //119行目あたり Pが縦で、Lが横
 define ('PDF_PAGE_ORIENTATION', 'P');
 ↓
 define ('PDF_PAGE_ORIENTATION', 'L');

PHPからPDFを出力する

PHP

PHPからPDFを出力する

バージョン 5.9.179

サーバーにPDFライブラリをインストールして、パスを通して、とか面倒なことしないといけないのかなー
と思ってましたら、意外と簡単にできます。

TCPDFというライブラリを利用します。
下記から最新バージョンをダウンロードしましょう。

http://sourceforge.net/projects/tcpdf/files/

インストール方法は、ダウンロードしたファイルを展開して、できたtcpdfフォルダ(ディレクトリ)をWebサーバーのルートにおく。
Apacheがアクセスできるように、おいたファイルの権限のオーナーをApacheにし、すべてのファイル、ディレクトリを644にします。
これで終わりです。

要は、SmartyみたいにPHPから都度読み込むライブラリなので、ファイルをおくだけでOKなんですね。メンテナンスも楽です。

正しく動作しているかどうかは、examples/example_001.php などをWebサーバーから開いてみると、わかります。
PDFで、サンプルが表示されればできています![smile]

使う時には、このtcpdfフォルダ内のtcpdf.phpを読み込めばOKです。

 require_once('tcpdf/tcpdf.php');
 $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, 
               PDF_PAGE_FORMAT, true, 'UTF-8', false);
 //あとは、$pdf-> から色々と利用できます。

レンタルサーバーでも使えますね。

HTMLで書けるので、これが非常に便利です!

さて、デフォルトのコンフィグだと、日本語が表示されず??となってしまいます。
これはフォントが日本語フォントが指定されていないからですね。
??とならず、あわてず、コンフィグファイルを書き変えましょう。
日本語フォントがちゃんと用意されています。ありがたいことですね!

/tcpdf/config/tcpdf_config.php

189行目辺り

 define ('PDF_FONT_NAME_MAIN', 'Helvetica');
 ↓
 define ('PDF_FONT_NAME_MAIN', 'kozminproregular');

199行目辺り

 define ('PDF_FONT_NAME_DATA', 'Helvetica');
 ↓
 define ('PDF_FONT_NAME_DATA', 'kozminproregular');

各ファイルの中で変更する場合は、次のようにします。

 $pdf->SetFont('kozminproregular', '', 14, '', true);