PHPを学ぼう!

▼PHPを学ぶチャプターです。


安心サポートのGOG!

 

素材メニュー

 ◆Chapter 1

 ◆Chapter 2

 ◆Chapter 3

 ◆Chapter 4

 

制作ヒント

 ◆制作のヒント

 

レッスンメニュー

 ◆Chapter2 練習問題

 ◆Chapter3 DB練習問題

 

サイト運営者がPHPを学んだ
お勧めの書籍です!
これ一冊で基本的なPHPの仕組み、簡単なプログラムの作成、SQLiteを使ったデータベースなどかなり学べる要素が詰まっています!

↓↓↓ ↓↓↓

PHPレッスンブック―PHP5対応

新品価格
¥2,520から
(2013/2/24 04:38時点)

 

 

サイバーテロの技法について書かれた書籍です!
ハッカーの手法を知ることでご自身のサイトがハッカーに攻撃されたときそれを防ぐ手法を紹介しています。

↓↓↓ ↓↓↓

PHPサイバーテロの技法―攻撃と防御の実際

新品価格
¥1,890から
(2013/11/5 10:09時点)

 

 

★初年度100円! サブドメインやメールアカウントを無制限に設置できます。
PHPやCGIは勿論、WordPress、Movable Type Open Source、掲示板、ブログ、ショッピングサイトなどが簡単に導入できるので複数サイトを運営したい場合に便利なサービスです。

↓↓↓ ↓↓↓

 

PHPが動作するサーバー

 

はじめてのHP | 無料素材 | タグ辞典 | CSSガイドEX | PHPを学ぼう!

◆Chapter 4 - メールマガジンのプログラムを作る

リストに登録されているメールアドレスに一斉にメール送信をするプログラムを作成してみます。
一般的にメールマガジン(メルマガ)といわれるもので、ご自身で登録したことが一度はあるでしょう。
ゲームサイトを利用するとよく勝手に送られてくることがありますね・・・。

 

ここで作成するプログラムは、CSV に登録されたリストを読み込み送信するというとてもシンプルなもので次の機能は割愛しています。
大量のメール送信には向いていません。

  • メールアドレスの登録・削除
  • 時間・曜日の指定
  • 分割送信

 

大まかなプログラムの流れは次の通りです。

  • CSVファイルの読み込み
  • メールマガジンの送信

 

メールアドレスの登録・削除は、『 CSV対応のログファイルを作る 1 』を参照に入力フォームでアドレスの追加・削除できるようにすれば、CSV ファイルで管理することも可能になります。
個人的には、SQLite などのデータベースで運用された方が登録、修正、削除、検索が便利に使えると思います。

 

時間・曜日指定であるファイルを動作させるには cron(クーロン) を利用します。
cron は、crontab とも言われジョブ(スクリプト)の自動実行をサーバー側で設定できる機能なのです。
例えば毎週金曜日の 5 時、毎月 1 日の 10 時などの設定ができます。
サーバーは常に時間を管理しているわけですから指定時間になればファイルを実行させるのは容易なわけですね。
運営されているサイトが比較的、アクセスが多いのなら cron を使わなくともページに仕込んでおけば時間指定の動作は可能です。
ちなみフリーのレンタルサーバーでは cron が使えないことが多く、有料の場合でも使えないことがあります。

 

分割送信とは大量メールを分割して送信することです。
PHP のページの実行時間はデフォルトで 30 秒とされてます。 大量にメールを送信するとなると、30 秒で収まらないこともあり処理を中断することになります。 その為、処理を分割するなどの対応が必要になります。
また大量のメールを一斉に送信するとスパムと判断されることがあります。 分割送信をさせることはスパムと判断されないようにする為の対応でもあり、サーバー負荷の軽減でもあります。
レンタルサーバーによっては 1 日のデータ送信量、トラフィック制御などが制限されていることがありますので注意しましょう。
ちなみに携帯キャリアでは規定数以上のメールが一度に送られてくるとスパムとされてしまいます。 規定数は公開されていませんが、1 秒に 1 通とすると問題はないようです。
スクリプトの実行可能な時間を変更するには、『 Tip10 - タイムアウトを延長する 』を参照ください。

 

サンプルプログラムを用意しました。
こちらのプログラムに沿って説明していきます。

【Mailmagazine.php】

01|<?php
02|  # 日本語が読み込まれない場合に記述
03|  setlocale(LC_ALL,'ja_JP.UTF-8');
04|
05|  # 内部環境設定
06|  mb_language("ja");
07|  mb_internal_encoding("UTF-8");
08|
09|  #送信内容の設定
10|  $from = "xxxxxxx@yourdomain.net";
11|  $title = "メルマガテスト";
12|  $header = "From: {$from}";
13|
14|  # リストの読み込み
15|  $file = "list.csv";
16|  $data = file_get_contents($file);
17|
18|  # 文字コードを変換する
19|  $data = mb_convert_encoding($data,'UTF-8','sjis-win');
20|
22|  # 一時ファイルを作成して文字コードを変換したデータを書き込む。
23|  $temp = tmpfile();
24|  $csv = array();
25|
26|  fwrite($temp,$data);
27|  rewind($temp);
28|
29|  # 一時ファイルのデータを再度CSVとして読み込む
30|  while(($data=fgetcsv($temp,0,",")) !== false){
31|    $csv[] = $data;
32|  }
33|  fclose($temp);
34|
35|  # 送信処理
36|  for($i=0; $i<count($csv); $i++){
37|    $to = $csv[$i][1];
38|    $name = $csv[$i][0];
39|    $body = <<<EOM
40|こんにちは、{$name}さん。
41|
42|いつも○○ショッピングをご利用ありがとうございます。
43|最新ニュースをお届けします。
44|
45|**********
46|**********
47|**********
48|*****
49|EOM;
50|    mb_send_mail($to, $title, $body, $header);
51|  }
52|?>

 

3行目の setlocale 関数は、CSV ファイルに日本語などマルチバイト文字が含まれる場合に fgetcsv() 関数で配列に入れるとき、日本語の文字が消えるまたは一部消えることがあるために記述します。 これは PHP5~起こる現象で PHP4 以下では必要のない記述です。
文字コード変換( SJIS ⇒ UTF-8 )が必要なければ記述も必要ないでしょう。 Windows サーバでは PHP5 でも発生しないことがあるようです。
fgetcsv() 関数の文字コードの指定は、mb_language("ja") や mb_internal_encoding("UTF-8") ではできません。

 

6~7行は3行目で setlocale 関数を設定しているので必要ないのかと思うのですが文字化けを起こしてしまうので設定しています。 ご利用の環境で表示に問題があれば調整してみてください。

 

10行目は送信に必要なメールアドレスを設定します。ドメインと違うアドレスを設定するとエラーになります。
11行目では、$title にメールのタイトルを設定します。

 

15行目では送信情報となる CSV ファイルを指定します。
16行目でそのファイルを file_get_contents 関数で $data の変数に格納しています。

 

19行目では $data に格納されたものを文字コード変換しています。

 

23~27行、30~33行は一度、CSV ファイルを読み込み一時ファイルとして CSV ファイルを作成しています。
SJIS のCSV ファイルを UTF-8 の PHP ファイルで扱うには、この処理をしないと上手く読み込めないようです・・・。
31行目では $CSV に一時ファイルのデータを配列として格納しています。

 

36~52行はメルマガを配信する為の処理です。
37行目の $to にはリストに対応したアドレスを代入しています。
38行目の $name には名前を代入しています。

 

39~49行はヒアドキュメントでメールマガジンの内容を記述しています。
改行などはそのままメール内容に反映されますので体裁を整えて設定してください。

 

50行の mb_send_mail 関数でリストにあるアドレス宛に送信を繰り返しています。 送信テストをする場合には複数のメールアドレスを用意してお試しください。

 

Mailmagazine.php のファイルを読み込むと一連の処理が実行されます。
単純にメール送信をするプログラムですが、CSVファイルの読み込み(ロード)についての対応が学べるのでプログラムでもあります。
一度、チャレンジしてみてください。

 

 

一括ダウンロード

 

 

 

 

 

 

 

 

 

 

 

 

ex-mode.net | ツールEX | 素材EX | アフィモール | 初級者向 初めてのホームページ作り | Htmlタグ辞典 | 初めてのプランター菜園 | リンク・ボード
気のみ気のままなブログ | CSSガイドEX | ホビ★コレ | 班長日記!

▲UP

Copyright (C) ex-mode.net 2017. All Rights Reserved.