<<PHP禅意花园>>第四季
[font=仿宋_GB2312][size=6]我们来自中国,[/size][size=6]我们有一个共同梦想[/size][/font]
[size=6] [font=仿宋_GB2312]----[b]中国PHPER联盟[/b].[/font][/size]
[size=6][/size]
[align=center][size=7]<< PHP 编程思想 >>[/size][/align][align=center][size=5][color=darkred]<<Thinking in PHP>>[/color][/size][/align][align=center][size=5][color=#8b0000][/color][/size][/align][align=center][size=5][color=#8b0000][/color][/size][/align][align=center][b][size=5][color=#8b0000]不抛弃自己核心理念,不放弃技术提升的每次机会[/color][/size][/b][/align][b][size=5][color=#8b0000][/color][/size][/b][align=left]
本高级应用版里将推出中高难度的实战案例分析,答案将会在尽快总结.[/align][align=left]
[size=4][color=blue]指导原则:[/color][/size]
[size=4][color=blue]1.代表目前实际商业运作的所用到的知识.
2.折射出问题知识面与知识难度
3.注重问题解决思路.
4.零商业运作,纯技术交流平台.[/color][/size]
[size=4][color=blue][/color][/size]
[size=4][color=blue]请各位大胆发表,不管说对说错,在每次活动结束时,我都会认真总结每位发表者的作品,包括建议与推荐等.^_^![/color][/size][/align][align=left][size=4][color=#0000ff][/color][/size][/align][align=left][size=4][color=#0000ff][/color][/size][/align][align=left][size=4][color=#000000][/color][/size][/align][align=left][size=4][color=#000000][/color][/size][/align][align=left][size=4][color=#000000][/color][/size][/align][align=center][size=4][color=black][/color][/size][/align][align=center][size=4][color=black][/color][/size][/align][align=center][size=4][color=black][/color][/size][/align][align=center][size=4][color=black][/color][/size][/align][size=4][color=#0000ff][/color][/size][align=center]
[size=4][color=blue][size=5][color=#ff0000][/color][/size][/color][/size][/align][align=center][size=4][color=blue][size=5][color=#ff0000]第四季PHP禅意花园[/color][/size][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size] [/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=left][size=4][color=black]本期将对框架整体架构理念进行讲解与实战演练,对几种主流的设计思想进行整体与傻瓜直观化讲解.本期将通过一个实际的项目演示让大家直观理解旧的设计方式与新的设计方式的不同之处.本期参与自由,任何人可以对一个设计模式进行自己的实例化演示,我会把较好的例子做相关整理放在本页中,并附上作者名字![/color][/size][/align][align=left][size=4][/size][/align][align=left][size=4]借鉴j2ee架构理念,PHP各主流框架设计可以主分为三大块[/size][/align][align=left][size=4][/size][/align][align=left][size=4]1.创建模式[/size][/align][align=left][size=4][/size][/align][list][*][align=left][size=4]Factory 工厂模式[/size][/align][*][align=left][size=4]Prototype 原始模型[/size][/align][*][align=left][size=4]Builder 建造模式[/size][/align][*][align=left][size=4]Singleton 单例模式[/size][/align][/list][align=left][size=4][/size][/align][align=left][size=4]2.结构模式[/size][/align][align=left][size=4][/size][/align][list][*][align=left][size=4]Facade 门面模式[/size][/align][*][align=left][size=4]Proxy 代理模式[/size][/align][*][align=left][size=4]Adapter 适配器模式[/size][/align][*][align=left][size=4]Composite 合成模式[/size][/align][*][align=left][size=4]Decorate 装饰模式[/size][/align][*][align=left][size=4]Brindge 桥梁模式[/size][/align][*][align=left][size=4]Flyweight 享元模式[/size][/align][/list][align=left][size=4][/size][/align][align=left][size=4]3.行为模式[/size][/align][align=left][size=4][/size][/align][list][*][size=4]Template 模板模式[/size][*][size=4]Memento 备忘录模式[/size][*][size=4]Observer 观察者模式[/size][*][size=4]Chain of Responsibility 责任链模式[/size][*][size=4]Command 命令行模式[/size][*][size=4]State 状态模式[/size][*][size=4]Strategy 策略模式[/size][*][size=4]Mediator 调停者模式[/size][*][size=4]Interpreter 解释器模式[/size][*][size=4]Visitor 访问者模式[/size][/list]
实例一:
[url=http://www.jiania.com/blog/?p=36]PHP设计模式之观察者模式实现DEMO[/url]
<?php
/**
* Jiania之观察者模式实现DEMO
*
* @package SPL
* @subpackage SPL_SpLObserver
* @author Jiania J Hung<[email=jiania@gmail.com]jiania@gmail.com[/email]>
* @since PHP5.1.x
* @copyright [url=http://www.jiania.com/]http://www.jiania.com[/url]
*
*/
class Boy implements SplObserver
{
private $name;
public function __construct($name)
{
$this->name=$name;
}
public function update(SplSubject $subject)
{
echo $this->name.” Says:I love you.\n”;
}
}
class Girl implements SplObserver
{
private $name;
public function __construct($name)
{
$this->name=$name;
}
public function update(SplSubject $subject)
{
echo $this->name.”Says:I love you.\n”;
}
}
class Sweetie implements SplSubject
{
private $name;
private $people;
private $state;
public function __construct($name)
{
$this->people=new SplObjectStorage();
$this->name=$name;
}
public function attach(SplObserver $observer)
{
$this->people->attach($observer);
}
public function detach(SplObserver $observer)
{
$this->people->detach($observer);
}
public function notify()
{
foreach ($this->people as $person)
{
$person->update($this);
}
}
function count()
{
return $this->people->count();
}
function contains($obj)
{
return $this->people->contains($obj);
}
public function getState()
{
return $this->state;
}
public function setState($state)
{
return $this->state=$state;
}
public function getName()
{
return $this->name.”\n”;
}
}
$sweetie=new Sweetie(’Jiania family’);
$boy=new Boy(’jiania’);
$girl=new Girl(’dreamer’);
$sweetie->attach($boy);
$sweetie->attach($girl);
echo $sweetie->getState();
$sweetie->notify();
实例二之单件模式
<?php
/**
*
* Singleton base class
*
* @category Framework
* @package ROOT
* @subpackage Singleton
* @author Jiania J Hung <[email=jiania@gmail.com]jiania@gmail.com[/email]
* @copyright [url=http://www.jiania.com]http://www.jiania.com[/url]
* @since php5.1.x
*
*/
class Singleton
{
/**
* hold $instance object of a class
*
* @var sring $instance
*/
private static $_instance=array();
/**
* private constructor,so you cann't use $instance=new Singleton
*
*/
private function __construct(){}
/**
* final private __clone memthod,so you can' user __clone memthod in you all subclass
*
*/
final private function __clone(){}
/**
* the getInstance memthod returns a single instance of the object
* @return $instance
*/
public static function getInstance($class)
{
if(!isset(self::$_instance[$class]))
{
return self::$_instance[$class]=new $class;
}
return self::$_instance[$class];
}
}
[align=left][size=4][/size][/align][align=left][size=4][/size][/align][align=left][size=4][/size][/align][align=left][size=4][/size][/align][align=center][size=4][color=blue][size=5][color=#ff0000][/color][/size][/color][/size][/align][align=center][size=4][color=blue][size=5][color=#ff0000][/color][/size][/color][/size][/align][align=center][size=4][color=blue][size=5][color=#ff0000][/color][/size][/color][/size][/align][align=center][size=4][color=blue][size=5][color=#ff0000][/color][/size][/color][/size][/align][align=center][size=4][color=blue][size=5][color=#ff0000][/color][/size][/color][/size][/align][align=center][size=4][color=blue][size=5][color=#ff0000][/color][/size][/color][/size][/align][align=center][size=4][color=blue][size=5][color=#ff0000][/color][/size][/color][/size][/align][align=center][size=4][color=blue][size=5][color=#ff0000][/color][/size][/color][/size][/align][align=center][size=4][color=blue][size=5][color=#ff0000][/color][/size][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=center][size=4][color=blue][size=5][color=#ff0000][/color][/size][/color][/size][/align][align=center][size=4][color=blue][size=5][color=#ff0000][/color][/size][/color][/size][/align][align=center][size=4][color=blue][size=5][color=#ff0000][/color][/size][/color][/size][/align][align=center][size=4][color=blue][size=5][color=#ff0000]第三季PHP禅意花园[/color][/size][/color][/size][/align]
[align=left][size=4][color=blue][size=5][color=#ff0000][color=darkred]首先本季作者推荐大家阅读以下几本书籍[/color][/color][/size][/color][/size][/align]
[align=left][size=4][color=blue][size=5][color=#ff0000]
[/color][/size][/color][/size][/align]
[align=left][b]《Software Architecture in Practice,2nd Edition--软件构架实践(第2版)》[/b][/align]
[align=left][b]《Documenting Software Architectures --软件构架编档》[/b][/align]
[align=left][b]《Applied Software Architecture --实用软件体系结构》[/b][/align]
[align=left][b]《[font=Arial]The Elements of UML 2.0 Style[/font]》[/b][/align]
[align=left][b]《UML和模式应用(第3版)--Applying UML and Patterns 3rd》[/b][/align]
[align=left][b]《Domain-Specific Application Frameworks --特定领域应用框架:行业的框架体验》[/b][/align]
[align=left][b]《Head First Design Patterns》
[/b][/align]
[align=left][b]《Patterns of Enterprise Application Architecture --企业应用架构模式》
[/b][/align]
[align=left][b]《Enterprise Integration Patterns --企业集成模式:设计、构建及部署消息传递解决方案》[/b][/align]
[align=left][b]《Pattern-Oriented Software Architecture, Volume 2 --面向模式的软件体系结构 卷2:用于并发和网络化对象的模式》[/b][/align]
[align=left][b]《Pattern-Oriented Software Architecture, Volume 3 [/b][b]--面向模式的软件体系结构卷3:资源管理模式》[/b][/align]
[b]《Code Complete 2 --代码大全2》[/b]
[b]《The Pragmatic Programmer --程序员修炼之道:从小工到专家》[/b]
[b]《The Art of Unix Programming --UNIX编程艺术》[/b]
[size=4][color=blue][size=5][/size][/color][/size][align=left]
[color=blue][size=4][color=black]本季主要是压力测试编程布局[/color][/size][/color][/align][size=4][color=#000000][/color][/size][align=center]
[color=blue][size=4][color=black][color=red]建立更大,更快,高可靠性与适用性的新一代平台[/color][/color][/size][/color][/align][color=blue][size=4][color=black][color=#ff0000][/color][align=left]
[color=#ff0000][size=5]3.1:[/size][size=4][color=black]日pv有2000万,网站内容内容有文字新闻,视频新闻等.你采取什么样的布局?请说一下你你认为需要的服务器资源,带宽,硬件,系统平台选择,数据库产品类型选择?说说你的理由与经验?[/color][/size][/color]
[size=5][color=#ff0000]3.2:[size=4][color=black]上面你谈到的系统分布格局,请问你准备选择几种Web服务器?并谈一下你所选择web服务器的理由与在系统功能上的作用?请给出数据证明你的观点.[/color][/size][/color][/size]
[size=5][color=#ff0000]3.3:[size=4][color=black]如果上面的网站特点为主要是读的压力与前台数据更新压力,请问在这样的压力下,你如何处理数据库之间的读写问题,如何分配数据服务器资源?你的cache方案,是内存cache,还是磁盘cache方案?为什么?接上谈何如何你的数据静态化策略.[/color][/size][/color][/size]
[size=5][color=#ff0000]3.4:[/color][/size][size=4][color=black]接上面问题,主连接采用apache服务器,请问你的配制文件怎样优化?[/color][/size]
[size=5][color=#ff0000]3.5:[size=4][color=#000000]接上面问题,如果网站的图片目录已经在30,000以上,图片保存于磁盘还是数据库?[/color][/size][/color][/size][/align]
[align=left][size=5][color=#ff0000]3.6:[size=3][color=#000000]因公司战略原因,有众多子域名系统与集团下众多公司,现在要求实现一站式登陆,请问你用什么解决方法?[/color][/size][/color][/size][/align][align=left][size=3]附:单点登陆解决方案历史表:[/size][/align]登录方案简史
[align=left][table=515][tr][td]1994[/td][td][b]Yahoo[/b] 开创单点登录范例;公司创立[/td][/tr][tr][td]1998[/td][td]MSN 建立自己的单点登录范例;MSN Passport发布[/td][/tr][tr][td]1998[/td][td]Google 开创搜索为中心的范例;公司创立[/td][/tr][tr][td]2002[/td][td][b]Yahoo[/b] 跟上搜索为中心的模型;收购Inktomi[/td][/tr][tr][td]2004[/td][td][b]Google[/b] Starts its own Single Sign-On Paradigm; Gmail and Google Accounts[/td][/tr][tr][td]2004 -2005[/td][td][b]MSN [/b]跟上搜索为中心的范例;Live.com发布[/td][/tr][tr][td]2005[/td][td][b]OpenID [/b]为独立站点开创单点登录;项目建立[/td][/tr][/table][/align]
[align=left][size=3][/size]提示:传cookie,sessionid,转向URL等常用方法.
第三季第二部份--网站架构问题
更新中....
[/align][/color][/size][/color][color=blue][/color][align=center][color=blue]
[/color][size=5][color=red]第二季PHP禅意花园[/color][/size][/align][align=center][size=5][color=#ff0000][/color][/size][/align][align=left][size=2][color=#ff0000]增加问题:下面代码中[/color][/size][/align][align=left][size=2][color=#ff0000]大伙应知道,true==1,false==0;[/color][/size][/align][align=left][size=2][color=#ff0000]<?php[/color][/size][/align][align=left][size=2][color=#ff0000]echo false>-1;//请问将输入什么?b,如何让程序输出true?[/color][/size][/align][align=left][size=2][color=#ff0000]?>[/color][/size][/align][size=4][color=#ff0000][/color][/size][align=left]jiania 解答如下,关键是类型没转化?[/align][align=left]<?php[/align][align=left]echo (int)false>-1;//程序于变成0>=1[/align][align=left]?>
[size=4][color=#ff0000][/color][/size]
[size=4][color=#ff0000][size=5]2.1:[/size][/color][size=3][color=black]在网站结构中,经常需要定义路径问题,在这方面你有什么心得?[/color][/size][/size][/align][size=4][size=3][color=#000000][/color][/size][align=left][size=2]example:这样的结构可以让你的程序随便放在哪里运行都可以[/size][/align][align=left][size=2][/size][/align][align=left]beans/..[/align][align=left]libs/..[/align][align=left]../..[/align][align=left]index.php[/align]
[size=2]//定义网站所在运行时的目录
if(!defined('HOME')) define('HOME',dirname(dirname(__FILE__)));
if(!defined('BEANS')) define('BEANS',HOME."/beans/");
[/size]
[size=5][color=red]2.2:[/color][/size][size=3][color=black]请问你如何处理多国语言问题?[/color][/size]
[size=3]参考相关的I18N资料,或是用数组($lang[];)解决
[color=#000000][/color][/size]
[size=5][color=#ff0000]2.3:[/color][/size][size=3][color=black]请问你如何处理多国DST时区问题?[/color][/size][/size]
[size=4][size=3][color=#000000][/color][/size][/size]
1.使用php5 自带的timezonedb.dll pecl install timezonedb
2.使用计划任务让让每天运行,pecl upgrade timezonedb
3.在程序里设定主服务器时区
4.用户注册时设计时区,需要时从用户时区读取转化.
[size=4][size=3][color=#000000][/color][/size][/size]
[size=4][size=5][color=#ff0000]2.4:[/color][/size][color=black][size=3]请问你如何处理数据转移问题,excel,文本,cvs等数据格式导入导出?[/size][/color][/size]
[size=3][color=#000000]1.导入说来说去离不以下步聚[/color][/size]
[size=3][color=#000000]a:不管是上传,还是提取,都是取得文件源的操作,file_get_contents,可是fsockopen(),cURl等操作[/color][/size]
[size=3][color=#000000]b.字符串操作implode,explode,或是相关正则[/color][/size]
[size=3][color=#000000]3.数组操作->foreach[/color][/size]
[size=3][color=#000000]2.导出操作[/color][/size]
1.导出格式问题,中文乱码问题
2.大家都可以利用header相关方法解决问题
3.使用相关开源类或是库.搞定.
[size=4][size=3][color=red]下面是网友小树叶子在本贴的回复资料,回答挺不错.[/color][/size]
[size=3][color=#000000]代码背景,美国客户要求可以把CSV文件解析出来并插进数据库里,有几点需要注意的:
1.CSV文件的第一行是title并非数据[/color][/size]
[size=3][color=black]2.CSV文件的列顺序不是固定的,也许可能是 title-a,title-b,title- c也可能是title-b,title-a,title-c[/color][/size][/size]
[align=left][size=4][size=3][color=#000000]这位代码网址[/color][/size]
[size=3][color=#000000][url=http://www.phpchina.com/bbs/thread-32333-8-1.html]http://www.phpchina.com/bbs/thread-32333-8-1.html[/url][/color][/size]
[/size][/align][align=left][color=#000000][size=2][color=#0000bb][/color][/size][/color][/align][size=4][/size][align=left][size=4]
[color=#ff0000][/color][/size]
[size=5][color=red]2.5:[/color][/size][size=3]问请问PHP编程中处理中大致可以分为几种?[/size]
[size=3][/size]
提示:整数,数组,文件操作,错误处理,Cache,PECL/.DLL库...[/align]
[size=4]接口方面可分为11大力金刚接口,无人能敌也[/size]
[0] => Traversable
[1] => IteratorAggregate
[2] => Iterator
[3] => ArrayAccess
[4] => Serializable
[5] => Reflector
[6] => RecursiveIterator
[7] => OuterIterator
[8] => Countable
[9] => SeekableIterator
[10] => SplObserver
[11] => SplSubject
[align=left]自带的常用基类大致有100多个[/align]
[align=left]自带的方法有1294个functions[/align]
[align=left]自带的定义常量,不是语言结构的有1196个defined[/align]
[align=left]自带的变量如下:
$_POST[/align][align=left] $_GET[/align][align=left] $_COOKIE[/align][align=left] $_FILES [/align][align=left]
[size=5][color=red]2.6:[size=4][color=black]请分析一下[/color][/size][url=http://www.phpopenbiz.org/][size=4][color=black]www.phpopenbiz.org[/color][/size][/url][/color][/size][size=4][color=black] Metadata 数据结构优点?[/color]
[/size][size=2][color=black]2.2.1,OpenBiz可以在eclipse下开发php,支持MetaData数据驱动,可视化UI[/color][/size]
[size=2][color=#000000]MVC+万能数据驱动+SMARTY+otherLibrary.[/color][/size]
[size=4][color=red]本答案来自 49ers网友本贴回复,分析得十分出色.[/color][/size]
我来回复一下Metadata 数据结构优点。
Openbiz ([url=http://www.phpopenbiz.org/]www.phpopenbiz.org[/url]) 框架的最大特点是它的Metadata 驱动理念。Metadata 驱动的设计思想被成功地用在国外商业系统中。目前好象只有Openbiz是应用该理念的PHP开源框架。
什么是Metadata呢?
Openbiz metadata 文件被用来作为Openbiz 类的配置文件。所有Openbiz 的类都是通用类。这意味着此类并不绑定在某一个事物上。将不同的metadata连接到该类上,该类就能代表不同的事物。举例来说,将DO_Student.xml 连接到BizDataObj类上,BizDataObj 类就代表一个student对象;而将DO_School.xml 连接到BizDataObj类上,BizDataObj 类就代表一个school对象。
修改Metadata便可修改应用的逻辑,这是Metadata 的最大好处。 应用的开发意味着大部分工作是编写metadata文件,而不是传统开发的编程。用metadata描述的应用会有更清晰的逻辑和设计。
Openbiz Metadata的特点:
o 灵活性。Metadata文件可以连接的Openbiz的核心类或客户在Openbiz核心类上自创的类。这样在自创类中来实现特殊的逻辑。
o 继承性。一个metadata文件可以继承另一metadata文件。子metadata可以重用父metadata的所有属性。
o 可扩展性。Metadata 是一个XML文件。程序员可以自由在metadata中加入新的元素来给metadata更强的表达性。
Openbiz Metadata的表达能力涵盖了web应用中常见的功能
o 对象关系映射(ORM) – metadata用来描述数据库表和对象之间的映射,也用来描述对象之间的关系。
o 模型-视图-控制器(MVC) – metadata用来定义界面控制(比如一个按钮)与服务器端的实践响应行动(比如一个对象方法)。
o 安全性 – metadata用来描述几种不同的安全模式,包括用户认证, 视图控制和数据访问控制。
o 渲染 – metadata可用来定义HTML元件的渲染方式。
o 数据验证 -metadata 可用来定义怎样来验证用户的输入。
o 表达式 – metadata 有一套表达式语言来表述较复杂的逻辑。
在我看来基于XML的metadata给我们带来的好处有:
o 易懂易学。Metadata 能比代码更好地表现对象的属性。而且Openbiz核心的metadata组件给出了一个清晰的多层类的结构。这降低了因为不良编程给应用带来的风险。
o 快速开发。Openbiz Eclipse plugin作为metadata的可视化编辑器, 它可以帮助各个水平的程序员在短时间作出企业级web应用。
o 迅速部署。基于Openbiz的应用是完全可重配置的,这样它能够迅速因需求而变化。
o 低维护费用。管理Openbiz的Metadata比起管理程序要简单得多。
Openbiz 核心类的简化类图在[url=http://www.phpopenbiz.org/jim/manual_cfg_hz.html#cls_diagram]http://www.phpopenbiz.org/jim/manual_cfg_hz.html#cls_diagram[/url] 可以找到。
[size=2][color=#000000][/color][/size]
[size=4][color=red][size=5]2.7:[/size][/color][color=black]请分析SPL架构思想,07.08.09.10年PHP高效编程导向.[/color][/size]
[size=4][color=#000000][/color][/size]
[size=2][color=black]提示:重点分析一下核心接口类.[/color][/size]
[size=2][color=#000000]参考网址:[url=http://www.php.net/%7Ehelly/]http://www.php.net/~helly/[/url][/color][/size]
[size=2][color=#000000][/color][/size]
[size=2][color=#000000][/color][/size]
[size=2][color=#000000]此全面剖面在分析完毕后会提交给PHPChina-PHPER杂志.[/color][/size]
[url=http://docs.google.com/Doc?id=dgr4w74d_9fk6xf9]http://docs.google.com/Doc?id=dgr4w74d_9fk6xf9[/url]
[size=3][color=#ff0000][/color][/size]
[size=5][color=blue]B类属于职业思考问题,让大家有时间想想.[/color][/size]
[size=5][color=#0000ff][/color][/size]
[size=5][color=#0000ff][/color][/size]
[size=5][color=#ff0000]B:2.1:[/color][/size][size=3]在一个团队中,你如何合作?([color=red]没有工作经验的人,很难,很难回答[/color])[/size]
2.2.1:同事比你强时,你是什么态度?
2.2.2:同事比你弱时,你是什么态度?
2.2.3:上级比你笨,技术不如你时,你是什么态度?
2.2.4:下级技术不行,出于生存与在公司的利益关系,你会放心把所有技术都教给他吗?\
2.2.5:当同事做出成绩时,而自己表现并不怎样,你如何处理自己在公司发展?
2.2.6:你如何规划自己人生?
提示:团队协同作战,任何有作为团队必备要素,单人出突现代网络已变得不现实,赚到的钱最多只够自己生存.
提示要点:领会团队精神,不再以自己为中心,每个人都有用处,你不可能永远是太阳.
提示原则:不放弃,不抛弃.
[size=5][color=red]B:2.2: [size=3][color=#000000]中高级PHPER心态编程题目:[/color][/size][/color][/size]
[size=3][color=#000000][/color][/size]
[size=2][color=#000000]2.3.1:你是否有时心态太乱,无法静下心来编码?[/color][/size]
[size=2][color=#000000]2.3.2:你如何看待编程?你应保持什么心态?[/color][/size]
[size=3][color=#000000][/color][/size]
[size=4][color=red]以下为第一季题目,有兴趣网友继续更新...[/color][/size]
[size=5][color=#ff0000]第一季PHP禅意花园[/color][/size]
[size=5][color=#ff0000][/color][/size]
请取出PHPCHINA首页meta标签中的description内容,打印出来?
意义:让你了解如何获取远程文件内容,并运用正则方法提出想要的内容?会这步,做采集也就很容易入手了!^_^
大伙们在这道题上答得不错,思路是正确的.但有些朋友在一些细节并未注意,编程讲的虽然是编程思想,但最好不要粗心大意.
meta tags这在SEO优化方面很重要.有兴趣的朋友可以参考这些资料,北京PEA常委之一九头鸟在这方面有些研究,
大伙可以讲他聊聊.为人很热情.值得大家交的朋友.^_^
以下是我给大家的参考方案!
[php]
<?php
/**
* @package ThinkOfPHP
* @author Jiania <[email=jiania@gmail.com]jiania@gmail.com[/email]>
* @link [url=http://www.jiania.com/]http://www.jiania.com[/url]
* @copyright Jiania Group
* @return string
*/
//The first solution is use get_meta_tars function
$url="[url=http://www.phpchina.com/]http://www.phpchina.com[/url]";
$getContent=get_meta_tags($url);
echo $getContent['description'];
//The second solution is use regular expression
$html = file_get_contents("[url=http://www.phpchina.com/]http://www.phpchina.com[/url]");
preg_match_all("/name=\"description\" content=\"(.*)\"/",$html,$out);
echo ($out[1][0]);
?>
[/php]
第二道题目是:
2.请用PHP代码写出PHPCHINA 所运行的web服务器名称,网站使用何种语言,何种版本?
意义:考验协议的了解与相关高级PHP应用的思路,很简单.(现实中有时需要快速分析对手信息)
提示:TCP/IP协议中,在大多数未特别设安全关卡情况,可通过HEADER头获取,CURL可以简单实现.大伙也谈得相当好,思路大致相同,只是还需注意细节.
cURL在商业实战中相当重要,大伙可以好好学习,对于解一些加密的MP3,MOVIE等很有用.商业黑客常有的tools.老板常会问你,这个网站用的是什么语言做的.对方服务器用的是什么?可能之前你不知道怎样回答,现在明白了吧.可以应付大多数网站了.哈哈.以下是我给大家的参考答案:
[php]
<?php
/**
* @package ThinkOfPHP
* @author Jiania <[email=jiania@gmail.com]jiania@gmail.com[/email]>
* @link [url=http://www.jiania.com/]http://www.jiania.com[/url]
* @copyright Jiania Group
* @return string
*/
//The first solution is use get_headers function
$url="http://www.phpchina.com";
print_r($getContent=get_headers($url));
//The second solution is use socket method.
function my_get_headers($url ) {
$url_info=parse_url($url);
if (isset($url_info['scheme']) && $url_info['scheme'] == 'https') {
$port = 443;
@$fp=fsockopen('ssl://'.$url_info['host'], $port, $errno, $errstr, 10);
} else {
$port = isset($url_info['port']) ? $url_info['port'] : 80;
@$fp=fsockopen($url_info['host'], $port, $errno, $errstr, 10);
}
if($fp) {
stream_set_timeout($fp, 10);
$head = "HEAD "[email=.@$url_info[].@$url_info['path']."?".@$url_info['query'[/email]];
$head .= " HTTP/1.0\r\nHost: "[email=.@$url_info[].@$url_info['host']."\r\n\r\n[/email]";
fputs($fp, $head);
while(!feof($fp)) {
if($header=trim(fgets($fp, 1024))) {
$sc_pos = strpos( $header, ':' );
if( $sc_pos === false ) {
$headers['status'] = $header;
} else {
$label = substr( $header, 0, $sc_pos );
$value = substr( $header, $sc_pos+1 );
$headers[strtolower($label)] = trim($value);
}
}
}
return $headers;
}
else {
return false;
}
}
print_r(my_get_headers($url))
// install cURl extended before use.
//The three solution is use cURL method
$url="http://www.phpchina.com";
$curl_handle=curl_init();
curl_setopt($curl_handle,CURLOPT_URL,$url);
curl_setopt($curl_handle,CURLOPT_HEADER,1);
curl_setopt($curl_handle,CURLOPT_NOBODY,1);
curl_exec($curl_handle);
?>
[/php]
第三道题目是安全题目:
更新中,难倒很多人,其实很简单的攻击漏洞,我周六日有空再继续更新..
请找出下面程序漏洞,并分析其理由.
[php]
<?php
session_start();
$session_id = session_id();
echo "<p>你的session值为[$session_id].</p>";
?>
[/php]
解答如下:
把代码COPY到你的运行环境
笔者如下
[url=http://192.168.1.8/test.php]http://192.168.1.8/test.php[/url]
1.运行
你可以看到你的SESSION ID值
2.清空你所有cookies.然后你可以试编写一个session id
3.因为当函数session_start()运行时,php会检查是否有session id是否已写进cookie
4.如果没有,它会自动把值传给URL
see:[url=http://192.168.1.8/test.php?PHPSESSID=1234]http://192.168.1.8/test.php?PHPSESSID=1234[/url]
5.欺骗成功!
第四道题目是数据库结构设计:大型公用系统数据结构设计:ID5全国公民系统身份认证表 15亿条,你如何分表?
提示:身份证号码给合是有规律,以各省的值与分地区值做查询.下面公布北京国政通公司现实商业中的片断码供大家参考:^_^,JAVA版.但这跟数据库设计没有关系.
[url=http://www.jiania.com/demo/PHP/idcard/id5.java.txt]http://www.jiania.com/demo/PHP/idcard/id5.java.txt[/url]
附二:国家身份证标准文件说明
[url=http://www.jiania.com/demo/PHP/idcard/GB_10114_88.pdf]http://www.jiania.com/demo/PHP/idcard/GB_10114_88.pdf[/url]
附三:全国地区编码与地区城市名称数据库,请下载附件.(这是DEMO数值,供其它分布参考,调用)
[url=http://www.jiania.com/demo/PHP/idcard/idcard.sql.gz]http://www.jiania.com/demo/PHP/idcard/idcard.sql.gz[/url]
第五道题目是不同程序相互通信问题.Web Services /SOAP高级应用?
商业意义:目前在众多商业实战中,经常会碰到过不同平台接口问题,是中高级PHPER必备知识与水平.以第四道数据为基础,提供各省公安厅与各银行系统和相关单位提供接口查询与增加数据功能.
注意事项:
1.数据压缩
2.主机授权访问注意事项,ID5以IP为安全控制点.
3.身份证验证收费问题,如ID5网站[/align]
[[i] 本帖最后由 jiania 于 2008-9-8 23:57 编辑 [/i]] 斑竹真是费心了,搞了这么好的活动!
希望中,高级的PHPER们都积极响应起来! 恩,很有实践性的,第五题陌生点,其他的比较好做。。
回复 #5 wenfeng416 的帖子
懂得做就做出来,大伙儿也学学,大伙或许有比你更好的方案.你也可以快速学习. 靠,有时间了一定好好写,刚要去睡,查查手册大家都能写出来的,机会留给大家:lol :lol[[i] 本帖最后由 wenfeng416 于 2007-8-7 00:13 编辑 [/i]] [color=blue]在我印象中,jianjia楼主的帖子都是很好的。[/color]
回复 #5 wenfeng416 的帖子
支付接口那些也是, 我都不会.:L4
配置:session.use_cookies原因就是当其值为0时session不使用cookie记录session_id而只用url方式传递session_id值,所以只能用form表单或url来传递id
当其值为1时,session使用sookie来记录session_id,所以只要网页不关闭,而且保证每页开始都有session start(),那么整个网站的每个页都会用这个cookie记录的这个唯一的session_id来对这个session文件进行读写~~~
如果浏览器不支持cookie的话使用session还是有很多麻烦的地方的~~~我们如果太多的使用session的话,也会出许多问题的. 都是精华的东西,支持。 感觉有点难, 想了,还是不怎么会. :') 很想看一斑竹给答案.期待中.................... 支持,关注! 赞一个,好建议!希望能继续下去。。 不错,强烈关注! :victory: 关注.... 怎么就一个兄弟回答呀? 关注关注...
第一题
$html = file_get_contents("http://www.phpchina.com");preg_match("/name=\"description\" content=\"(.*)\"/",$html,$out);
print_r($out);
第二题
[php]echo "<pre>";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, "http://www.phpchina.com");
curl_setopt ($ch, CURLOPT_HEADER, true);
curl_setopt ($ch,CURLOPT_NOBODY,true);
curl_exec ($ch);
curl_close ($ch);
echo "</pre>";
[/php]
[[i] 本帖最后由 yepiaobo 于 2007-8-7 23:44 编辑 [/i]]
