在2015 年的今天,PHP 还具有开发效率的2015优势日语估分器吗

 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
年基于PHP的CMS网站系统开发及应用
下载积分:600
内容提示:年基于PHP的CMS网站系统开发及应用
文档格式:DOC|
浏览次数:11|
上传日期: 02:00:30|
文档星级:
该用户还上传了这些文档
年基于PHP的CMS网站系统开发及应用
官方公共微信漫谈社区PHP业务开发 提高效率缩短开发周期-阿里云资讯网
漫谈社区PHP业务开发 提高效率缩短开发周期
发布时间:
更新时间:
来源:网络
作者:天天小马甲
  中介交易 /zixun/aggregation/6858.html&&SEO诊断 淘宝客 云主机 技术大厅  
  在当前这个飞速发展时期,新的产品如雨后春笋般涌出,老产品线新业务也在不断突破和尝试。这就对快速开发迭代提出了更高的要求。
  一、基础运行环境
  针对新产品的开发,必须能够快速搭建一套LAMP架构。那么无外乎选择一个webserver,选择一个php版本,选择一个mysql版本,再选择一个PHP开发框架和选择一些php通用扩展和基础库等。这个过程读者可能已经很快了,能不能?
  选择的过程要求研发同学对相关技术方向有一定的积累,权衡和优先点,又是一番调研和学习。如果有一键安装程序,提供自动化安装webserver,php,mysql,以及携带高性能灵活的php开发框架,并提供标准化、安全、常用的配置文件,可以大大缩短产品线LAMP系统调研的成本,缩短工作周期。
  一键安装四步骤:(1)下载;(2)少量配置;(3)(4)(当然有end啦,简单的运维工具),运行环境OK。
  二、业务开发框架
  社区产品线各自为政,封闭得开发各自的业务逻辑。而事实上,各个产品线之间存在很多通用业务逻辑处理,如session验证、权限判断、参数验证、日志打印等。不同产品线,所有请求都需要做这些处理,能不能不重复开发?无线业务开发和PC上的业务逻辑有很多的不同,但不同产品线之间也有很多通用性。能不能不重复开发?
  产品线在内部通常对这些通用逻辑的处理做了一定的抽象,设计为ActionChain的形式或者通过基类的方案。框架将更彻底:将这些所有请求都要处理的通用逻辑以业务逻辑框架的形式提供,研发同学只需要关注用户请求专有的逻辑处理。
  一个用户请求的处理逻辑如下图:蓝色部分是控制器框架处理流程,绿色部分和控制器框架相结合,处理所有请求通用的业务逻辑。而真正需要研发同学关注和开发的该用户请求专有的业务处理,即黄色部分(当然一个不仅仅是一个Action脚本,一个请求的处理会横向做mvc分层,这块后续会有涉及。)
  业务逻辑框架继承在一键安装程序中提供,简简单单就可以获得。
  原生的PHP业务和模板耦合很深,没有做任何的分层设计,其结果是代码的复用性差。这样的原始的PHP系统现在已几乎消亡。PHP开发框架统一处理路由、渲染、AutoLoad,通用业务逻辑的抽象和基础库的抽象,专有业务MVC分层,已大大加快了产品线业务逻辑的开发。如下图所示:
  从上而下,分别是接入层(高性能webserver),PHP开发框架(路由、自动加载、视图引擎等),应用和基础库,存储引擎。
  三、通用服务
  社区产品线存在很多共同的需求,如日志处理、配置文件的处理、字符串处理、数据库交互、网络交互等。这些算法和工具封装成phplib给产品线使用已比较成熟。
  社区类产品线的业务功能存在很多的通用性,诸如评论功能、Tag功能、好友功能、图册、任务系统等,在众多社区产品线都有类似的新功能新需求,各自设计开发?
  这些需求在各产品线的UI上有个性化需求,后端实现方案大同小异,具有一定的通用性。功能服务化,提供API接口给不同产品线使用,产品线只需要关注展现逻辑和私有数据的处理逻辑即可,且服务统一运维,降低产品下的系统复杂度。
  四、垂直拆分子系统
  那么随着我们业务的拓展,单个应用内部的ui和module的数量越来越多,Action和Logic(对应MVC中的M层,内部可以再进一步做分层处理,此次不详述)的交互,logic和logic之间的交互变得越来越复杂。开发同学需要了解整个应用的逻辑,某个logic的升级,需要排查整个应用下是否存在其他ui或logic的反向依赖。在快速开发的要求下,开发同学对logic之间的相互耦合关系的梳理不清楚,势必引发越来越多的问题,影响项目质量,难以开始开发。
  单一系统的问题暴露越来越多,就到了系统拆分的时候了。如何拆?按业务逻辑垂直拆分。将功能独立的业务逻辑剥离出来,做成独立的子系统。这个时候还需要考虑业务的通用性,是否可以服务化?应用已有相同需求的通用服务?此时通用业务逻辑封装成通用服务或使用了通用服务,旁路的业务逻辑独立成子系统,如此一来就将原先单一庞大的系统做了减负。完成此阶段的重构后,系统加入变成如下:
  单一系统被拆分成多个APP(APP内部仍然有横向的MVC分层),并复用大量的通用服务。如此一来研发团队在人员分工并行开发上都得到了极大提高。
  五、跨系统调用框架
  然而真实的现状,在拆分后的子系统之间并不能完全消除依赖。为了解决多个子系统之间数据依赖的关系,需要一套统一的解决方案:API框架。子系统成为独立的应用(APP),APP之间存在相互的数据依赖,这些依赖以API的形式对外提供。如下图:
  当APP1依赖APP2或APP3的数据后,APP2和APP3会将一部分数据接口以API的形式提供,数据做统一的打包,通过标准规范的URL提供产品线内部其他APP调用。这种形式非常类似产品对外开放API(对第三方开放API,我们称为openAPI,遵守统一的协议,并经过必要的权限验证),而解决内部子系统之间数据依赖的API接口可以进一步简化。
  APP提供的API解决提供接口描述(输入、输出),处理API的URL,Logic的转发实现。API_LIB统一来管理所有的API接口,并提供统一的API_Server::call接口供调用。完全对上屏蔽内部的转发和实现细节。通常产品线内部为了达到运维的简化和统一,所有的子系统是同机部署的,API接口的会带来额外的网络消耗,以及增大qps。在此部署前提下,API_Server的实现方式可以通过HTTP调用或优化为直接PHPRequire方式实现。优势:
  (1)框架统一,接口收敛,业务解耦;
  (2)性能提升,高,扩展性高;
  六、UI拆分模型
  此时独立出来的子系统可以专注做其业务逻辑了,核心的系统也得到减负。但是核心系统的升级更新频率是最高的,业务逻辑也最复杂。到了一定时期,核心系统又变得臃肿,难以维护。此时可以通过一些设计模式来降低程序的可扩展性和可维护性。但即便是如此,还是有一定的学习成本,在一个App内部,开发同学或多或少需要关注其他模块的代码,逐渐发展为升级一点就需要排查很多点。这时候又到了进一步减负的时候。如果减负?分为两部:
  第一步:异步模型
  页面渲染分为两个阶段:主题页面数据和其他非主题页面数据。根据页面的不同部分由不同的数据源提供数据。按此逻辑将app进一步做垂直拆分。
  PHPService是由PHPmodule+一层很薄的UI,返回格式化数据。
  第二步:同步模型
  Module做拆分,不同业务逻辑拆分为不同的Module,区分为多个数据源,分别提供不同数据内容,由统一的UI调度不同的数据源后,统一进行渲染页面返回响应。
  如此持续减负后,产品线内部的子系统和模块将越来越多,需要维持部署和运维的统一。对团队成员的分工很细,业务理解很专注和,合作、并行的效率也会更高,从而使整个开发周期缩短。
  七、 小结
  随着业务逻辑的不端壮大,每个子系统或模块的业务功能如果过于臃肿就需要不断做减分,以保持在可控的规模内。如此随着产品的发展,产品线内部的子系统和模块将越来越多,需要维持部署和运维的统一,保持简单。对团队成员的分工更细,业务理解保持专注和深入,合作、并行的效率也会更高,从而使整个开发周期缩短。
本站所有文章全部来源于互联网,版权归属于原作者。本站所有转载文章言论不代表本站观点,如是侵犯了原作者的权利请发邮件联系站长(yanjing@),我们收到后立即删除。
摘要: 随着国际互联网的飞速发展,近几年国内涌现许多的投资创业者,这让原本冷门的行业变的热门,让本来热门的行业变的更加水深火热。在这种严峻的形势下,创业者如何在激烈的竞争   随着国际互联网的飞速发展,近几年国内涌现许多的投资创业者,这让原本冷门的行业变的热门,让本来热门的行业变的更加水深火热。在这种严峻的形势下,创业者如何在激烈的竞争中让网站脱颖而出荣获盈利呢,这是网站运营者值得深思的问题...
摘要: 百度权重查询 站长交易 友情链接交换 网站监控 服务器监控 SEO监控 产品经理一定要对数据敏感,从数据中要读出产品的趋势、变化的原因以及应对方法。网站访问量变化分析是网站分 百度权重查询 站长交易 友情链接交换 网站监控 服务器监控 SEO监控 产品经理一定要对数据敏感,从数据中要读出产品的趋势、变化的原因以及应对方法。网站访问量变化分析是网站分析的基础,下面简单地说一下我对访问量...
摘要: 在与大家畅谈站点的访客忠诚度之前,我们先来谈谈国内大多数中小型站点的发展谋生之路。我们可以简单的归纳为三大方面:内容、访客与搜索引擎,这三者唇齿相依缺一不可,而相   在与大家畅谈站点的访客忠诚度之前,我们先来谈谈国内大多数中小型站点的发展谋生之路。我们可以简单的归纳为三大方面:内容、访客与搜索引擎,这三者唇齿相依缺一不可,而相较于大型站点的资源丰富,中小型站点的发展重点往往都是集中...
网站运营.术势气
摘要: 站长朋友们一定都希望自己的网站每天有很多访问者,但是一分耕耘一分收获,网站的访问量往往是与站长的运营密切相关的,运营绝对是一个技术活,我们认为运营需要在术势气三个 站长朋友们一定都希望自己的网站每天有很多访问者,但是一分耕耘一分收获,网站的访问量往往是与站长的运营密切相关的,运营绝对是一个技术活,我们认为运营需要在术势气三个方面做好才能将网站推出去。 【术,就是讲究方向与取舍,是掌握...
摘要: 风萧萧兮易水寒,走上站长这条道路是不是就注定了不复返?作为新手站长,总是会在建站的过程中遇到这样或者那样的问题。而这些问题,我们都不知所措。不过这个社会总是会有那些 风萧萧兮易水寒,走上站长这条道路是不是就注定了不复返?作为新手站长,总是会在建站的过程中遇到这样或者那样的问题。而这些问题,我们都不知所措。不过这个社会总是会有那些无私的人,当你向他们求助的时候,他们会用自己的经验来为你...
地方人才网
摘要: 作为一名从事地方人才网站运营和推广的站长,需要具备一定的的文化素养、基础的网络技术、较广的人脉资源,更需要有简单的事情重复做、繁杂的事情坚持做、艰苦的事情巧妙做的 作为一名从事地方人才网站运营和推广的站长,需要具备一定的的文化素养、基础的网络技术、较广的人脉资源,更需要有“简单的事情重复做”、“繁杂的事情坚持做”、“艰苦的事情巧妙做”的工作主动性和工作热情。成功的标准很简单,或是成千...无聊,实在受不了这种浮躁的风气,本来是想看点干货,结果一点进来一堆什么“php是最好的编程语言”这种嘲讽,拜托,这种梗早就玩烂了好吗,自以为很幽默?黑也黑不到点子上,拿不出半点干货,来来去去无非就是“最好的编程语言”这种调侃,水平菜要靠黑下php显得自己很有存在感?不然没法假装自己站得很高,看得很远?先不说php怎么样,再优美的语言给你们这样的人也不见得玩得出水平,说得好像php烂其他的就玩得很好一样
无聊,实在受不了这种浮躁的风气,本来是想看点干货,结果一点进来一堆什么“php是最好的编程语言”这种嘲讽,拜托,这种梗早就玩烂了好吗,自以为很幽默?黑也黑不到点子上,拿不出半点干货,来来去去无非就是“最好的编程语言”这种调侃,水平菜要靠黑下p…
打基础>练手>老子基础杠杠滴>看框架>被虐的不行>继续看基础>卧槽,这东西看烦了,看看设计模式>练手>老子基础杠杠滴>看框架>被虐的不行>继续看基础>看看MVC?看看面向对象?>练手>老子基础杠杠滴……
打基础>练手>老子基础杠杠滴>看框架>被虐的不行>继续看基础>卧槽,这东西看烦了,看看设计模式>练手>老子基础杠杠滴>看框架>被虐的不行>继续看基础>看看MVC?看看面向对象?>练手>老子基础杠杠滴……
&ul&&li&pcntl_fork或者swoole_process实现多进程并发。按照每个网页抓取耗时500ms,开200个进程,可以实现每秒400个页面的抓取。&br&&/li&&li&curl实现页面抓取,设置cookie可以实现模拟登录&br&&/li&&li&simple_html_dom 实现页面的解析和DOM处理&/li&&li&如果想要模拟浏览器,可以使用casperJS。用swoole扩展封装一个服务接口给PHP层调用&/li&&/ul&在多玩网这里有一套爬虫系统就是基于上述技术方案实现的,每天会抓取几千万个页面。
pcntl_fork或者swoole_process实现多进程并发。按照每个网页抓取耗时500ms,开200个进程,可以实现每秒400个页面的抓取。curl实现页面抓取,设置cookie可以实现模拟登录simple_html_dom 实现页面的解析和DOM处理如果想要模拟浏览器,可以使用casperJS。用sw…
先截取一段手册上的原文:如果文件内容是纯 PHP 代码,最好在文件末尾删除 PHP
结束标记。这可以避免在 PHP 结束标记之后万一意外加入了空格或者换行符,会导致
PHP 开始输出这些空白,而脚本中此时并无输出的意图。
&br&这些影响最多的时候应该是在使用 include 和 require的时候,加了结束标签 如果又在后面加了空格都有可能会引起多余的输出、php错误、之后的输出无法显示、空白页。因此,所有的php文件应该&strong&省略&/strong&这个php闭合标签,并插入一段注释来标明这是文件的底部并定位这个文件在这个应用的相对路径。这样有利于你确定这个文件已经结束而不是被删节的。
先截取一段手册上的原文:如果文件内容是纯 PHP 代码,最好在文件末尾删除 PHP
结束标记。这可以避免在 PHP 结束标记之后万一意外加入了空格或者换行符,会导致
PHP 开始输出这些空白,而脚本中此时并无输出的意图。
这些影响最多的时候应该是在使用 incl…
sublime_text
sublime_text
&ol&&li&学历将决定你的起点,尤其是脚本语言,脚本语言你要是进不了一个好的平台,你想提高,几乎不可能,1E数据跟1W数据完全两回事,1E的PV跟1W的PV完全不一样,神马队列,缓存,分布式,小公司基本都是极其表面的使用,甚至在不少小公司,你50%以上的时间在整div和CSS,所以起码一个本科学历,没有就去弄一个。&br&&/li&&li&c++和java起码要熟悉一个,两个都熟悉更好,没见哪个技术大牛绕过这两个了。&br&&/li&&li&英语一定要学好,起码读写要不借助工具能看懂英文专业文章,php是用来做web的,发展极快,各种新技术层出不穷,等中文文档出来黄花菜都凉了,而且中文文档是经过了一道手的,比起原文还是有差距。&br&&/li&&li&多查少问,自己想方设法得到的答案更深刻,学生时代不是有句话:抄来的答案最不容易忘吗?&/li&&li&从大到小,由面到点,不要老啃着细枝末节的东西不放,知识要放在整个项目和环境中去学。例如,学习框架的运行模式而不是只是学具体某一个框架,任何框架随手就用。多使用国外开源东西。&/li&&li&整理一些抽象的模型库,比如一些框架的libary,多看多整理。&/li&&/ol&至于PHP的前景,目前一边是越来越多的人开始学PHP,另一方面呢,越来越多的企业招不到PHPer.因为20个人里也不一定招到一个满意的。因为脚本语言的门槛比较低,所以现在市面上PHP培训异常火爆,很多人初中高中大学不好好学习,以为通过几十天的培训就能改变命运,任何东西,质变的前提是量变,越是简单的东西越不好学,因为人多可替代性强,你要不努力学习更多的东西可能就被下一波廉价码农所代替。
学历将决定你的起点,尤其是脚本语言,脚本语言你要是进不了一个好的平台,你想提高,几乎不可能,1E数据跟1W数据完全两回事,1E的PV跟1W的PV完全不一样,神马队列,缓存,分布式,小公司基本都是极其表面的使用,甚至在不少小公司,你50%以上的时间在整div…
你好,如果无法从编程中获得乐趣的话,这其实是世界上最枯燥无味的工作,用什么语言都一样。&br&这个问题的答案显而易见,只是你心里还在怀疑自己罢了&br&&br&送你几句话共勉:&br&&br&成就的高低是由人决定的,而不是这人所使用的语言&br&&br&现在Java和PHP程序员满街跑,如果你没有核心竞争力的话,学什么都只会是“可有可无”的员工&br&&br&提升自己看事情的境界,你就能知道这些问题是多么地可笑了
你好,如果无法从编程中获得乐趣的话,这其实是世界上最枯燥无味的工作,用什么语言都一样。这个问题的答案显而易见,只是你心里还在怀疑自己罢了送你几句话共勉:成就的高低是由人决定的,而不是这人所使用的语言现在Java和PHP程序员满街跑,如果你没有核…
&p&&a href=&/briannesbitt/Carbon& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Carbon&i class=&icon-external&&&/i&&/a&&/p&&p&Laravel 其实已经包含了这个扩展包了,但是我觉得有必要单独提一下,因为用得还是比较多的。在日期处理方面的确帮了很大忙。&/p&&p&&a href=&/barryvdh/laravel-debugbar& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Debugbar&i class=&icon-external&&&/i&&/a&&/p&&p&这个扩展包能够提供更多深层的运行信息,方便你修复bug,让应用高效、流畅的运行。&/p&&p&&a href=&/docs/4.2/ssh#envoy-task-runner& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Envoy&i class=&icon-external&&&/i&&/a&&/p&&p&Envoy 能帮你在远程系统上运行 SSH 命令。在本地系统和远程部署时它都帮了很大的忙。&/p&&p&&a href=&/barryvdh/laravel-dompdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Laravel DomPDF&i class=&icon-external&&&/i&&/a&&/p&&p&这个扩展包将 DomPDF 库包装成 Laravel 化的调用语法,让创建 PDF 很轻松。&/p&&p&&a href=&/JeffreyWay/Laravel-4-Generators& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Laravel Generators&i class=&icon-external&&&/i&&/a&&/p&&p&使用生成器能够加速开发过程。它所包含的指令几乎涵盖了 Laravel 开发中的方方面面。&/p&&p&&a href=&/barryvdh/laravel-ide-helper& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Laravel IDE Helper&i class=&icon-external&&&/i&&/a&&/p&&p&如果你在使用 PhpStorm,那么这个工具包是必须要装的。我在所有项目中都使用了它,这让 IDE 使用起来很 nice。&/p&&p&&a href=&http://image.intervention.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Intervention&i class=&icon-external&&&/i&&/a&&/p&&p&每个项目几乎都要处理图片上传的功能,Intervention 让图片上传和处理 so easy!&/p&&p&&a href=&http://parsedown.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Parsedown&i class=&icon-external&&&/i&&/a&&/p&&p&解析 Markdown 就靠它了!快速、稳定、易于使用。&/p&&br&&p&原文出处:&a href=&/8-laravel-packages-for-your-next-project/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&8 Laravel Packages For Your Next Project&i class=&icon-external&&&/i&&/a&&/p&&p&译文出处:&a href=&/post/tui-jian-8ge-you-xiu-de-laravelbao/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&推荐8个优秀的Laravel包&i class=&icon-external&&&/i&&/a&&/p&&br&&p&补充两个我自己做的包:&/p&&p&&a href=&/overtrue/laravel-lang& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&laravel-lang&i class=&icon-external&&&/i&&/a& Laravel 5 多国语言包,包含37种语言&/p&&a href=&/overtrue/laravel-pinyin& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&laravel-pinyin&i class=&icon-external&&&/i&&/a&
Laravel 5 中文转拼音
Laravel 其实已经包含了这个扩展包了,但是我觉得有必要单独提一下,因为用得还是比较多的。在日期处理方面的确帮了很大忙。这个扩展包能够提供更多深层的运行信息,方便你修复bug,让应用高效、流畅的运行。Envoy 能帮你在远程系统上运…
按 shift 按得手抽筋。
按 shift 按得手抽筋。
实在受不了知乎弥漫的这股子装逼回答
动不动就是手册足以。拜托。你写了多年java 那写项目就是java翻译到php 那当然手册足以。还有动不动就是国外英文高上大教程。这样回答的一般都是就会装逼。要他实在写个cms 微博 电商就基本不会。要不就是半桶水。工资2w都不到。看不起国内实在的教程。实际工作毛也不行。我面试这种一般直接不要。
实在受不了知乎弥漫的这股子装逼回答 动不动就是手册足以。拜托。你写了多年java 那写项目就是java翻译到php 那当然手册足以。还有动不动就是国外英文高上大教程。这样回答的一般都是就会装逼。要他实在写个cms 微博 电商就基本不会。要不就是半桶水。工资2…
你给我私信里说域名不是简单父子域名的关系,所以直接的cookie共享是不可行的。提供一种比较好做的方案,假设你有三个不同域名,a.com, b.com, &a href=&http://c.com& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&,将其中之一作为真正的登陆入口,所有的域名下发起的登陆,全部重定向到这个节点,这里假设选择&a href=&http://a.com/login.php& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/login.php&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&为统一登入节点,为了方便说明,把&a href=&http://a.com& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&叫做主节点,其余叫做从节点。&br&&br&假设现在从任意站点发出登陆请求,最终都被带到 &a href=&http://a.com/login.php?&sfkey=xxxxxx& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/login.php?&/span&&span class=&invisible&&&sfkey=xxxxxx&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&,用户输入登陆信息,假设登陆成功,返回一个登陆成功中间页面,在这个页面里,包含下面html代码&br&&div class=&highlight&&&pre&&code class=&language-html&&&span class=&nt&&&iframe&/span& &span class=&na&&width=&/span&&span class=&s&&&0&&/span& &span class=&na&&height=&/span&&span class=&s&&&0&&/span& &span class=&na&&src=&/span&&span class=&s&&&https://b.com/sso.php?sessid=xxxxxxxxxxxx&sfkey=xxxxxxxxxxx&&/span&&span class=&nt&&&&/iframe&&/span&
&span class=&nt&&&iframe&/span& &span class=&na&&width=&/span&&span class=&s&&&0&&/span& &span class=&na&&height=&/span&&span class=&s&&&0&&/span& &span class=&na&&src=&/span&&span class=&s&&&https://c.com/sso.php?sessid=xxxxxxxxxxxx&sfkey=xxxxxxxxxxx&&/span&&span class=&nt&&&&/iframe&&/span&
&/code&&/pre&&/div&sessid是登陆成功以后的session ID,sfkey是一个安全码,这两个串在login.php里绑定到当前登陆的用户记录上。&br&&br&这个时候&a href=&http://a.com& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&实际已经登陆完毕,获得了PHPSESSID的cookie。两个iframe的作用是把获得的session id立刻同步到从节点上,从节点的sso.php获得sessid和sfkey后,首先校验这个配对是否存在,如果存在,立刻把sessid值设为当前session id&br&&div class=&highlight&&&pre&&code class=&language-text&&session_id($_GET['sessid']); // 使用a.com产生的session id
session_start();
&/code&&/pre&&/div&sso.php请求完毕后,b.com和c.com这两个站点就获得了和a.com一样的PHPSESSID cookie;&br&&br&这个页面会把用户重定向回所来自的页面(到达login.php的时候记住了),重定向完成后,用户已经在所有网站完成了同步登陆。&br&&br&&a href=&http://a.com& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&发送iframe请求的时候使用加密的sessid=xxxxxx里的sessid,从节点的sso.php获取密文后解密才获得真实的session id&br&&br&你可以用单独域名来作为登陆主节点,比如&a href=&& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&,而不用a b c中的任意一个,&a href=&& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&做且仅作登陆服务。
你给我私信里说域名不是简单父子域名的关系,所以直接的cookie共享是不可行的。提供一种比较好做的方案,假设你有三个不同域名,a.com, b.com, ,将其中之一作为真正的登陆入口,所有的域名下发起的登陆,全部重定向到这个节点,这里假…
来自子话题:
多的不讲。&br&希望题主找300到500万开家公司,招聘5到10个程序员去做事,那时候你会发现thinkphp是无敌的。&br&&br&因为一线城市的php程序员有两三年工作经验的就要开价12k到18k,五年的就要上20到25k了,英文水平再好一点,工资开价可以高到让各种老板苦笑得呵呵黑thinkphp的人一脸。&br&&br&招聘的难度让普及程度最高的thinkphp成为了优先选择。&br&&br&绝大多数需要php程序员的企业考虑的不是重构复用解耦,大多数人考虑的还是网站要按时上线,功能要酷炫屌渣天,山寨别人的东西要跟上速度,但是技术实现一概不懂。这时候你让10k月薪招来的两年经验,学历大专或者三本的php程序员用laravel和yii ?&br&=================================================&br&你的偏好是你个人的偏好,如果想要黑你不喜欢的东西,最好的方法不是去纯粹的黑,而是自己变得牛X,自然会有人追随你而去。&br&&br&题主不妨晒一晒自个的作品让大家品评一下
多的不讲。希望题主找300到500万开家公司,招聘5到10个程序员去做事,那时候你会发现thinkphp是无敌的。因为一线城市的php程序员有两三年工作经验的就要开价12k到18k,五年的就要上20到25k了,英文水平再好一点,工资开价可以高到让各种老板苦笑得呵呵黑thi…
只答代码技巧,不答模式架构,我觉得那没有标准答案的,当然小技巧也要看具体使用的场景。&br&&br&Go ternary&br&&div class=&highlight&&&pre&&code class=&language-text&&if (A)
$var = xxx
$var = ooo
$var = A ? xxx : ooo
&/code&&/pre&&/div&&br&&div class=&highlight&&&pre&&code class=&language-text&&if (A) doA()
A && doA()
if (!A) doB()
A || dbB()
A ? doA() : doB()
&/code&&/pre&&/div&&br&Gardian Statement&br&&div class=&highlight&&&pre&&code class=&language-text&&if (A)
return ...
if (!A) return ...;
&/code&&/pre&&/div&&br&Data driven&br&&div class=&highlight&&&pre&&code class=&language-text&&if ($category == A) {
if ($author == B) {
if ($genre == C) {
$article = ...
} else if ($genre == ...) {
$article = ...
$article = ...
} else if ($author == ...) {
if ($genre == C) {
$article = ...
} else if ($genre == ...) {
$article = ...
$article = ...
} else if ($category == ...) {
$articles = getArticles()
$cateogry = getCategory()
= getAuthor()
= getGenre()
= $articles[$category][$author][$genre]
&/code&&/pre&&/div&&br&Extract&br&&div class=&highlight&&&pre&&code class=&language-text&&if (A) {
if (...) {
} else if (...) {
function doA() ...
function dbB() ...
A ? doA() : doB()
&/code&&/pre&&/div&
只答代码技巧,不答模式架构,我觉得那没有标准答案的,当然小技巧也要看具体使用的场景。Go ternaryif (A)
$var = xxx
$var = ooo
$var = A ? xxx : oooif (A) doA()
A && doA()
if (!A) doB()
A || dbB()
我说个我的看法,我觉得Python文档的质量,阅读方便程度,条理性,连PHP的一半也没达到。Python的类库混乱不堪,依赖像一团乱麻,一会儿urllib,一会儿urllib2,date,datetime乱得一团糟,一会儿easy_install,一会儿pip,让人无所适从。前后兼容性非常糟糕,我的Mac默认安装了2.5,2.6,2.7三个版本。而且据我有限的知识判断,Python3.0将会是完全另一个无法兼容的东西。&br&Python环境的lib,管理混乱,没有php的pear,pecl这么规范。&br&楼上有人说,PHP在语言上一无是处,那我就可以说,Python除了语法略微简洁,其他一无是处。好,我承认我夸张了。Python经验不是很足,但是作为一个多年PHP经验的人,Python对我来说困难重重。语言表现力和语法,也没有Ruby那么可爱贴心。我看不出Python成为大流行的任何可能性。就算今天能取得这样的知名度,也是极大依靠了Google等公司的鼓吹。
我说个我的看法,我觉得Python文档的质量,阅读方便程度,条理性,连PHP的一半也没达到。Python的类库混乱不堪,依赖像一团乱麻,一会儿urllib,一会儿urllib2,date,datetime乱得一团糟,一会儿easy_install,一会儿pip,让人无所适从。前后兼容性非常糟…
python的部署没php难,只是因为很多人不熟悉python的部署,所以才说难,目前python没PHP普及的原因,1,会python的程序员没php多,从招人就能看出来,现在招一个python程序员,还是很困难的,第二,python没有像wordpress,discuz,phpwind这样非常流行的开源博客和论坛程序,因此造成人们对python的认知度不够,但python做web开发也是有非常大的优势的,有很多成熟的框架选择,适合快速开发,因此,我看好python以后在web开发领域的表现,正如前面所说,相比php来说,python还有科学计算,2d,3d图形处理等等。
python的部署没php难,只是因为很多人不熟悉python的部署,所以才说难,目前python没PHP普及的原因,1,会python的程序员没php多,从招人就能看出来,现在招一个python程序员,还是很困难的,第二,python没有像wordpress,discuz,phpwind这样非常流行的开源…
(网页开发)我只会在PHP, Python和ROR之间选择,不会考虑Java和.NET。脚本语言虽然容易把代码混成一团,但只要一开始有好的MVC框架,其实都是一样的。而且随着有了HPHP这样的编译器,PHP的效率已经不是一个问题了。
&br&&br&后半个问题似乎是想问PHP程序员是否应该考虑转行?依我只见,编程语言是一通百通的。好的语言特性和编程习惯是不依赖于语言的。所以无论入行到哪一个语言,只要学通了,都能达到一样的效果。以PHP为例,将程序结构化,提高数据读取并行度,增加单元测试等等都是可以学习提高的。
(网页开发)我只会在PHP, Python和ROR之间选择,不会考虑Java和.NET。脚本语言虽然容易把代码混成一团,但只要一开始有好的MVC框架,其实都是一样的。而且随着有了HPHP这样的编译器,PHP的效率已经不是一个问题了。 后半个问题似乎是想问PHP程序员是否应该考…
来自子话题:
------------------- 更新于: 2014 . 09. 02 ------------------ &br&&br&Laravel China is ready &a href=&http://laravel-china.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Laravel 中文文档&i class=&icon-external&&&/i&&/a& , 欢迎发起 issue 提交纰漏 和建议 --& &a href=&/laravel-china& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Laravel China · GitHub&i class=&icon-external&&&/i&&/a&&br&&br&--&br&&br&这里将不再更新维护, 请参考 PHPhub 的社区 Wiki --& &a href=&http://phphub.org/topics/8& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Laravel 开源项目收集_PHPhub&i class=&icon-external&&&/i&&/a&&br&&br&------------------- 更新于: 2014 . 08. 18 ------------------ &br&&ul&&li&&p&&a href=&/summerblue/phphub& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&phphub.org 源码 at GitHub&i class=&icon-external&&&/i&&/a& 欢迎 &a href=&/summerblue/phphub& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&贡献代码&i class=&icon-external&&&/i&&/a& 或 &a href=&/summerblue/phphub/issues& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&提交 Issue&i class=&icon-external&&&/i&&/a&。 &a href=&http://phphub.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&PHPhub - PHP & Laravel的中文社区&i class=&icon-external&&&/i&&/a&&/p&&/li&&li&&p&&a href=&http://laravel.io& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&laravel.io&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& 的源代码 &a href=&/LaravelIO/laravel.io& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&LaravelIO/laravel.io at GitHub&i class=&icon-external&&&/i&&/a&&/p&&/li&&li&&p&&a href=&/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&&i class=&icon-external&&&/i&&/a& 的源代码 &a href=&/hillelcoren/invoice-ninja& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&hillelcoren/invoice-ninja at GitHub&i class=&icon-external&&&/i&&/a&&/p&&/li&&li&&p&&a href=&/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&&i class=&icon-external&&&/i&&/a& 的源代码 &a href=&/CodepadME/laravel-tricks& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CodepadME/laravel-tricks at GitHub&i class=&icon-external&&&/i&&/a&&/p&&/li&&li&&p&&a href=&/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&&i class=&icon-external&&&/i&&/a& 的源代码 &a href=&/basco-johnkevin/laravelsnippets& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&basco-johnkevin/laravelsnippets at GitHub&i class=&icon-external&&&/i&&/a&&/p&&/li&&li&&p&&a href=&/octobercms/october& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&october&i class=&icon-external&&&/i&&/a&CMS platform based on the Laravel PHP Framework &a href=&/octobercms/october& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&octobercms/october at GitHub&i class=&icon-external&&&/i&&/a& Intro Video --&&a href=&/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&/li&&li&&p&&a href=&/wardrobecms/wardrobe& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&wardrobe&i class=&icon-external&&&/i&&/a&A minimal blogging application&/p&&/li&&li&&p&&a href=&/foxted/larabook& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&foxted/larabook at GitHub&i class=&icon-external&&&/i&&/a& 来自视频教程 &a href=&/series/build-a-laravel-app-from-scratch& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Build Larabook From Scratch&i class=&icon-external&&&/i&&/a&&/p&&/li&&li&&p&&a href=&/mmruby/metronome& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&mmruby/metronome at GitHub&i class=&icon-external&&&/i&&/a& A Simple Forum using Laravel Framework.&/p&&/li&&/ul&
------------------- 更新于: 2014 . 09. 02 ------------------ Laravel China is ready
, 欢迎发起 issue 提交纰漏 和建议 --& --这里将不再更新维护, 请参考 PHPhub 的社区 Wiki --& …
&ul&&li&注册&/li&&ul&&li&状态判断:如果是已登录状态(通过COOKIE验证),该页面跳转至网站首页;否则显示该注册页面。&/li&&li&表单填写:前端页面一个Form,主要包括邮箱、密码、重复密码、验证码等。&/li&&li&前端判断格式:通过JS正则表达式判断邮箱是否符合邮箱格式、密码是否符合一定长度和难度等。&/li&&li&判断是否已注册:AJAX判断该邮箱是否已被注册,如果是,则提示登录;否则继续。&/li&&li&表单提交:POST表单。&/li&&li&后台判断格式:防止前端JS被修改或者直接POST数据,需要后台再次验证数据格式。&/li&&li&插入数据库:在表单各数据正确无误的情况下将新用户的相关信息插入数据库(密码需加密处理,不能明文显示),并返回新用户的用户ID等相关资料。&/li&&li&跳转到登录状态:通过用户ID等资料给用户添加COOKIE保持其登录状态。&/li&&/ul&&li&登录 &/li&&ul&&li&状态判断:如果是已登录状态,该页面跳转至网站首页;否则显示该登录页面。&/li&&li&表单填写:前端一个Form,包括邮箱和密码。&/li&&li&前端判断格式:判断邮箱是否符合邮箱格式、密码是否符合长度等。&/li&&li&表单提交:POST表单。&/li&&li&后台匹配:查找是否存在该用户;匹配该用户密码;返回是否匹配。&/li&&li&页面跳转:匹配成功,则添加COOKIE保持登录状态;否则提示相关错误,并跳回登录状态。&/li&&/ul&&/ul&&br&评论&a data-title=&@钟云龙& data-editable=&true& class=&member_mention& data-hash=&04b24fe251c4d9e4d26e2& href=&/people/04b24fe251c4d9e4d26e2& data-tip=&p$b$04b24fe251c4d9e4d26e2&&@钟云龙&/a& 补充:&br&1. 邮箱验证&br&对于大部分使用邮箱作为 id 登录的网站,一般会发送一个验证 URL 来验证你是否是该邮件的主人(其实非必须),基本原理很简单,在用户表里加入2个字段:一个随机生成的验证码和一个验证状态。该验证码包含在邮箱发送的 URL 里。&br&&br&2. OAuth &br&OAuth
是目前使用第三方帐号注册和登录的协议,目前最新版本为 OAuth 2.0。国内最常使用的三方帐号是微博和QQ等、国外是 Google,
Facebook 等。在使用它们之前,需要向提供该帐号的提出申请,获得 appkey 和 appsecret,设置 redirect uri
,有时还需要下载相关的 SDK 等,进行一系列配置方可使用。
注册状态判断:如果是已登录状态(通过COOKIE验证),该页面跳转至网站首页;否则显示该注册页面。表单填写:前端页面一个Form,主要包括邮箱、密码、重复密码、验证码等。前端判断格式:通过JS正则表达式判断邮箱是否符合邮箱格式、密码是否符合一定长度和…
这类的过滤只能给注入者增加一些麻烦,远远做不到完全防范。&br&1、注入者可以用sElEcT来代替select&br&2、注入者可以用sel&b&select&/b&ect来让你过滤一遍,尝试获得select&br&3、注入者可以用url码来替代所有输入&br&4、注入者可以。。。用很多种方法,试出你的过滤函数是什么样的&br&你和注入者的技能可以在遭受泄露的拉锯战中不断获得提升。&br&直到你使用了以下方法的其中之一,才开始踏上了安全的征程:&br&1、白名单。严格定义只能输入哪些字符来查询,其他一律不行。&br&2、参数化查询。先将SQL语言编译,再代入参数。这时候就算他提交了select * from password where table=admin也只会去查询这一长串字符而不会执行SQL语句了。php下的示例如李世光所说。
这类的过滤只能给注入者增加一些麻烦,远远做不到完全防范。1、注入者可以用sElEcT来代替select2、注入者可以用selselectect来让你过滤一遍,尝试获得select3、注入者可以用url码来替代所有输入4、注入者可以。。。用很多种方法,试出你的过滤函数是什么样…
&img data-rawheight=&373& data-rawwidth=&600& src=&/b97e10bba66f2ce4d1f87e_b.jpg& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/b97e10bba66f2ce4d1f87e_r.jpg&&}

我要回帖

更多关于 2015永续中票优势 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信