分享php邮件管理器源码

yipeiwu_com5年前PHP代码库

本文为大家提供了php邮件管理器源码,希望大家喜欢。
1、需求分析
管理员应该能够建立和修改邮件内容。
管理员应该能够将文本或HTML格式的新闻信件发送给一个列表中的所有订阅者。
用户应该能够通过注册使用一个站点,并且可以进入并修改他们的个人资料。
用户应该能够订阅该站点的任意一个列表的新闻信件。
用户应该能够取消一个邮件列表的订阅。
用户应该能够根据个人喜好以HTML格式或纯文本格式存储新闻信件。
处于安全的原因,用户应该不能将邮件发送到列表,或者不能看见其他用户的邮件地址。
用户和管理员应该能够查看有关邮件列表的信息。
用户和管理员应该能够查看过去已经噶送给某个列表(存档文件)上的新闻信件。

2、解决方案
2.1 用户权限图

2.2 邮件列表管理器中的文件列表

2.3 邮件列表管理器中可能的操作

3、实现数据库

CREATE DATABASE mlm; #创建mlm数据库 
 
use mlm; #使用mlm数据库 
 
CREATE TABLE lists #列表 
( 
 listid INT AUTO_INCREMENT NOT NULL PRIMARY KEY, #列表ID 
 listname CHAR(20) NOT NULL, #列表名 
 blurb VARCHAR(255) #列表主要内容 
); 
 
CREATE TABLE subscribers #订阅者 
( 
 email CHAR(100) NOT NULL PRIMARY KEY, #邮箱 
 realname CHAR(100) NOT NULL, #真实姓名 
 mimetype CHAR(1) NOT NULL, #想要接收邮件类型 
 password CHAR(40) NOT NULL, #密码 
 admin TINYINT NOT NULL #管理员标记 
); 
 
CREATE TABLE sub_lists #订阅-列表关系表 
( 
 email CHAR(100) NOT NULL, #邮件 
 listid INT NOT NULL #列表ID 
); 
 
CREATE TABLE mail #邮件表 
( 
 mailid INT AUTO_INCREMENT NOT NULL PRIMARY KEY, #邮件ID 
 email CHAR(100) NOT NULL, #发送方 
 subject CHAR(100) NOT NULL, #主题 
 listid INT NOT NULL, #列表ID 
 status CHAR(10) NOT NULL, #邮件状态,是否被发送 
 sent DATETIME, #发送时间 
 modified TIMESTAMP #最后一次修改时间戳 
); 
 
CREATE TABLE images #图像表 
( 
 mailid INT NOT NULL, #邮件ID 
 path CHAR(100) NOT NULL, #路径 
 mimetype CHAR(100) NOT NULL #图片类型 
); 
 
GRANT SELECT,INSERT,UPDATE,DELETE #创建mlm用户 
ON mlm.* 
TO mlm@localhost IDENTIFIED BY 'password'; 
 
#插入订阅者标记 
INSERT INTO subscribers VALUES 
('admin@localhost','Administrative User','H',SHA1('admin'),1); 
 
INSERT INTO subscribers VALUES 
('Switch_1@switch.com','Administrative User','H',SHA1('admin'),1); 

希望本文所述对大家学习php程序设计有所帮助。

相关文章

PHP5.0 TIDY_PARSE_FILE缓冲区溢出漏洞的解决方案

漏洞说明 不得不再次吐槽一下exploit-db对exp审核的质量,这个exp仍然不能触发漏洞,修改第一个参数则可以触发,我给出的poc是一个可以触发php漏洞的,问题出现在php_ti...

PHP中的session永不过期的解决思路及实现方法分享

我们前期开发了一个只有公司客服人员才能使用的系统——有限的几个客服人员。就是这有限的几个客服人员前几天突然就提出这样的问题:我们每隔很短一段时间 (半个小时不操作页面),正着急解决客户问...

PHP实现删除多重数组对象属性并重新赋值的方法

本文实例讲述了PHP实现删除多重数组对象属性并重新赋值的方法。分享给大家供大家参考,具体如下: 实例:sphinx搜索出来的结果,要去掉某个属性值: $cl = new Sphinx...

PHP延迟静态绑定示例分享

没怎么用过这个新特性,其实也不算新啦,试试吧,现在静态类的继承很方便了 <?php class A { protected static $def = '123456...

PHP框架Laravel插件Pagination实现自定义分页

Laravel 的分页很方便,其实扩展起来也挺容易的,下面就来做个示例,扩展一下 paginate() 和 simplePaginate() 方法,来实现我们自定义分页样式,比如显示 "...