メールリスト
1 つ目は、データベース テーブルにレコードを追加または削除するジョブを実行するサブスクライブ/サブスクライブ解除スクリプトです。これを「manage.phtml」または
類似の名前にします。この場合、バックグラウンドは、サブスクリプション テーブルを作成できる、ある種のデータベースである必要があります。政治における半分の原則によれば、
そこで、この例ではデータベースとして MySQL を使用します。 PHP マニュアルに従って、適切な
データベース関連関数を置き換えるだけで、一般的に使用するデータベースを使用できます。
私の購読フォームでは、電子メール アドレス (email_addr) と追加日 (date_added) の 2 つのフィールドを使用します。必要に応じてフィールドを追加することも、date_added フィールドを削除することもできます。この例では、私が行ったことを示しているだけであり、
適切に変更することができます。私の購読テーブルでは、email_addr フィールドは一意のフィールドです。つまり、それとまったく同じ別の電子メール
アドレスを追加することはできません。これにより、サブスクリプションの重複が回避され、ユーザーがサブスクリプションを解除したい場合にレコードを簡単かつ確実に削除できるようになります。
それでは、購読/購読解除フォーム (manager.phtml または思いつく名前なら何でも) を作成しましょう。同じファイルを使用して購読と購読解除、およびフォーム自体のアクションを処理するため、少し複雑になる可能性があります。最初から最後まで説明してから、すべての部分を 1 つのフォームにまとめます
。
スクリプトの先頭で、データベースが開かれ、タイムスタンプが準備されます。こういった目立たないものに気を配ることで、最初はいつも少し
ストレスが軽減されます。
------------------------------------------------ --------------------------------
// データベースに接続します
$db = mysql_connect("servername", "ユーザー名" , "パスワード") または die ("接続できません。");
mysql_select_db("yourDB", $db) または die ("データベースを選択できません。");
// タイムスタンプを取得します
$add_date = date ( "Y-m-d");-------------------------------------------- ---- ----------------------------------
$op の値が "ds" であることを望みます。これは複雑なプログラムの略語ではなく、「何かをする」という意味で作成しました。したがって、
スクリプトが最初に行うことは、$op の値が「ds」と等しいかどうかを確認することです。この値は、フォームが送信されたときにのみ送信されます。したがって、
$op の値が「ds」でない場合は、ユーザーがフォームを見ていないことを意味するため、フォームを表示する必要があります:
---------------- ---------- -------------------------------------- ---------- ----------
if ($op != "ds") {
//購読/購読解除が必要です
$text_block = "
< ;form name="form" method=post action="$PHP_SELF">
あなたの電子メール アドレス:< /strong>
;input type=submit name="submit" value="do it"> ご登録いただきありがとうございます! あなたはすでに登録しています! リスト内に電子メール アドレスが見つかりません! You It入力した電子メールはデータベースにないため、登録解除されていません。 "; 購読を解除しました! < ;/p> ご登録いただきありがとうございます。 パスをサブスクライブしました! あなたの電子メール アドレスがリストに見つかりません。 入力した電子メールはデータベースに登録されていないため、購読が解除されていません。 "; 購読解除が成功しました。
";
}-------------- ---------- -------------------------------------- ---------- ------
$text_block 変数にテキストを入れていることに気づくでしょう。テキストを変数に入れることで、メインの HTML テンプレート内の
の後に $text_block の値を出力するだけです。これは個人の好みの問題であり、いつでも好きな方法でテキストを出力できます。
このフォームのアクションは$PHP_SELFで、送信ボタンが押されたときにリロードされる
という意味だと想像できます。次に、このフォームには 3 つのフィールドがあることがわかります: $op に "ds" の値を割り当てる隠しフィールド、ユーザーが自分のメール アドレスを入力する
"email" というテキスト フィールドもあります。 「アクション」と呼ばれる一連のラジオ ボタン。これに従って、ユーザーは実行するアクション (購読または購読解除) を決定できます。
フォームが送信されると、$op は "ds" に等しくなり、$action の値には "sub" または "unsub" が含まれます。それでは、上記の
の if... ステートメントを見てみましょう。送信されるとスキップされます ($op=="ds" のため)。 $op の値が "ds" で、$action の値が "sub" (サブスクリプション) の場合、
次の else if... ステートメントが実行されます。このコードは、電子メールがサブスクリプション テーブルに既に存在するかどうかを確認し、存在しない場合はテーブル
に挿入して応答を出力し、そうでない場合は無視します。
------------------------------------------------ --------------------------------
else if (($op == "ds") && ($action = = "sub")) {
// チェックメールが送信されていない場合は送信し、そうでない場合は情報を返します
$check = "購読者から email_addr を選択します
where email_addr = "$email""
$check_result = mysql_query( $check)
または die("ローカル電子メール アドレスのチェックを実行できません。");
$check_num = mysql_num_rows($check_result);
if ($check_num == 0) {
// if $ check_num が 0 の場合、一致するレコードが見つからないため、ユーザーを送信する必要があります
$sql = "購読者に挿入
value("$email", "$add_date")";
@mysql_query($sql); または die ( "メールを挿入できませんでした。");
$text_block = "
} else {
// $check_num が 0 でない場合、その場合、ユーザーがすでに送信済みであることを通知する必要があります
$text_block = "
";
}
}------ - ------------------------------------------------- - ----------------------
次のステップ: $action の値が "sub" ではなく "unsub" (購読解除、購読解除) の場合に行うべきこと何か。上記と同じように簡単です
次に、else if... ステートメントを展開し、電子メールが削除される前にサブスクリプション テーブル
に存在するかどうかを確認する追加のコードを追加します。存在する場合は、削除して印刷します。それ以外の場合は無視します。
------------------------------------------------ --------------------------------
else if (($op == "ds") && ($action = = "unsub")) {
// 購読しているユーザーを確認し、購読を解除します。そうでない場合は情報を返します
$check = "購読者から email_addr を選択します
where email_addr = "$email""; mysql_query($check)
or die("メールアドレスのチェックを実行できません。");
$check_num = mysql_num_rows($check_result);
if ($check_num == 0) {
// if If $check_num は 0、一致するレコードが見つからないため、ユーザーは登録解除できません
$text_block = "
} else {
// $check_num が 0 でない場合、ユーザーはリストに含まれているため、登録を解除できます
$ sql = "購読者から削除します
where email_addr = "$email"";
@mysql_query($sql) または die ("メールを削除できません。");
";
}
}
?>-------------------------------- - ----------------------------------------
さて、頑張ってくださいこれは完了し、HTML のブロックに $text_block 変数を出力するだけです:
------------------------- ----- -------------------------------------- ---
< ;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
購読/購読解除
-- -------------------------------------- ----- ----------------------------------
完全なプログラムリストはこちらです:
--- --- ---------------------------------------------- --- -----------------------
// データベースに接続します
$db = mysql_connect("servername", "username" , "パスワード")
or die ("接続できません。 ");
mysql_select_db("yourDB", $db) or die ("データベースを選択できません。");
// タイムスタンプを取得します
$add_date = date("Y-m-d");
if ($op ! = "ds") {
//購読/購読解除が必要です
$text_block = "
"; } else if (($op == "ds") && ($action == "sub")) {
// メールがまだ送信されていないか確認して送信し、そうでない場合は情報を返します
$check = "購読者から email_addr を選択します
where email_addr = "$email""
$check_result = mysql_query($check)
or die("ローカル電子メール アドレスのチェックを実行できません。"); $check_result);
if ($check_num == 0) {
// $check_num が 0 の場合、一致するレコードが見つからないため、ユーザーを送信する必要があります
$sql = "購読者に挿入します
value(" $email", "$add_date")";
@mysql_query($sql) or die ("メールを挿入できませんでした。");
$text_block = "
";
} else {
// $check_num が 0 でない場合、ユーザーはすでに送信済みであることを通知する必要があります
$text_block = "
";
}
} else if (($op == "ds") && ($action == "unsub")) {
// 購読しているかどうかを確認してから追加する 購読を解除する、そうでない場合は情報を返す
$check = "購読者から email_addr を選択します
where email_addr = "$email""
$check_result = mysql_query($check)
or die("電子メール アドレスのチェックを実行できません. ");
$check_num = mysql_num_rows($check_result);
if ($check_num == 0) {
// $check_num が 0 の場合、ユーザーは購読解除できません
$ text_block = "
} else {
// $check_num が 0 でない場合、ユーザーはリストに含まれており、購読解除できます
$sql = "購読者から削除します
where email_addr = "$email"";
@ mysql_query($sql) または die ("メールを削除できません。");
$text_block = "
php echo "$text_block"; >
-------------------------------------------------- -- --
適切な購読/購読解除メカニズムができたので、簡単なフォーム
と電子メール スクリプト (「while」ループが便利です。) だけを使用してニュースレターを送信する方法を説明します。 ) まず、「send_mail.html」という名前のフォームがあり、そのフォームのアクションは「do_send_mail.phtml」のようにする必要があり、件名を記述するためにテキストフィールド (件名) を使用するだけです。フォームとスクリプトを適切に変更する限り、必要に応じてフォーム フィールドを使用できます
------------------- ----- -------------------------------------- ----- ------
ニュースレターを送信
メールの内容:
"ニュースレター" Cols=40 rows=30 Wrap=virtual>