PHP 関数の前に@ をつける
関数の前に@をつけて実行すると、エラーが出力されなくなります。
//例 $sample = @mysql_query($query);
バージョン 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で、サンプルが表示されればできています!
使う時には、この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);
バージョン 5.9.179
横向きの画面を出力したいとなると、HTMLでやるのは頭をひねるところですよね。
PDFにしちゃった方が簡単です。
TCPDFやインストール方法については、
PHPからPDFを出力する
を見てみてください。
TCPDFの横向き設定は、TCPDFのコンフィグファイルの中でできます。
下記の部分を書き変えましょう。
//119行目あたり Pが縦で、Lが横 define ('PDF_PAGE_ORIENTATION', 'P'); ↓ define ('PDF_PAGE_ORIENTATION', 'L');
PHPが動作するはずのサーバーをレンタルしたのに、PHPのファイルにブラウザからアクセスするとブラウザにPHPスクリプトが表示されたり、PHPファイルを「ダウンロード」するようになってしまう。
デフォルトで、PHPを実行しないようになっているトリッキーなサーバーもあります。
KDDIのCPIというサーバーなんかそうですね。
KDDIのCPIの場合は、下記の手順でやってみてください。
http://z.document.secure.ne.jp/tools/php/php.php
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/
有難うございます!!