首页 > 后端开发 > php教程 > 使用PHP和MySQL构建新闻通讯系统

使用PHP和MySQL构建新闻通讯系统

Joseph Gordon-Levitt
发布: 2025-02-26 11:26:09
原创
506 人浏览过

今天,我们将使用MySQL数据库的PHP构建新闻通讯系统。该教程将涵盖构建系统,该系统允许多个新闻通讯列表,并将消息发送到特定列表。

我们将构建一个相当复杂的新闻通讯系统,所以让我们开始启动吧!您将需要两个资源来进行该项目:

    >丝绸图标集库将用于在应用程序中添加一些视觉范围。
  • > Symfony PHP Mailer库将是用于发送电子邮件。
  • 创建应用程序骨架

>首先,让我们查看整个项目目录结构。>

> go首先创建一个主要项目目录。接下来,在您的项目文件夹中创建一个名为

admin

的文件夹。进一步移动,在admin文件夹中,包括两个名为媒体 swift 的子目录。此外,在媒体>目录中创建一个名为images的新文件夹。建议在先前创建的Swift 文件夹中放置swift lib文件夹。此外,请确保复制我们将成为的六个丝绸图标使用。

    bullet_green.png
  • bullet_red.png
  • 使用PHP和MySQL构建新闻通讯系统.png
  • email_go.png
  • find.png

page_edit.png

教程的其余部分,我们将主要开发CRUD功能(创建,读取,更新和删除)。

<?php <br>session_start(); <br>require_once 'database.php';<br><br>$mini = false;<br>$nonav = false;<br><br>error_reporting(0);<br><br>define('DB_SERVER', 'localhost');<br>define('DB_USER', 'root');<br>define('DB_PASSWORD', ''); <br>define('DB_NAME', 'tutsplus_ns_demo');<br>define('FROM_EMAIL', 'no_reply@ohyeahemail.com');<br>define('FROM_NAME', 'oh yeah email!');<br><br>$db = new Database(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME);<br>
登录后复制
登录后复制
登录后复制
登录后复制
应用程序配置

> 在整个PHP代码中轻松管理应用程序配置,让我们创建一个全局配置文件,该文件定义可以在整个应用程序中使用的常数。我们将其命名为admin/config.php。,如您所见,我们已经定义了与数据库设置和电子邮件配置相关的常数。确保根据环境更改上述设置。因此,创建全局配置文件就是这样。我们还包括了数据库类文件,我们将在稍后实施。>

数据库类

在本节中,我们将实现__construct方法,我们正在创建$ db_server ,$ db_password 和validateuser方法处理用户身份验证。它将用户名和密码作为参数,并调用true;否则,它将返回loggedin方法检查用户是否已登录用户是否已登录,如果用户被登录并查询方法,则执行第一个参数中提供的SQL查询。它准备查询并执行它。然后,它检索结果元数据,将结果绑定到变量,获取结果并返回包含被提取数据的数组。 UpdateQuery和CountQuery方法执行SQL查询,该查询返回单个结果,例如Count。用户名和密码。在这种情况下,我们调用数据库类。随后,我们已将会话错误分配给用户

表,我们的数据库中需要用于用户管理系统。 ,应允许用户添加尽可能多的新闻通讯。在这种情况下,我们需要创建新闻通讯

>表格,我们将为新闻通讯管理实施不同的页面。 新闻通讯列表page page继续并创建 admin/phessletters.php

<?php <br>session_start(); <br>require_once 'database.php';<br><br>$mini = false;<br>$nonav = false;<br><br>error_reporting(0);<br><br>define('DB_SERVER', 'localhost');<br>define('DB_USER', 'root');<br>define('DB_PASSWORD', ''); <br>define('DB_NAME', 'tutsplus_ns_demo');<br>define('FROM_EMAIL', 'no_reply@ohyeahemail.com');<br>define('FROM_NAME', 'oh yeah email!');<br><br>$db = new Database(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME);<br>
登录后复制
登录后复制
登录后复制
登录后复制
文件,如以下片段所示。

>首先,它通过调用调用the the the the the the the the the the the the the the the the the the the the the the the the the the the the the用户是否已登录数据库

类。如果未登录用户,它将用户重定向到

login.php

page。它以升序从ID

列中选择所有记录。最后,我们在新闻通讯记录上迭代并构建HTML表列表,并将 layout.php

文件包含在在$ _post ['name'']
CREATE TABLE `users` ( <br>   `id` int(10) AUTO_INCREMENT, <br>   `username` varchar(50), <br>   `password` varchar(32), <br>   PRIMARY KEY (`id`) <br>) ENGINE=MyISAM DEFAULT CHARSET utf8; <br><br><br>INSERT INTO `users` (`id`, `username`, `password`) VALUES  ('1', 'admin', '5ebe2294ecd0e0f08eab7690d2a6ee69');<br>
登录后复制
登录后复制
登录后复制
和新闻通讯

>数据库中的表。最后,它将用户重定向到>新闻通讯.phppage。让我们创建admin/enwesletters_edit.php

文件,该文件允许用户编辑现有新闻通讯。负责显示一个表格以编辑现有新闻通讯。提交后,它会在数据库中更新相应的记录,并根据结果将用户重定向到适当的页面。

>>编辑表单看起来像这样。>使用PHP和MySQL构建新闻通讯系统 使用PHP和MySQL构建新闻通讯系统

>删除新闻通讯

继续创建文件,该文件允许用户删除现有的新闻通讯。 >

>模板
<?php <br>session_start(); <br>require_once 'database.php';<br><br>$mini = false;<br>$nonav = false;<br><br>error_reporting(0);<br><br>define('DB_SERVER', 'localhost');<br>define('DB_USER', 'root');<br>define('DB_PASSWORD', ''); <br>define('DB_NAME', 'tutsplus_ns_demo');<br>define('FROM_EMAIL', 'no_reply@ohyeahemail.com');<br>define('FROM_NAME', 'oh yeah email!');<br><br>$db = new Database(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME);<br>
登录后复制
登录后复制
登录后复制
登录后复制

我们的应用程序还支持新闻通讯模板管理。因此,我们需要像为新闻通讯实体建造它一样建立CRUD。由于它非常相似,因此我将通过提供代码来快速浏览它。

让我们创建订户

表,如以下snippet所示。

>类似地,让我们创建订户
CREATE TABLE `users` ( <br>   `id` int(10) AUTO_INCREMENT, <br>   `username` varchar(50), <br>   `password` varchar(32), <br>   PRIMARY KEY (`id`) <br>) ENGINE=MyISAM DEFAULT CHARSET utf8; <br><br><br>INSERT INTO `users` (`id`, `username`, `password`) VALUES  ('1', 'admin', '5ebe2294ecd0e0f08eab7690d2a6ee69');<br>
登录后复制
登录后复制
登录后复制
表。接下来,我们将使用此sql。在消息

>表中创建或删除订阅记录。

<?php <br>require_once 'config.php'; <br><br>$response = $db->loginRequired();<br>if (!$response) {<br>    header('Location: login.php');<br>    exit;<br>}<br>$title = "Newsletters"; <br>$newsletters = $db->query("SELECT * FROM newsletters ORDER BY id ASC");<br><br>$tab = 'nl'; <br>$table = ""; <br><br>foreach($newsletters as $row) {<br>    $dlink = '<a href="newsletters_%E4%BD%BF%E7%94%A8PHP%E5%92%8CMySQL%E6%9E%84%E5%BB%BA%E6%96%B0%E9%97%BB%E9%80%9A%E8%AE%AF%E7%B3%BB%E7%BB%9F.php?id='.%24row%5B'id'%5D.'" onclick="return confirm(\'Are you sure you want to 使用PHP和MySQL构建新闻通讯系统 this newsletter?\');" title="使用PHP和MySQL构建新闻通讯系统"><img src="/static/imghw/default1.png" data-src="media/images/使用PHP和MySQL构建新闻通讯系统.png" class="lazy" alt="使用PHP和MySQL构建新闻通讯系统"></a>';<br>    $elink = '<a href="newsletters_edit.php?id='.%24row%5B'id'%5D.'" title="edit"><img src="/static/imghw/default1.png" data-src="media/images/page_edit.png" class="lazy" alt="edit"></a>';<br>    if($row['visible'] == "1") {<br>        $visible = '<img  src="/static/imghw/default1.png" data-src="media/images/bullet_green.png" class="lazy" alt="使用PHP和MySQL构建新闻通讯系统" >';} else {$visible = '<img  src="/static/imghw/default1.png" data-src="media/images/bullet_red.png" class="lazy" alt="使用PHP和MySQL构建新闻通讯系统" >';<br>    }<br>    $table .= "<tr>
<td>".$row['id']."</td>
<td>".$row['name']."</td>
<td>".$row['description']."</td>
<td>$visible</td>
<td>".$dlink." ".$elink."</td>
</tr>\n";<br>} <br><br>$message = $db->errorMessages();<br>$content = '';<br>$content .= '<a href="newsletters_new.php">Add New Newsletter »</a> ';<br>$content .= $message;<br>$content .= '
登录后复制
登录后复制







';
$content .= $table;
$content .= '
name description visible
';

include 'layout.php';
?>
列表消息

> Message.php

文件如下图所示。

<?php <br>require_once 'config.php'; <br><br>$response = $db->loginRequired();<br>if (!$response) {<br>    header('Location: login.php');<br>    exit;<br>}<br><br>$tab = 'nl';<br><br>if(isset($_POST['submitted'])) { <br>    if(isset($_POST['visible'])) {$visible = 1;}else{$visible = 0;}<br>    $data = array('name'=>$_POST['name'],'description'=>$_POST['description'], 'visible'=>$visible);<br>    $db->updateQuery($data, $_POST['id'], 'newsletters');<br>    $_SESSION['success'] = "Updated newsletter.";<br>    header('Location: newsletters.php');<br>    exit;<br>} <br><br>$title = "Edit newsletter";<br>$id = (int) $_GET['id'];<br><br>$results = $db->query("SELECT * FROM newsletters WHERE id='".$id."' LIMIT 1");<br>$name = $results[0]['name'];<br>$description = $results[0]['description'];<br>$visible = ($results[0]['visible'] == "1") ? 'checked="checked"' : '';<br><br>$content = '
登录后复制






















';

include 'layout.php';
?>
>这是一个列表页面,其中有一些其他操作的链接。您的页面应该看起来像这样:

使用PHP和MySQL构建新闻通讯系统现在,我们将开始在新页面上工作。信息,然后在下一页上,我们将收集实际消息。

admin/message/messags_new.php

使用以下内容。

<?php <br>require_once 'config.php'; <br><br>$response = $db->loginRequired();<br>if (!$response) {<br>    header('Location: login.php');<br>    exit;<br>}<br><br>$id = (int) $_GET['id'];  <br>$stmt = $db->使用PHP和MySQL构建新闻通讯系统Query($id);<br>$_SESSION['success'] = "Newsletter 使用PHP和MySQL构建新闻通讯系统d."; <br><br>header('Location: newsletters.php');<br>?><br>
登录后复制
这个页面与其他新页面非常相似,但是添加了较小的内容。在创建一个新的消息条目后,我们找到了最新的插入ID。

该页面看起来像这样:

使用PHP和MySQL构建新闻通讯系统接下来,我们将用户重定向到第二步。让我们创建使用以下内容的下拉式菜单。接下来,我们首先要有订户表。接下来,对于每个选定的新闻通讯,我们将在 subpcriptions表中创建一个条目。

CREATE TABLE `subscribers` ( <br>    `id` tinyint(10) AUTO_INCREMENT, <br>    `name` varchar(50), <br>    `email` varchar(50), <br>    PRIMARY KEY (`id`) <br>) ENGINE=MyISAM DEFAULT CHARSET utf8;<br>
登录后复制

subscriptions接下来,让我们创建

preperences.php使用PHP和MySQL构建新闻通讯系统page。

>>它用于允许用户保存其新闻通讯的首选项。

>首先,当表单加载时,它看起来像此。
CREATE TABLE `messages` ( <br>   `id` tinyint(10) AUTO_INCREMENT, <br>   `subject` varchar(255), <br>   `leftcol` text, <br>   `rightcol` text, <br>   `template_id` tinyint(10), <br>   PRIMARY KEY (`id`) <br>) ENGINE=MyISAM DEFAULT CHARSET utf8;<br>
登录后复制

>单击

查找

>按钮时,它将用户进入下一页。使用PHP和MySQL构建新闻通讯系统

>

>使用PHP和MySQL构建新闻通讯系统>

保存我的首选项>按钮,它显示了下图中显示的页面。

在本节中,我们将构建最后一页,这允许我们发送消息。使用PHP和MySQL构建新闻通讯系统

,让我们创建

如下图中所示,

>文件。

>它用于构建表单,该表单首先列出了新闻通讯。当管理员选择新闻通讯并提交表格时,我们将检索订阅这些选定新闻通讯的订阅者。最后,我们向他们发送了一封电子邮件。

也必须注意,我使用Symfony Mailer库发送电子邮件。您可以使用以下摘要中所示的作曲家安装。您需要根据环境调整设置。要查看有关此主题的更多信息,您可以访问本文,该文章为Symfony Mailer库提供了深入的指南。
<?php <br>session_start(); <br>require_once 'database.php';<br><br>$mini = false;<br>$nonav = false;<br><br>error_reporting(0);<br><br>define('DB_SERVER', 'localhost');<br>define('DB_USER', 'root');<br>define('DB_PASSWORD', ''); <br>define('DB_NAME', 'tutsplus_ns_demo');<br>define('FROM_EMAIL', 'no_reply@ohyeahemail.com');<br>define('FROM_NAME', 'oh yeah email!');<br><br>$db = new Database(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME);<br>
登录后复制
登录后复制
登录后复制
登录后复制

>表格看起来像:现在,主页

>现在,让我们构建管理主页,该页面显示我们的应用程序的总体统计信息。
CREATE TABLE `users` ( <br>   `id` int(10) AUTO_INCREMENT, <br>   `username` varchar(50), <br>   `password` varchar(32), <br>   PRIMARY KEY (`id`) <br>) ENGINE=MyISAM DEFAULT CHARSET utf8; <br><br><br>INSERT INTO `users` (`id`, `username`, `password`) VALUES  ('1', 'admin', '5ebe2294ecd0e0f08eab7690d2a6ee69');<br>
登录后复制
登录后复制
登录后复制
>

让我们创建

admin/index.php使用PHP和MySQL构建新闻通讯系统file具有以下内容。

>

,看起来像这样:

<?php <br>require_once 'config.php'; <br><br>$response = $db->loginRequired();<br>if (!$response) {<br>    header('Location: login.php');<br>    exit;<br>}<br>$title = "Newsletters"; <br>$newsletters = $db->query("SELECT * FROM newsletters ORDER BY id ASC");<br><br>$tab = 'nl'; <br>$table = ""; <br><br>foreach($newsletters as $row) {<br>    $dlink = '<a href="newsletters_%E4%BD%BF%E7%94%A8PHP%E5%92%8CMySQL%E6%9E%84%E5%BB%BA%E6%96%B0%E9%97%BB%E9%80%9A%E8%AE%AF%E7%B3%BB%E7%BB%9F.php?id='.%24row%5B'id'%5D.'" onclick="return confirm(\'Are you sure you want to 使用PHP和MySQL构建新闻通讯系统 this newsletter?\');" title="使用PHP和MySQL构建新闻通讯系统"><img src="/static/imghw/default1.png" data-src="media/images/使用PHP和MySQL构建新闻通讯系统.png" class="lazy" alt="使用PHP和MySQL构建新闻通讯系统"></a>';<br>    $elink = '<a href="newsletters_edit.php?id='.%24row%5B'id'%5D.'" title="edit"><img src="/static/imghw/default1.png" data-src="media/images/page_edit.png" class="lazy" alt="edit"></a>';<br>    if($row['visible'] == "1") {<br>        $visible = '<img  src="/static/imghw/default1.png" data-src="media/images/bullet_green.png" class="lazy" alt="使用PHP和MySQL构建新闻通讯系统" >';} else {$visible = '<img  src="/static/imghw/default1.png" data-src="media/images/bullet_red.png" class="lazy" alt="使用PHP和MySQL构建新闻通讯系统" >';<br>    }<br>    $table .= "<tr>
<td>".$row['id']."</td>
<td>".$row['name']."</td>
<td>".$row['description']."</td>
<td>$visible</td>
<td>".$dlink." ".$elink."</td>
</tr>\n";<br>} <br><br>$message = $db->errorMessages();<br>$content = '';<br>$content .= '<a href="newsletters_new.php">Add New Newsletter »</a> ';<br>$content .= $message;<br>$content .= '
登录后复制
登录后复制







';
$content .= $table;
$content .= '
name description visible
';

include 'layout.php';
?>

那,我们也达到了本文的结尾。我们在教程中介绍了很多基础,从头开始创建了一个新闻通讯应用!使用PHP和MySQL构建新闻通讯系统>

以上是使用PHP和MySQL构建新闻通讯系统的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板