Inhaltsverzeichnis
订阅/退订
Send a Newsletter
Heim Backend-Entwicklung PHP-Tutorial 管理小型的邮件列表_PHP

管理小型的邮件列表_PHP

Jun 01, 2016 pm 12:40 PM
不能 管理 订阅 退订

首先是订阅/退订脚本,它所做的工作就是从数据库表中增加或删除记录。把它叫做"manage.phtml" 或
差不多的什么东西。这样呢,就需要后台是某种数据库,在上面可以创建订阅表。根据政治中的半数原则,
所以我将使用MySQL作为这个例子的数据库。你可以使用任何你常用的数据库,只是根据PHP手册替换正确的
数据库相关函数。

  在我的订阅表中,我使用了两个字段:邮件地址(email_addr)和添加日期(date_added)。你可以根据需
要增加字段,或者将date_added字段删除。在这个例子中,我只是向你展示我做了什么,你可以适当的进行
修改。在我的订阅表中,email_addr字段是一个不重复字段,意味着你不能增加另一个与之完全一样的e-mail
地址。这个可以避免重复订阅,而且当用户想退订时,也使删除记录的方法变得简单和可靠。

  那么,让我们创建订阅/退订表单吧(manager.phtml或你想起的什么名字)。我使用同一个文件处理订
阅和退订,也包括表格自身的动作,所以可能有点复杂。我将从头到尾讲解,然后把所有的片段组合在一起,
放在一个表单中。

  在脚本的开始处,是打开数据库和准备时间戳。在开始时处理这些不显眼的东西总是可以为我减轻一点
压力。

--------------------------------------------------------------------------------
// 连接数据库
$db = mysql_connect("servername", "username", "password") or die ("不能连接。");

mysql_select_db("yourDB", $db) or die ("不能选择数据库。");

// 得到时间戳
$add_date = date("Y-m-d"); --------------------------------------------------------------------------------
  我们希望$op的值是"ds"。它不是复杂的程序缩写----我创的,表示"do something(做某事)" 。所以,
脚本的第一件事就是查看$op的值是不是等于"ds"。这个值只有当表单被提交后才会被发送上来。所以如果
$op的值不是"ds",那么说明用户还没有看过表单,所以应该把表单显示出来:

--------------------------------------------------------------------------------
if ($op != "ds") {

//需要订阅/退订

$text_block = "




your e-mail address:



action:

sub
unsub






";

}--------------------------------------------------------------------------------
  你会注意到我把文本放在$text_block变量中。通过把文本放在一个变量中,接下来我所要做的就是在
后面在主HTML模板内输出$text_block的值。这是个人习惯问题,你可以根据你喜欢的时间和方式输出文本。

  这个表单的动作是$PHP_SELF ,可以想象一下,它的意思就是当按下了提交按钮之后,它将会被重新装
入。然后,你可以看到这个表单有三个字段:一个隐藏字段,用于给$op赋值为"ds" ;一个文本字段,叫做
"email",在这里用户将填入他或她的email地址;还有一个是单选按钮集,叫做"action",根据它,用户可
以决定执行哪一个动作(订阅或退订)。

  在表单被提交之后,$op将等于"ds",并且$action的值将包含"sub"或"unsub"。那么,我们继续看上面
的if...语句,一旦提交,它将被跳过(因为$op=="ds")。如果$op的值为"ds"并且$action的值"sub"(订阅),
下面的else if...句被执行。这段代码检查e-mail是否已经存在于订阅表中,如果不存在则将其插入到表中
并打印出响应,否则忽略。

--------------------------------------------------------------------------------
else if (($op == "ds") && ($action == "sub")) {

// 检查邮件还未提交则提交它们,否则返回信息

$check = "select email_addr from subscribers
where email_addr = \"$email\"";

$check_result = mysql_query($check)
or die("不能执行地e-mail地址的检查。");

$check_num = mysql_num_rows($check_result);


if ($check_num == 0) {

// 如果$check_num为0,则没有找到匹配的记录,用户应该被提交

$sql = "insert into subscribers
values(\"$email\", \"$add_date\")";

@mysql_query($sql) or die ("Couldn't insert email.");

$text_block = "

感谢您的注册!


";

} else {

// 如果$check_num不为0,则用户已经提交过了,你应该让他们知道

$text_block = "

你已经订阅过了!


";

}

}--------------------------------------------------------------------------------
  下一步:当$action的值为"unsub"(unsubscribe,退订)而不是"sub"时应该做些什么。好,就象上面
一样简单,那么对else if...语句扩展一下,多加一块代码,用于检查e-mail在被删除前是否存在于订阅表
中,如果存在则删除它并且打印响应,否则忽略它。

--------------------------------------------------------------------------------
else if (($op == "ds") && ($action == "unsub")) {

// 检查已经订阅过,然后将他们退订,否则返回信息

$check = "select email_addr from subscribers
where email_addr = \"$email\"";

$check_result = mysql_query($check)
or die("不能执行对e-mail地址的检查。");

$check_num = mysql_num_rows($check_result);

if ($check_num == 0) {

// 如果$check_num为0,则没有找到匹配记录,用户不能被退订

$text_block = "

不能在列表中找到你的e-mail地址!


你还没有被退订,因为你所输入的e-mail不在数据库中。";

} else {

// 如果$check_num不为0,则用户在列表中,所以可以被退订

$sql = "delete from subscribers
where email_addr = \"$email\"";

@mysql_query($sql) or die ("不能删除email。");

$text_block = "

退订成功!


";
}

}

?>--------------------------------------------------------------------------------
  现在所有艰难的工作已经做完了,只剩下在一块HTML中输出$text_block变量了:

--------------------------------------------------------------------------------



订阅/退订




订阅/退订







--------------------------------------------------------------------------------
  下面是完整的程序清单:

--------------------------------------------------------------------------------


// 连接数据库
$db = mysql_connect("servername", "username", "password")
or die ("不能连接。");

mysql_select_db("yourDB", $db) or die ("不能选择数据库。");

// 得到时间戳
$add_date = date("Y-m-d");

if ($op != "ds") {

//需要订阅/退订

$text_block = "




your e-mail address:



action:

sub
unsub






";
} else if (($op == "ds") && ($action == "sub")) {

// 检查邮件还未提交则提交它们,否则返回信息

$check = "select email_addr from subscribers
where email_addr = \"$email\"";

$check_result = mysql_query($check)
or die("不能执行地e-mail地址的检查。");

$check_num = mysql_num_rows($check_result);


if ($check_num == 0) {

// 如果$check_num为0,则没有找到匹配的记录,用户应该被提交

$sql = "insert into subscribers
values(\"$email\", \"$add_date\")";

@mysql_query($sql) or die ("Couldn't insert email.");

$text_block = "

感谢您的注册!


";

} else {

// 如果$check_num不为0,则用户已经提交过了,你应该让他们知道

$text_block = "

你已经订阅过了!


";

}

} else if (($op == "ds") && ($action == "unsub")) {

// 检查已经订阅过,然后将他们退订,否则返回信息

$check = "select email_addr from subscribers
where email_addr = \"$email\"";

$check_result = mysql_query($check)
or die("不能执行对e-mail地址的检查。");

$check_num = mysql_num_rows($check_result);

if ($check_num == 0) {

// 如果$check_num为0,则没有找到匹配记录,用户不能被退订

$text_block = "

不能在列表中找到你的e-mail地址!


你还没有被退订,因为你所输入的e-mail不在数据库中。";

} else {

// 如果$check_num不为0,则用户在列表中,所以可以被退订

$sql = "delete from subscribers
where email_addr = \"$email\"";

@mysql_query($sql) or die ("不能删除email。");

$text_block = "

退订成功!


";
}

}
?>




订阅/退订




订阅/退订







--------------------------------------------------------------------------------
  现在你已经有了合适的订阅/退订机制,我将向你展示如何发出一封新闻信件,只使用一个简单的表单
和一个邮件脚本。("while"循环是你的好朋友!)。首先,是名为"send_mail.html"的表单。表单的动作
应该是象"do_send_mail.phtml"的什么东西,并且我只使用了一个用来写主题的文本字段(subject)和一个
写信件内容的文本域字段(newsletter)。你可以根据需要使用表单字段,只要适当地修改表单和脚本。

--------------------------------------------------------------------------------



发送邮件




Send a Newsletter





给出一个主题:



邮件内容:









--------------------------------------------------------------------------------
  最后一点说明的是关于表单的动作,这个脚本叫做"do_send_mail.phtml"。脚本首先查找$subject和
$newletter的值,并且如果他们的值有一个为空就重定向到表单:

--------------------------------------------------------------------------------
if (($subject =="") || ($newsletter == "")) {

header("Location: http://www.yourdomain.com/send_mail.phtml");
exit;

}--------------------------------------------------------------------------------
  接着,连接到数据库并且从订阅表中取出邮件地址:

--------------------------------------------------------------------------------
// 连接数据库
$db = mysql_connect("servername", "username", "password")
or die ("不能连接。");

mysql_select_db("yourDB", $db) or die ("不能选择数据库。");

$sql = "select email_addr from subscribers";

$res = mysql_query($sql) or die("不能得到邮件地址。");
--------------------------------------------------------------------------------
  在进入到发送邮件信息的循环之前,要建立额外的邮件头。在这里,我只用了"From:"行:

$headers = "From: \"Your Mailing List\" \n";


  现在进入发送邮件的循环中。首先,使用mysql_fetch_array 函数(或同你的数据库相似的函数)将每
条记录放在一个数组中。如果你取回的字段多于一个可能更有意义,我用它是因为它快。下面的语句对结果
集进行遍历并且通过mail()函数对每个在列表中的邮箱发送e-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");
exit;

} else {

// 连接数据库
$db = mysql_connect("servername", "username", "password")
or die ("不能连接。");

mysql_select_db("yourDB", $db) or die ("不能选择数据库。");

$sql = "select email_addr from subscribers";

$res = mysql_query($sql) or die("不能得到邮件地址。");

$headers = "From: \"Your Mailing List\" \n";


while ($row = mysql_fetch_array($res)) {

$email_addr = $row[0];

mail("$email_addr", "$subject", $newsletter, $headers);

}

echo "邮件发送完毕!";
}
?>
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So verwenden Sie Redis zur Implementierung einer verteilten Transaktionsverwaltung So verwenden Sie Redis zur Implementierung einer verteilten Transaktionsverwaltung Nov 07, 2023 pm 12:07 PM

So verwenden Sie Redis zur Implementierung eines verteilten Transaktionsmanagements Einführung: Mit der rasanten Entwicklung des Internets wird die Verwendung verteilter Systeme immer weiter verbreitet. In verteilten Systemen ist das Transaktionsmanagement eine wichtige Herausforderung. Herkömmliche Methoden des Transaktionsmanagements lassen sich in verteilten Systemen nur schwer implementieren und sind ineffizient. Mithilfe der Eigenschaften von Redis können wir problemlos ein verteiltes Transaktionsmanagement implementieren und die Leistung und Zuverlässigkeit des Systems verbessern. 1. Einführung in Redis Redis ist ein speicherbasiertes Datenspeichersystem mit effizienter Lese- und Schreibleistung und umfangreichen Daten.

So kündigen Sie das Abonnementpaket bei China Unicom. China Unicom-Tutorial zur Kündigung des Abonnementpakets So kündigen Sie das Abonnementpaket bei China Unicom. China Unicom-Tutorial zur Kündigung des Abonnementpakets Mar 19, 2024 pm 01:01 PM

China Unicom ist sehr komfortabel zu bedienen und hilft Ihnen, Ihre Mobiltelefonnummer jeden Tag besser zu verwalten. Sie bietet eine Vielzahl funktionaler Dienste für alle, sodass Sie problemlos verschiedene Geschäfte abwickeln können, ohne in eine Offline-Geschäftshalle gehen zu müssen . Wenn es Ihnen nicht gefällt, können Sie es ganz einfach und bequem abbestellen. Wenn Sie es nicht verstehen, können Sie es einfach nutzen und lernen, wie es funktioniert Wenn Sie es nicht benötigen, können Sie es rechtzeitig abbestellen, um unnötige Ausgaben zu vermeiden. Freunde in Not können kommen und es nutzen! Gehen Sie zur China Unicom-Homepage und wählen Sie unten den Dienst aus. Klicken Sie auf die Funktionsoptionen auf der linken Seite der Seite. Klicken Sie in der Bearbeitungsoberfläche auf die Option zur Abmeldung des Mehrwertdienstes. Suchen Sie das Paket, das Sie abbestellen möchten, und klicken Sie auf Abmelden.

Das Abonnement ist abgelaufen. Bitte erneuern Sie die Zahlung, um Microsoft 365 zu behalten Das Abonnement ist abgelaufen. Bitte erneuern Sie die Zahlung, um Microsoft 365 zu behalten Feb 19, 2024 am 11:06 AM

In diesem Artikel wird die Benachrichtigung „Abonnement abgelaufen, Zahlung erneuern, um Microsoft 365 zu behalten“ untersucht, die auf Windows 11/10-Computern angezeigt wird. Dies ist keine Fehlermeldung, sondern eine Warnung, die Sie im Benachrichtigungscenter sehen. Berichten zufolge erhalten einige Benutzer diese Benachrichtigung trotz eines aktiven Abonnements immer noch. Wenn Sie auf eine ähnliche Situation stoßen, können Sie auf die Vorschläge in diesem Artikel zurückgreifen. Ihr Abonnement ist abgelaufen. Bitte erneuern Sie Ihre Zahlung, um Microsoft 365 weiterhin zu nutzen. Wenn Sie eine Benachrichtigung erhalten, dass Ihr Abonnement abgelaufen ist, wird empfohlen, nicht auf die Links zu klicken oder sofort Maßnahmen zu ergreifen. Bitte stellen Sie sicher, dass Sie die Echtheit der Benachrichtigung über offizielle Kanäle überprüfen, bevor Sie Ihre Zahlung aktualisieren, um potenzielle Infektionsrisiken für Ihr System zu vermeiden. Überprüfen Sie Ihren Abonnementstatus. Überprüfen Sie Ihre Zahlungsinformationen. Verwenden Sie eine gute Anti-Malware oder Anti-Malware-Software

Das Apple-ID-Land auf dem iPhone kann nicht geändert werden: Fix Das Apple-ID-Land auf dem iPhone kann nicht geändert werden: Fix Apr 20, 2024 am 08:22 AM

Das Land oder die Region Ihrer Apple-ID kann nicht geändert werden. In vielen Fällen können Sie die Region Ihrer Apple-ID nicht ändern. Wir haben alle diese Bedingungen und ihre jeweiligen Lösungen besprochen, damit Sie die AppleID auf dem iPhone ändern können. Fix 1 – Alle aktiven Abonnements kündigen Apple erlaubt Ihnen nicht, Regionsänderungsvorgänge durchzuführen, wenn Sie bereits aktive Abonnements haben. Normalerweise haben diese Apps in verschiedenen Regionen unterschiedliche Abonnementpläne, Stufen und Gebühren (Währungen). Schritt 1 – Sie müssen zu den Einstellungen gehen. Schritt 2 – Sie finden Ihre Apple-ID oben auf der Seite „Einstellungen“. Schritt 3 – Klicken Sie einmal, um es zu öffnen. Schritt 4 – Öffnen Sie auf der nächsten Seite das Menü „Abonnements“. Schritt 5 – Sie können es ansehen

Wie implementiert man die Leistungsmanagementfunktion für Schüler in Java? Wie implementiert man die Leistungsmanagementfunktion für Schüler in Java? Nov 04, 2023 pm 12:00 PM

Wie implementiert man die Leistungsmanagementfunktion für Schüler in Java? Im modernen Bildungssystem ist das Leistungsmanagement der Studierenden eine sehr wichtige Aufgabe. Durch die Verwaltung der Schülerleistungen können Schulen den Lernfortschritt der Schüler besser überwachen, ihre Schwächen und Stärken verstehen und auf der Grundlage dieser Informationen gezieltere Unterrichtspläne erstellen. In diesem Artikel besprechen wir, wie man die Programmiersprache Java verwendet, um Funktionen zur Leistungsverwaltung von Schülern zu implementieren. Zunächst müssen wir die Datenstruktur der Schülernoten bestimmen. Typischerweise können die Noten der Schüler als dargestellt werden

Verwaltung von Laravel-Erweiterungspaketen: Integrieren Sie problemlos Code und Funktionen von Drittanbietern Verwaltung von Laravel-Erweiterungspaketen: Integrieren Sie problemlos Code und Funktionen von Drittanbietern Aug 25, 2023 pm 04:07 PM

Verwaltung von Laravel-Erweiterungspaketen: Einfache Integration von Code und Funktionen von Drittanbietern. Einführung: Bei der Laravel-Entwicklung verwenden wir häufig Code und Funktionen von Drittanbietern, um die Effizienz und Stabilität des Projekts zu verbessern. Das Laravel-Erweiterungspaketverwaltungssystem ermöglicht uns die einfache Integration dieser Codes und Funktionen von Drittanbietern, wodurch unsere Entwicklungsarbeit komfortabler und effizienter wird. In diesem Artikel werden die grundlegenden Konzepte und die Verwendung der Laravel-Erweiterungspaketverwaltung vorgestellt und einige praktische Codebeispiele verwendet, um den Lesern zu helfen, sie besser zu verstehen und anzuwenden. Was ist Lara?

Was tun, wenn die Rechtsklick-Menüverwaltung in Windows 10 nicht geöffnet werden kann? Was tun, wenn die Rechtsklick-Menüverwaltung in Windows 10 nicht geöffnet werden kann? Jan 04, 2024 pm 07:07 PM

Wenn wir das Win10-System verwenden und mit der Maus auf den Desktop oder das Rechtsklick-Menü klicken, stellen wir fest, dass das Menü nicht geöffnet werden kann und wir den Computer nicht normal verwenden können. Zu diesem Zeitpunkt müssen wir das wiederherstellen System zur Lösung des Problems. Die Win10-Rechtsklick-Menüverwaltung kann nicht geöffnet werden: 1. Öffnen Sie zuerst unsere Systemsteuerung und klicken Sie dann auf. 2. Klicken Sie dann unter Sicherheit und Wartung auf. 3. Klicken Sie rechts, um das System wiederherzustellen. 4. Wenn die Maus immer noch nicht verwendet werden kann, prüfen Sie, ob mit der Maus selbst ein Fehler vorliegt. 5. Wenn Sie sicher sind, dass kein Problem mit der Maus vorliegt, drücken Sie + und geben Sie ein. 6. Nachdem die Ausführung abgeschlossen ist, starten Sie den Computer neu.

So partitionieren Sie eine Festplatte So partitionieren Sie eine Festplatte Feb 25, 2024 pm 03:33 PM

So partitionieren Sie die Festplattenverwaltung Mit der kontinuierlichen Weiterentwicklung der Computertechnologie ist die Festplattenverwaltung zu einem unverzichtbaren Bestandteil unserer Computernutzung geworden. Als wichtiger Teil der Festplattenverwaltung kann die Festplattenpartitionierung eine Festplatte in mehrere Teile unterteilen, sodass wir Daten flexibler speichern und verwalten können. Wie kann man also die Festplattenverwaltung partitionieren? Im Folgenden werde ich Ihnen eine detaillierte Einführung geben. Zunächst müssen wir klarstellen, dass es nicht nur eine Möglichkeit gibt, Festplatten zu partitionieren. Wir können die geeignete Festplattenpartitionierungsmethode je nach Bedarf und Zweck flexibel auswählen. oft

See all articles