小規模なメーリングリストを管理する
メールリスト
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>
----------------------------- --- --------------------------------------------------- --- -
最後のポイントは、フォームのアクションについてです。このスクリプトは「do_send_mail.phtml」と呼ばれます。スクリプトは最初に $subject と
$newletter の値を探し、それらの値のいずれかが空の場合はフォームにリダイレクトします:
---------------- ---------- -------------------------------------- ---------- ---------
if (($subject == "") || ($newsletter == "")) {
header("Location: http ://www.yourdomain.com/send_mail .phtml");
終了;
}---------------------------- ---------------- ---------------------------------- --------
次に、データベースに接続し、テーブルからメール アドレスを取得します:
---------------------- ------------------------ ------------------------ ----------
// データベースに接続します
$db = mysql_connect(" サーバー名", "ユーザー名", "パスワード")
or die ("接続できません。"); "yourDB", $db) または die ("データベースを選択できません。");
$sql = " 購読者から email_addr を選択します";
$res = mysql_query($sql) または die("メール アドレスを取得できません。" );
------------------------ ------------------------ ------------------------ ---------
電子メール メッセージの送信ループに入る前に、追加の電子メール ヘッダーを作成する必要があります。ここでは、「From:」行を使用しました:
$headers = "From: "Your Mailing List"
次に、メール送信のループに入ります。まず、mysql_fetch_array 関数 (またはデータベース用の同様の関数) を使用して、各
レコードを配列に配置します。複数のフィールドを取得する場合は、より合理的かもしれません。処理が速いため、私はこれを使用します。次のステートメントは、結果
セットを反復処理し、mail() 関数を通じてリスト内の各メールボックスに電子メールを送信します。 ---------------------------------------------------- ---- ----------
while ($row = mysql_fetch_array($res)) {
$email_addr = $row[0];
mail("$email_addr", "$subject) ", $newsletter , $headers);
}
-------------------------------------- ---- --------------------------------------
$の値subject と $newletter はフォームの前に入力されます。
が完了したことがわかるように、スクリプトの最後に出力行を追加します。これですべて対応完了です!完全な「do_send_mail.phtml」スクリプトは次のようになります:
---------------------------------- --- -----------------------------------------------
if (($subject == "") || ($newsletter == "")) {
header("Location: http://www.yourdomain.com/send_mail.phtml"); ;
} else {
// データベースに接続します
$db = mysql_connect("servername", "username", "password")
or die ("Cannot connect.")
mysql_select_db("yourDB") , $db) または die ("データベースを選択できません。");
$sql = "購読者から email_addr を選択"
$res = mysql_query($sql) または die("電子メール アドレスを取得できません。"); ;
$headers = " From: "あなたのメーリング リスト"
while ($row = mysql_fetch_array($res)) {
$email_addr = $row[0] ;
mail("$ email_addr", "$subject", $newsletter, $headers);
echo "メールを送信しました!"
;

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Kernelsecuritycheckfailure (カーネルチェック失敗) は比較的一般的な停止コードですが、理由が何であれ、ブルースクリーンエラーは多くのユーザーを悩ませます、当サイトでは 17 種類のエラーをユーザーに丁寧に紹介します。 kernel_security_check_failure ブルー スクリーンに対する 17 の解決策 方法 1: すべての外部デバイスを削除する 使用している外部デバイスが Windows のバージョンと互換性がない場合、Kernelsecuritycheckfailure ブルー スクリーン エラーが発生することがあります。これを行うには、コンピュータを再起動する前に、すべての外部デバイスを取り外しておく必要があります。

多くのユーザーはスマートウォッチを選ぶときにファーウェイブランドを選択しますが、その中でもファーウェイ GT3pro と GT4 は非常に人気のある選択肢であり、多くのユーザーはファーウェイ GT3pro と GT4 の違いに興味を持っています。 Huawei GT3pro と GT4 の違いは何ですか? 1. 外観 GT4: 46mm と 41mm、材質はガラスミラー + ステンレススチールボディ + 高解像度ファイバーバックシェルです。 GT3pro: 46.6mm および 42.9mm、材質はサファイアガラス + チタンボディ/セラミックボディ + セラミックバックシェルです。 2. 健全な GT4: 最新の Huawei Truseen5.5+ アルゴリズムを使用すると、結果はより正確になります。 GT3pro: ECG 心電図と血管と安全性を追加

電子メールの流れは次のとおりです: MUA: MailUserAgent - メール ユーザー エージェント。 (つまり、Outlook に似た電子メール ソフトウェア) MTA: MailTransferAgent - メール転送エージェント。NetEase、Sina などの電子メール サービス プロバイダーです。 MDA: MailDeliverAgent - メール配信エージェント。電子メール サービス プロバイダーのサーバー sender->MUA->MTA->MTA->if

Windows 11 で Snipping Tool が機能しない理由 問題の根本原因を理解すると、適切な解決策を見つけるのに役立ちます。 Snipping Tool が正しく動作しない主な理由は次のとおりです。 フォーカス アシスタントがオンになっている: これにより、Snipping Tool が開かなくなります。破損したアプリケーション: 起動時にスニッピング ツールがクラッシュする場合は、破損している可能性があります。古いグラフィック ドライバー: 互換性のないドライバーは、スニッピング ツールに干渉する可能性があります。他のアプリケーションからの干渉: 実行中の他のアプリケーションが Snipping Tool と競合する可能性があります。証明書の有効期限が切れています: アップグレード プロセス中のエラーにより、この問題が発生する可能性があります。これらの簡単な解決策は、ほとんどのユーザーに適しており、特別な技術知識は必要ありません。 1. Windows および Microsoft Store アプリを更新する

この記事では、Windows 11/10 PC で PalmCheck 機能をオフにする方法を説明します。 PalmCheck は、キーボード入力時に手のひらやその他の接触が誤って入力として認識されるのを防ぐために設計された機能です。これは通常、タッチパッドの設定、特にラップトップなどのタッチ対応デバイスで見られます。キーボードとタッチパッドの両方を使用する必要がある状況で、より柔軟に入力を制御できるように、PalmCheck または同様の機能をオフにすることが必要な場合があります。この記事では、ゲームやアプリケーションの実行時のニーズにうまく対応できるように、Windows 11/10 PC で PalmCheck 機能を無効にする方法を紹介します。タッチパッドの「P」とは何ですか?

パート 1: 最初のトラブルシューティング手順 Apple のシステムステータスを確認する: 複雑な解決策を掘り下げる前に、基本から始めましょう。問題はデバイスにあるのではなく、Apple のサーバーがダウンしている可能性があります。 Apple のシステム ステータス ページにアクセスして、AppStore が適切に動作しているかどうかを確認してください。問題があれば、Apple が修正してくれるのを待つしかありません。インターネット接続を確認します。「AppStore に接続できません」問題は接続不良が原因である場合があるため、安定したインターネット接続があることを確認してください。 Wi-Fi とモバイル データを切り替えるか、ネットワーク設定をリセットしてみてください ([一般] > [リセット] > [ネットワーク設定のリセット] > [設定])。 iOS バージョンを更新します。

ロード バランシングを実行する場合、通常、バックエンド リアルサーバーが正常でサービスを提供できることを確認するためにヘルス チェック ツールが導入され、バックエンド リアルサーバーがダウンしたりサービスが利用できなくなったりする状況を回避するために、ロード バランサーはリクエストをrealserver. ビジネス アクセス全体への影響。ヘルスチェックを実行するにはさまざまな方法があり、スクリプトを自分でデプロイすることもできますが、最も一般的に使用されるのは keepalived サービスです。 keepalived には、tcp_check、http_check、misc_check の 3 つのヘルス チェック メソッドがあります。 Keepalived 構成の概要 keepalived には 3 つの主要なモジュールがあります。

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code
