收藏 分销(赏)

五、PHP通过mail或Socket发从邮件.ppt

上传人:精*** 文档编号:2997232 上传时间:2024-06-12 格式:PPT 页数:50 大小:512.54KB 下载积分:16 金币
下载 相关 举报
五、PHP通过mail或Socket发从邮件.ppt_第1页
第1页 / 共50页
五、PHP通过mail或Socket发从邮件.ppt_第2页
第2页 / 共50页


点击查看更多>>
资源描述
五、PHP通过mail或Socket发从邮件PHP通过通过mail()或或Socket发从邮件发从邮件1、PHP中发送邮件的方式中发送邮件的方式PHP发送邮件是发送邮件是“非常的简单非常的简单”因为他提供了因为他提供了mail()函数直接发送,但这也继函数直接发送,但这也继 register globals 成为了对初学者的第二大杀手。成为了对初学者的第二大杀手。(1)通过)通过mail()函数发送邮件函数发送邮件mail()需要类似需要类似sendmail这样的组件支持这样的组件支持配置配置PHP.ini 邮件信息邮件信息(2)通过)通过socket通讯,使用通讯,使用SMTP传输传输socket连接连接SMTP通讯通讯获取通讯消息发送2PHP通过通过mail()或或Socket发从邮件发从邮件2、mail函数的使用函数的使用mail()函数允许您从脚本中直接发送电子邮件。函数允许您从脚本中直接发送电子邮件。如果邮件的投递被成功地接收,则返回如果邮件的投递被成功地接收,则返回 true,否则返回,否则返回 false。mail(to,subject,message,headers,parameters)to 必需。规定邮件的接收者。必需。规定邮件的接收者。subject 必需。规定邮件的主题。该参数不能包含任何换行字符。必需。规定邮件的主题。该参数不能包含任何换行字符。message 必需。规定要发送的消息。必需。规定要发送的消息。headers 可选。规定额外的报头,比如可选。规定额外的报头,比如 From,Cc 以及以及 Bcc。parameters 可选。规定可选。规定 sendmail 程序的额外参数。程序的额外参数。Sendmail 的支持的支持PHP.ini 的配置的配置 3PHP通过通过mail()或或Socket发从邮件发从邮件3、socket方式发送原理方式发送原理使用使用fsockopen函数打开一个函数打开一个Internet连接连接fsockopen(string hostname,int port,int errno,string errstr,int timeout);这里由于要使用这里由于要使用SMTP协议,所以端口号为协议,所以端口号为25。在打开连接成功后,会返回一。在打开连接成功后,会返回一 个个socket句柄,使用它就可以象使用文件句柄一样的。可使用的操作有句柄,使用它就可以象使用文件句柄一样的。可使用的操作有fputs(),fgets(),feof(),fclose()220 服务就绪服务就绪(在在socket连接成功时,会返回此信息连接成功时,会返回此信息)221 正在处理正在处理 250 请求邮件动作正确,请求邮件动作正确,354 开始发送数据,结束以开始发送数据,结束以.500 语法错误,命令不能识别语法错误,命令不能识别 550 命令不能执行,邮箱无效命令不能执行,邮箱无效 552 中断处理:用户超出文件空间中断处理:用户超出文件空间 了解原理即可了解原理即可4学习目标学习目标1、什么是、什么是MVC2、为什么要使用、为什么要使用 MVC3、认识一个、认识一个MVC框架框架ThinkPHP4、如何搭建一个、如何搭建一个ThinkPHP5、ThinkPHP的简单使用的简单使用PHP中中MVC学习之学习之ThinkPHP5PHP中中MVC学习之学习之ThinkPHP1、什么是、什么是MVCMVC本来是存在于本来是存在于Desktop程序中的,程序中的,M是指数据模型,是指数据模型,V是指用户界面,是指用户界面,C则是控制器。使用则是控制器。使用MVC的目的是将的目的是将M和和V的实现代码分离的实现代码分离MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用用MVC应用程序被分成三个核心部件:应用程序被分成三个核心部件:模型、视图、控制器模型、视图、控制器。它们各自处理。它们各自处理自己的任务。自己的任务。6PHP中中MVC学习之学习之ThinkPHP2、为什么要使用、为什么要使用 MVC首先,最重要的一点是多个视图能共享一个模型,现在需要用越来越多的方式来访首先,最重要的一点是多个视图能共享一个模型,现在需要用越来越多的方式来访问你的应用程序。由于模型返回的数据没有进行格式化,所以同样的构件能被不同问你的应用程序。由于模型返回的数据没有进行格式化,所以同样的构件能被不同界面使用。界面使用。再次,开发周期缩短、方便维护和管理降低开发成本和工作量。再次,开发周期缩短、方便维护和管理降低开发成本和工作量。任何一个事物也会有缺点,我们来看一下:任何一个事物也会有缺点,我们来看一下:MVC的缺点是由于它没有明确的定义,所以完全理解的缺点是由于它没有明确的定义,所以完全理解MVC并不是很容易。使用并不是很容易。使用MVC需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。MVC并不适合小型甚至中等规模的应用程序,花费大量时间将并不适合小型甚至中等规模的应用程序,花费大量时间将MVC应用到规模并不应用到规模并不是很大的应用程序通常会得不偿失。是很大的应用程序通常会得不偿失。7PHP中中MVC学习之学习之ThinkPHP3、认识一个、认识一个MVC框架框架ThinkPHPThinkPHP是一个快速、简单的面向对象的轻量级是一个快速、简单的面向对象的轻量级PHP开发框架,遵循开发框架,遵循Apache2开源开源协议发布,并且永久免费使用,是为了简化企业级应用开发和敏捷协议发布,并且永久免费使用,是为了简化企业级应用开发和敏捷WEB应用开发而应用开发而诞生的。使用诞生的。使用ThinkPHP,你可以更方便和快捷的开发和部署,你可以更方便和快捷的开发和部署WEB应用应用简单易用的简单易用的MVC模式模式 独创的核心编译和项目编译机制独创的核心编译和项目编译机制 内置内置 XML模板引擎,支持标签库模板引擎,支持标签库 富模型支持富模型支持 目录结构自动创建目录结构自动创建 分布式数据库支持分布式数据库支持 多数据库连接和切换支持多数据库连接和切换支持CURD和操作高度自动化支持和操作高度自动化支持 特点特点8PHP中中MVC学习之学习之ThinkPHP4、如何搭建一个、如何搭建一个ThinkPHP下载下载ThinkPHP框架包,直接引用目录中的框架包,直接引用目录中的 ThinkPHP.php 文件即可文件即可define(THINK_PATH,ThinkPHP/);define(APP_NAME,php100);define(APP_PATH,.);require(THINK_PATH./ThinkPHP.php);$App=new App();/实例化操作系统会自动创建开发目录实例化操作系统会自动创建开发目录$App-run();9PHP中中MVC学习之学习之ThinkPHP5、ThinkPHP的简单使用的简单使用ThinkPHP基本结构基本结构10PHP中中MVC学习之学习之ThinkPHP5、ThinkPHP的简单使用的简单使用(1)ThinkPHP如何创建一个控制器如何创建一个控制器(2)ThinkPHP URL路由模的解析路由模的解析 ThinkPHP采用单一入口方式,采用单一入口方式,提供了一个提供了一个URL路由模式解析路由模式解析/11学习目标学习目标1、ThinkPHP配置文件配置文件2、ThinkPHP数据库操作数据库操作3、ThinkPHP模板的使用模板的使用4、实例操作、实例操作PHP中中MVC学习之学习之ThinkPHP12PHP中中MVC学习之学习之ThinkPHP1、ThinkPHP配置文件配置文件ThinkPHPCommonconvention.php/*模块和操作设置模块和操作设置*/DEFAULT_MODULE =Index,/默认模块名称默认模块名称DEFAULT_ACTION =index,/默认操作名称默认操作名称/*错误设置错误设置*/DEBUG_MODE =false,/调试模式默认关闭调试模式默认关闭/惯例配置定义惯例配置定义 变量名大小写任意,都会统一转换成小写变量名大小写任意,都会统一转换成小写/如果要覆盖惯例配置的值,请在项目配置文件中设置如果要覆盖惯例配置的值,请在项目配置文件中设置/所有配置参数都可以在生效前动态改变所有配置参数都可以在生效前动态改变13PHP中中MVC学习之学习之ThinkPHP2、ThinkPHP数据库操作数据库操作操作数据库前我们需要在配置文件中加入数据库连接操作数据库前我们需要在配置文件中加入数据库连接 DB_TYPE=mysql,DB_HOST=localhost,DB_NAME=think_Php100,DB_USER=root,DB_PWD=,DB_PORT=3306,DB_PREFIX=think_,接下来,我们在接下来,我们在LibModel目录下面创建一个目录下面创建一个BlogModel.class.php 文件,内容如下:文件,内容如下:class BlogModel extends Model 建立一个空的模块就可以了建立一个空的模块就可以了因为我们继承了因为我们继承了Model假设我们建立了一个假设我们建立了一个think_blog表表14PHP中中MVC学习之学习之ThinkPHP2、ThinkPHP数据库操作数据库操作定义了模型类,我们还需要修改定义了模型类,我们还需要修改Action类的操作方法,来获取数据并显示出来。类的操作方法,来获取数据并显示出来。我们把原来默认执行的我们把原来默认执行的index操作方法修改成下面的代码:操作方法修改成下面的代码:class IndexAction extends Action public function index()$Blog=new BlogModel();$list=$Blog-findAll();dump($list);15PHP中中MVC学习之学习之ThinkPHP2、ThinkPHP数据库操作数据库操作16PHP中中MVC学习之学习之ThinkPHP3、ThinkPHP模板的使用模板的使用到目前为止,我们只是使用了控制器和模型,还没有接触视图,下面来给上面的应用到目前为止,我们只是使用了控制器和模型,还没有接触视图,下面来给上面的应用添加视图模板。添加视图模板。首先我们修改下首先我们修改下Action的的index操作方法,添加模板赋值和渲染模板操作。操作方法,添加模板赋值和渲染模板操作。class IndexAction extends Action public function index()$Blog=new BlogModel();$list=$Blog-findAll();$this-assign(title,ThinkPHP示例示例);$this-assign(list,$list);$this-display();Smarty风格风格$title$vo.title$vo.content17学习目标1、PHPer应具备的知识2、PHP开发的一般流程3、多人开发应注意些什么?如何用PHP开发一个完整的网站引言:一个清楚的目标定位学习PHP才更有动力和方向,约有30%的PHPer因为学习到一半而没有明确的方向而最终放弃或搁浅。18如何用PHP开发一个完整的网站1、PHPer应具备的知识(1)、PHP知识:熟练掌握基础函数,PHP语句,数组,函数,运算,面向对象 知识条件 循环排序 读取内部 构造 数学 逻辑继承 接口 封装 多态 静态属性了解 Cookie 或者 Session 一种机制了解一种模板操作机制和使用手头收藏一些好的常用类或方法,能提高我们的开发的速度。如:分页、上传、字符过滤、数据库操作、生成HTML、文件操作等。19如何用PHP开发一个完整的网站1、PHPer应具备的知识(2)、XHTML知识:掌握HTML,Dreamweaver、常用标签、表格、分桢框架、表单,Header处理了解GBK UTF8 编码的区别,能读懂CSS样式(3)、JavaScript事件处理:window对象、document对象、location对象、form对象/表单的处理(4)、数据库知识:SQL语句“查插改删”会使用一种SQL工具20如何用PHP开发一个完整的网站2、PHP开发的一般流程需求和方案建模结构 UML设计数据库PHPcode模板的设计调试21如何用PHP开发一个完整的网站2、PHP开发的一般流程1、尽量完整的需求方案,具体到功能上:1、用户注册:用户名、密码、电话、邮箱、Email、家庭住址;2、用户类型:正常用户、审核中、冻结;3、新闻发布:新闻类型、发布人、发布时间、4、新闻排版:支持图片上传、在线Word编辑、过滤非法词语2、建模结构 UML注册验证发送邮件数据库可以通过UML工具建立专业的模或自己画一个简单的关系图22如何用PHP开发一个完整的网站2、PHP开发的一般流程23如何用PHP开发一个完整的网站2、PHP开发的一般流程(3)、建立数据库1、建立的表名、字段名要及他的功能有关系,如 state、regdate、hit英文不好的拼音同样可以2、根据结构建立数据库表,原则是不定项内容一定要分表。3、字段类型要考虑内容是否够用就好,选择适合的类型 INT Varchar Date(4)、设计HTML文件和脚本的实现 根据模和数据库来设计页面是个很科学的方法,当然有的时候有人喜欢根据模型设计页面,数据库基于页面设计,都是可以的。设计页面时要考虑到每个细节,包括提示消息页面,错误页面。24如何用PHP开发一个完整的网站2、PHP开发的一般流程(5)、PHP代码的书写 1、先建立底层结构和文件夹(如果是大型的网站同样设计一个文件UML)2、基础功能分类关联,以便今后代码引用。3、代码的书写,注意简洁性和函数的使用,内部函数能实现的尽量用内部函数 4、在部分关键位置加以代码注释。(6)、程序的测试和修正 1、对于发现的BUG不能就解决BUG而解决,要处于完整程序考虑。避免 收之东隅失之桑榆。2、对于解决过的BUG已经要详细记录,以便日后更新。25如何用PHP开发一个完整的网站3、多人开发应注意些什么?多人开发存在着一个很严重的问题就是多人同时修改和编辑同一个文件时产生的问题和冲突。这时候就需要我们使用一种叫做版本服务的软件来帮助我们解决这个问题。版本服务器有很多种,我们常见的有CVS、SVN功能:1、单个文件历史版本的记录和恢复 2、文件的锁定和更新 3、单个或多个文件程序之间的沟通 4、保护程序的安全性不受单个程序的误操作而丢失多人开发还要主意每个程序员之间的分配合理性,前台程序和美工的沟通。26学习目标1、PHPMyAdmin 简单配置和安装2、PHPMyAdmin 数据库的操作(十项功能)PHPMyAdmin 备份,导入,创建,修改,删除教程27PHPMyAdmin 备份,导入,创建,修改,删除教程1、PHPMyAdmin 简单配置和安装(1)下载PHPMyAdmin压缩包,直接解压到网站或开发目录即可(2)修改PHPMyAdmin配置文件首先找到Wamp中自带可省$cfgPmaAbsoluteUri=;$cfgServers$ihost =localhost;/MySQL hostname or IP address$cfgServers$iport =;/MySQL port-leave blank for default port$cfgServers$iuser =root;/MySQL user$cfgServers$ipassword =;/MySQL password(only needed修改如下28PHPMyAdmin 备份,导入,创建,修改,删除教程2、PHPMyAdmin 数据库的操作 创建一个mysql数据库 创建一个mysql数据库表并添加字段 原表中插入新字段 修改字段类型,功能,名称 修改表类型名称编码 修改数据库基本信息和配置 PHPMyAdmin 一些常有选项卡的使用 导出几种类型的表或数据库 导入表或数据库 数据简单优化和一些其他操作如何?29学习目标1、定义 header()头部输出格式2、输出编码和支持的格式PHP输出CSV和EXCEL两种简单的方法30PHP输出CSV和EXCEL两种简单的方法1、定义 header()头部输出格式header(Content-type:application/vnd.ms-excel);header(Content-Disposition:php100.xls);定义输出的文件类型定义输出的文件名31PHP输出CSV和EXCEL两种简单的方法2、输出编码和支持的格式(1)支持普通格式的CSV 文本规范,以空格和换行来识别常用:t n 填充空白和换行(2)支持简单的HTML代码和表格规范常用:table 规范,表格合并规范,Font标签规范 PHP100财务统计 t10t11t12 t20t21t22 均支持EXCEL运算语法如:=A1+B132学习目标1、ajax是什么及其工作原理2、创建XMLHttpRequest对象3、XMLHttpRequest对象相关方法Ajax+PHP快速上手及应用33Ajax+PHP快速上手及应用1、ajax是什么及其工作原理Ajax 由 HTML、JavaScript 技术、DHTML 和 DOM 组成,这一杰出的方法可以将笨拙的 Web 界面转化成交互性的 Ajax 应用程序。HTML页面JS脚本PHP文件触发脚本执行反应34Ajax+PHP快速上手及应用2、创建XMLHttpRequest对象对于Ajax,最核心的一个对象是XMLHttpRequest,所有的Ajax操作都离不开对这个对象的操作xmlHttp=new XMLHttpRequest();首先我们来了解怎么在javascript中创建这个对象:JS代码:这对于规范的Js支持的浏览器来讲是没错的恰恰相反IE却就不支持,所以没办法我们只能做个判断再创建一个IE支持的xmlHttp=new ActiveXObject(Microsoft.XMLHTTP);35Ajax+PHP快速上手及应用3、XMLHttpRequest对象相关方法XMLHttpRequest.open(传递方式,地址,是否异步请求)XMLHttpRequest.onreadystatechangeXMLHttpRequest.responseText打开请求准备就绪执行获取执行结果36学习目标1、解答48讲Ajxa常见问题2、方法XHR.readyState五种状态3、方法XHR.status常见的几种状态4、实例操作并学习一个PHP等待函数SleepAjax+PHP打造等待进度条效果37Ajax+PHP打造等待进度条效果1、解答48讲Ajxa常见问题(1)js脚本缓存问题 答:这个问题是大家遇到最常见问题之一,因为修改了js内容调试的时候并不能显示新写代码的结果,是因为js为了加速页面执行,当前页面会使用缓存保持当前调用的相同连接。为了开发时调试方便可以在连接地址的后面增加一个随机函数。如原地址:for.php 增加随机后 for.php1293874(2)本地调试js脚本不起作用 答:因为使用ajxa传递参数的时候需要head支持,所以我们只有在站点下才可以成功,比如我们放在Apache下面或者IIS下面进行调试。(3)调试代码查找错误困难 答:这是js调试存在已久的问题,简单点我们可以使用ie默认提示的错误框,还有就是我们可以使用DW CS4提供的纠正错误,或者通过专业的插件如:firbug 等38Ajax+PHP打造等待进度条效果2、方法XHR.readyState五种状态0:请求未初始化,还没有调用 open()。1:请求已经建立,但是还没有发送,还没有调用 send()。2:请求已发送,正在处理中(通常现在可以从响应中获取内容头)。3:请求在处理中;通常响应中已有部分数据可用了,没有全部完成。4:响应已完成;您可以获取并使用服务器的响应了。XHR.readyState=状态(0,1,2,3,4)39Ajax+PHP打造等待进度条效果3、方法XHR.status常见的几种状态100客户必须继续发出请求101客户要求服务器根据请求转换HTTP协议版本200成功201提示知道新文件的URL300请求的资源可在多处得到301删除请求数据404没有发现文件、查询或URl500服务器产生内部错误XHR.status=200,300,404 等40Ajax+PHP打造等待进度条效果4、实例操作并学习一个PHP等待函数SleepSleep函数,可以理解为等待函数或者睡眠函数,执行到该函数根据设置的时间再继续往下执行sleep(秒)Ajax+PHP打造等待进度条效果实例操作Lets GO41学习目标1、Ajax技术实现用户名检查原理2、学习HTML的几种触发3、如何获取表单中的数据内容Ajax+PHP检查用户名或邮件42Ajax+PHP检查用户名或邮件1、Ajax技术实现用户名检查原理填入用户名触发控件获得填写内容ajax传递查询数据库返回结果DOM反应到页面学习重点:1、页面触发的几种类型 2、获取表单内容 3、数据库查询技巧43Ajax+PHP检查用户名或邮件2、学习HTML的几种触发onblur 事件会在对象失去焦点时发生。onchange 事件会在域的内容改变时发生。onclick 事件会在对象被点击时发生。onfocus 事件在对象获得焦点时发生。onkeydown 事件会在用户按下一个键盘按键时发生。onkeypress 事件会在键盘按键被按下并释放一个键时发生。onkeyup 事件会在键盘按键被松开时发生。onmousedown 事件会在鼠标按键被按下时发生。onmousemove 事件会在鼠标指针移动时发生。onmouseout 事件会在鼠标指针移出指定的对象时发生。onmouseup 事件会在鼠标按键被松开时发生。44Ajax+PHP检查用户名或邮件3、如何获取表单中的数据内容form name=myform codedocument45学习重点会员系统的原理及其安全PHP+MYSQL会员系统的开发46PHP+MYSQL会员系统的开发会员系统的原理登陆判断保持状态CookieSessionP1P2P3P4P5验证状态及其权限会员系统的安全1、学会使用常量提高md5安全性2、Cookie/Session 少用明文信息3、Session安全性要大于Cookie4、使用Cookie/Session读取信息 尽量增加判断信息5、Cookie/Session内容要精简6、对于错误信息及时销毁Cookie/Session47学习重点会员系统简单的多层处理和状态PHP+MYSQL会员系统的开发48PHP+MYSQL会员系统的开发最高权限顺势级别多层处理次一级次二级次三级无交叉,实现顺序权限控制,可实现多层,也就是上一层永远大于下一层的权限,常用在留言板,CMS、后台论坛等程序当中,不适合在ERP,OA等类型系统中使用设置技巧:为了实现权限的无限层级配置,最高层应使用最小值来做权限标志位,方便下行可用无线累计的空间49PHP+MYSQL会员系统的开发会员登录超时mktime(int hour,int minute,int second,int month,int day,int year,int is_dst)通过动作时间,如果动作时间超时便踢出!使用mktime是个很好的时间计算函数可以方便的计算时间差。最小单位是秒。实例操作50
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服