- [ PHP 技巧 ] 基于PHP的cURL快速入门
点击:0 发布日期:02/21
cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。最爽的是,php也支持 cURL 库。本文将介绍 cURL 的一些高级特性,以及在PHP中如何运用它。
为什么要用 cURL?
是的,我们可以通过其他办法获取网页内容。大多数时候,我因为想偷懒,都直接用简单的php函数:
$content = file_get_contents("http://www.bizhicool.com");
// or
$lines = file("http://www.bizhicool.com");
// or
readfile(http://www.bizhicool.com);不过,这种做法缺乏灵活性和有效的错误处理。而且,你也不能用它完成一些高难度任务——比如处理coockies、验证、表单提交、文件上传等等。
cURL 是一种功能强大的库,支持很多不同的协议、选项,能提供 URL 请求相关的各种细节信息。
基本结构
在学习更为复杂的功能之前,先来看一下在php中建立cURL请求的基本步骤:
初始化
设置变量
执行并获取结果
释放cURL句柄
// 1. 初始化
$ch = curl_init();
// 2. 设置选项,包括URL
curl_setopt($ch, CURLOPT_URL, "http://www.bizhicool.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_set..
- [ PHP 编程 ] Facebook 将重写 PHP 运行环境
点击:0 发布日期:02/02
Facebook将帮助PHP团队重写PHP Runtime源代码,并将新的运行环境开源。原因是由于现有的PHP框架不能满足Facebook对网站速度的要求。新的运行环境可能会给PHP开发社区带来新的活力。请看原文译稿。
一周前,我跟大家说PHP核心团队曾去过Facebook总部,并被迫签署了保密协议,然后被带到一间非常安静、被隔绝的会议室中,在那里,他们获知了一些非常酷的由Facebook支持的开源项目。
好吧,我在这里总结一下吧。最终我清楚在那儿发生什么了:Facebook打算从头开始写PHP runtime。本周二,他们将围绕该项目举行大型宣讲会,并将让其变为开源软件。对此项目的细节我一无所知,但我知道Facebook在2年前确实雇了人来从事这一方面。而且我很确信,这一直都是一个人的项目。
那么,为什么Facebook重写PHP runtime?因为PHP显然不能跟上Facebook的速度。几年前,我和Zend的人喝过咖啡。他们问我,从我得知的消息中,人们是怎么看待PHP的,我犹豫不决,然后告诉他们人们抱怨PHP很慢。现在,我个人认为PHP不慢:它根本就不是为承担像Java和.NET所承担的工作量而开发的语言。
但这仍不能改变PHP在服务器上运行缓慢的事实。好吧,当我这么跟Zend的人说时,他们当时的反应就像盖世太保侦..
- [ 高级应用 ] PHP实现Socket服务器
点击:1551 发布日期:06/30
<?php
ob_implicit_flush();
set_time_limit(0);
$address = "192.40.7.93";//换成你自己的地址
$port = 10000;
if(($socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP)) == false)
echo "错误(socket_create):".socket_strerror(socket_last_error())."<br />";
if(socket_bind($socket,$address,$port) == false)
echo "错误(socket_bind):".socket_strerror(socket_last_error())."<br />";
if(socket_listen($socket) == false)
echo "错误(socket_listen):".socket_strerror(socket_last_error())."<br />";
/*
After the socket socket has been created using socket_create() and bound to a name with socket_bind(),
it may be told to listen for incoming connections on socket.
*/
while(true){
if(($msgSocket = socket_accept($socket)) == false){
echo "错误(socket_accept):".socket_strerror(socket_last_error())."<br />";
&n..
- [ 高级应用 ] [心得] 基于squid面向apache作反向代理的php程序设计技..
点击:746 发布日期:10/08
squid 已经不再仅仅是一个 proxy server了,越来越多的站点采用 squid 作
前端服务,后方运行着若干台真正的 web server(apache)在服务... (注: 就算只
有一台服务器, 也可以同时安装squid +apache一起服务),squid 本身强劲的缓存
设计大大提升 web 效率。
squid, apache 的配置安装均不是本文的重点,在此也不详述。一般情况下这
些缓存设计都擅长于静态网页或小图片或小文件等,而对于较为复杂的动态页面,
作这样的缓存均可能带来用户浏览效果的不实时,往往导致后端页面更新了前端却
还没有及时刷新,非常不爽。
其实在 php 脚本中, 结合 HTTP 标准头中有2个重要的标签可以很好的解决
这个困扰。即服务端发送的 Last-Modifed 和 客户端发送的 If-Modified-From 。
带 cache 的 squid 反向代理的工作关系流程图大致如下:
CODE:
[Copy to clipboard]
返回给用户
+-----------------------------------..
- [ 基础文章 ] PHP下一代的五个framework介绍
点击:992 发布日期:08/09
随便编写php的日子将远去了。下面有5个下一代的php框架。每个框架都为php下一步发展做了高深设计,许多都应和Ruby on Rails,快速开发动态语言,更有甚者, php on trax 直指 Ruby on Rails。如下面所列的frameworks,我学习了 AGAVI 就像 Symfony 一样轻松。我诚实的说我不愿望编写php还像以前那么自由散漫。使用这些frameworks将使用你的工作变得容易。 Symfony Homepage - AJAX Screencast
在Nation.com工作时,我曾经很开心的学习,可以说拥抱这个frameworks。Symfony的亮点是Ajax的实现,包括所有的Script.aculo.us一系列的javascript效果。Symfony也可以产生propel CRUD与数据库的面对象编程。那就是说可以操作sql就像操作对象一样轻松。
CakePHP Homepage-15 Minute Blog Tutorial
cakePHP frameworks近期发布1.0稳定版。Cake的强烈的面向对象规则使有面向对象开发经验的人很容易使用。象其他frameworks一样,cake也保持了快速开发与AJAX的实现。如果你不知道frameworks,那么CakePHP是比较好的选择,自从1.0的发布,用户使用的增多,在下两个月里,将会在激活整个社区!
Zend Homepage
PHPArch.com最近推荐zend f..
- [ 基础文章 ] PHP新手上路(五)
点击:1600 发布日期:08/03
建设一个简单交互的网站(一)
PHP的许多特点与其他软件或者工具有关。利用迄今为止我们所学到的PHP知识,我们可以试着建立一个简单交互的网站。利用这一过程我们又可以学到不少东西。好吧,我们现在开始专注于一个典型个人网站的建设。
5.1 计划一个站点
一般一个个人站点包括一个欢迎页面、一个留言本页面、一个书签链接页面、一个计数器、联系信息,甚至还有照片集和一些音乐文件等等。
5.2 用include和require进行模块化
我们看一些用PHP构架的网站,几乎网站每一个页面的PHP文件里都会有include和require嵌入其间。这是因为使用include和require不但可增强代码的可读性,而且可将站点分成模块来管理。一般来说,对于一个网站上的每个页面肯定会有重复的内容。例如:页面头部的导航条、广告图标、或边部导航等。可能还在每页的页脚即页面的底部有著作权或一些基于文本的导航条。如果我们要修改一个包含成千上百个页面的大网站上的导航条或是徽标之类的内容,用我们以往的方法,我们只能遂一对每一页面进行更改。不用我说,大家也能想像到这是一件多么艰巨而痛苦的差事。那么,我们到底有没有更好的解决方法呢?答案是肯定的。我们可以将重复的内容都..
- [ PHP 函数 ] PHP中的类
点击:609 发布日期:08/03
我觉得自从使用PHP以来最难以理解的概念就是PHP的类。我除了正在学习MySQL一些基本知识以外,对于其他的数据库引擎没有经验。此前对于OOP面向对象编程我也没有经验,OOP对于我来说也是个新鲜事物,但是通过对其原理以及为何如此强大的理解,使我有了一定的我了解如果任何程序都用OOP来实现的话,无疑会得到一个强大的程序;但是对我而言,如果我只是认为自己了解了其中的机制,而不把这种理解应用到编程实践,OOP对我来说将始终停留在纸上谈兵的层次上。于是,几天前,在利用常规的函数来实现一些功能时,我尝试采用对象来实现,我发现的确这让我的工作更加简单了!于是我将这些经验写出来,希望能够帮助象我一样的人们。 类说穿了就是一些变量(OOP概念中的成员变量,译者注)和一些操作处理这些变量的函数(OOP概念中的成员函数)的集合。它提供了一种在程序中以现实生活的形态来思考问题的方法,换句话说,就是描述了一个对象。反之,一个对象或者实例,就是这个类的真正实现。比如说我们要描述一辆自行车:一个合适的自行车类应该含有如下变量:$pedals(脚蹬),$chain(链条),$front wheel(前轮),$rear wheel(后轮),$brakes(刹车), and $handl_bars(车把)。你可以参考现实生活..
- [ PHP 函数 ] 使用"函数递归"实现基于php和MySQL的动态树型菜单
点击:783 发布日期:08/03
树型菜单在很多桌面应用系统中都有非常广泛的应用,其主要优点是结构清晰,利于使用者非常清楚的知道目前自己所在的位置。但在web上树型菜单的应用因为没有理想的现成组件可以拿过来直接使用,所以一般的情况下,程序员主要是通过JavaScript来实现一些简单的树型结构菜单,但这些菜单往往都是事先定好各菜单项目,以及各菜单项目之间的层次关系,不利于扩充,一旦需要另一个菜单结构时,往往还需要重新编写,因此使用起来不是很方便。 经过对函数递归的研究,我发现这种树型菜单可以通过递归函数,使树型菜单的显示实现动态变化,并没有级数的限制。下面就是我用php,MySQL,JavaScript写的一个动态树型菜单的处理代码,如果大家有兴趣的话,就和我一起来看看我是如何实现的吧:) 首先,我们需要一个数据库,在这个数据库中,我们建立以下一张表:
CREATE TABLE menu ( id tinyint(4) NOT NULL auto_increment, parent_id tinyint(4) DEFAULT '0' NOT NULL, name varchar(20), url varchar(60), PRIMARY KEY (id) ); 这张表中 id 为索引 parent_id 用来保存上一级菜单的id号,如果是一级菜单则为0 name 为菜单的名称,也就是要在页面上显示的菜单内容 url 如果某菜单为末级菜..
- [ PHP 函数 ] PHP4 的新函数介绍 - 输出信息控制函数
点击:444 发布日期:08/03
这些函数可以让你控制你的脚本输出的内容.可以用于许多不同的情况,特别是在你的脚本已经输出信息后需要发送文件头新的情况. 输出控制函数不对使用 header() 或 setcookie() 发送的文件头信息产生影响,只对那些类似于 echo() 和 PHP 代码的数据块有作用. 例 1. 控制输出 <?php ob_start(); echo "Hellon"; setcookie ("cookiename", "cookiedata"); ob_end_flush(); ?> 在上面的例子中,使用 echo() 的输出内容将会保存在输出缓冲区中,直到调用了 ob_end_flush(). 这样做有意义的地方是,调用 setcookie() 的内容被成功的存储在 cookie 里面而不会引起错误. (正常情况下,你不可以在有数据已经发送后再发送文件头信息到用户浏览器.) 相关函数 header() and setcookie(). 韩数列表 flush — 刷新输出缓冲区 保存在输出缓冲区的内容会被发送到浏览器 ob_start — 打开输出缓冲区 这样所有的输出信息不在直接发送到浏览器,而是保存在输出缓冲区里面 ob_get_contents — 返回输出缓冲区的内容 如果你想以后处理输出的内容,可以调用这个函数保留一个备份 ob_get_length — 返回输出缓冲区的内容长度 ob_end_flush — 结束(发送)输出缓冲区的内容,关闭输出缓冲区 ob_end..
- [ PHP 技巧 ] PHP输出控制功能在简繁体转换中的应用
点击:165 发布日期:08/03
概要:本文对PHP的输出控制功能进行了简单介绍并对其在简繁体转化中的应用给出了具体思路和实例 一 PHP 输出控制功能介绍 PHP作为当今流行的脚本语言之一,具有编写简便,执行速度快,扩充性好等优点。PHP的输出信息控制函数可以让你控制你的脚本输出的内容,可以用于许多不同的情况,特别是在你的脚本已经输出信息后需要发送文件头的情况以及需要对输出信息进行编辑处理的地方。输出控制函数不对使用 header() 或 setcookie() 发送的文件头信息产生影响,只对那些类似于 echo()、print() 和 PHP 代码的数据块有作用。 例 1. 控制输出 test.php <? function test($str){ return str_replace("php2000","y10k",$str); } ob_start("test"); echo "hello php2000"; ob_end_flush(); ?> 这个程序在没有输出信息控制的情况下应该输出为 hello php2000 但通过指定了输出控制函数后,输出变为 hello y10k 在上面的例子中,使用 echo() 的输出内容将会保存在输出缓冲区中,直到调用了 ob_end_flush()或者脚本运行终止, 然后输出信息由自定义的处理函数进行处理(替换里面的字符串)并返回结果。 相关函数说明 ob_start([string output_callback])- 打开输出缓冲区 所有的输出..
- [ PHP 技巧 ] Cookie及其使用(一)
点击:1033 发布日期:08/03
Cookie技术是一个非常有争议的技术,自经诞生它就成了广大网络用户和Web开发人员的一个争论焦点。有一些网络用户,甚至包括一些资深的Web专家也对它的产生和推广感到不满,这倒不是因为Cookie技术的功能太弱或别的技术性能上的原因,而仅仅是因为他们觉得Cookie的使用,对网络用户的隐私构成了危害。因为Cookie是由Web服务器保存在用户浏览器上的小文本文件,它包含有关用户的信息(如身份识别号码、密码、用户在Web站点上购物的方式或用户访问该站点的次数)。 那么Cookie技术究竟怎样呢?是否真的给网络用户带来了个人隐私的危害呢?还是让我们看了下面的内容,再做回答吧。 (1)Cookie技术简介 在WEB技术发展史上,Cookie技术的出现是一个重大的变革。最先是Netscape在它的Netscape Navigator 浏览器中引入了Cookie技术,从那时起,World Wide Web 协会就开始支持Cookie标准。以后又经过微软的大力推广(因为微软的IIS Web服务器所采用的ASP技术很大程度的使用了Cookier技术),即在微软的Internet Explorer浏览器中完全支持Cookie技术。到现在,绝大多数的浏览器都支持Cookie技术,或者至少兼容Cookie技术的使用。 1)什么是Cookie? 按照Netscape官方文档中的定义,Cook..
- [ 数据库相关 ] ORACLE回滚段的概念,用法和规划及问题的解决
点击:463 发布日期:08/03
回滚段管理一直是ORACLE数据库管理的一个难题,本文通过实例介绍ORACLE回滚段的概念,用法和规划及问题的解决。 回滚段概述 回滚段用于存放数据修改之前的值(包括数据修改之前的位置和值)。回滚段的头部包含正在使用的该回滚段事务的信息。一个事务只能使用一个回滚段来存放它的回滚信息,而一个回滚段可以存放多个事务的回滚信息。 回滚段的作用 事务回滚:当事务修改表中数据的时候,该数据修改前的值(即前影像)会存放在回滚段中,当用户回滚事务(ROLLBACK)时,ORACLE将会利用回滚段中的数据前影像来将修改的数据恢复到原来的值。 事务恢复:当事务正在处理的时候,例程失败,回滚段的信息保存在重做日志文件中,ORACLE将在下次打开数据库时利用回滚来恢复未提交的数据。 读一致性:当一个会话正在修改数据时,其他的会话将看不到该会话未提交的修改。而且,当一个语句正在执行时,该语句将看不到从该语句开始执行后的未提交的修改(语句级读一致性)。当ORACLE执行SELECT语句时,ORACLE依照当前的系统改变号(SYSTEM CHANGE NUMBER-SCN)来保证任何前于当前SCN的未提交的改变不被该语句处理。可以想象:当一个长时间的查询正在执行时,若其他会话改变..
- [ 高级应用 ] 如何文档化你的PHP类
点击:304 发布日期:08/03
你已经阅读过关于:面向对象编程可以帮助你管理你的大型web项目,并且你已经开始使用PHP来进行面向对象编程了吗?如果你已经编写了几个类应用在网站上并且你是一个有条理的人的话,那么你应该已经编写了关于它们的一些文档。但是如果你是一个象我一样的不拘小节的人,你只是会在类的源代码中加一些注释而没有别的文档。没有文档就很难记住方法的名字和它们的使用方法(参数和含义)。解决这种情况最典型的办法就是打开源代码文件,从成百上千的语句中查找。
类似Javadoc的文档 应该有一种好的方法----如果你曾经使用过Java语言,你将知道Javadoc文档系统。这个工具允许你在源代码文件注释中插入一些标记,这些标记可以被Javadoc工具进行分析以便生成一系列的HTML页面把你的类文档化。那样在编程的同时你可以开着浏览器并且可以得到类列表和带有说明的类方法的列表。在你开发web应用时,这个可以成为你的参考,提高工作效率和加快开发速度。
我的意见是维护一个作为源代码内的引用文档要比维护一个独立的文档要容易和更实用,因为这个方法更容易保持更新。否则就非常容易变得懒惰从..
- [ 高级应用 ] 在PHP中用Socket发送电子邮件(二)
点击:203 发布日期:08/03
send_mail类的实现
现在开始介绍我所编写的发送邮件类。有了上面的预备知识了,下面就是实现了。
类的成员变量 var $lastmessage; //记录最后返回的响应信息
var $lastact; //最后的动作,字符串形式
var $welcome; //用在HELO后面,欢迎用户
var $debug; //是否显示调试信息
var $smtp; //smtp服务器
var $port; //smtp端口号
var $fp; //socket句柄
其中,$lastmessage和$lastact用于记录最后一次响应信息及执行的命令,当出错时,用户可以使用它们。为了测试需要,我还定义了$debug变量,当其值为true时,会在运行过程中显示一些执行信息,否则无任何输出。$fp用于保存打开后的socket句柄。
类的构造
function send_mail($smtp, $welcome="", $debug=false)
{
if(empty($smtp)) die("SMTP cannt be NULL!");
$this->smtp=$smtp;
if(empty($welcome))
{
$this->welcome=gethostbyaddr("localhost");
}
else
$this->welcome=$welcome;
$t..
- [ PHP 技巧 ] PHP用户指南-cookies部分
点击:250 发布日期:08/03
PHP用户指南-cookies部分 在这课教程我们将学习怎样利用 PHP 处理cookies,我将试着使事情尽可能简单地去解释cookies的一些实际应用。 什么是cookies及作用? cookies是由web服务器产生的并且存在客户端的一些信息。它嵌在html信息中,由服务器端指定,在客户端及服务器端间传递信息 。它通常用来:用户网页个性化,计数器,储存被浏览站点的信息等。 cookies和php 在 PHP中用cookies是相当容易的。可以使用setcookie函数设置一个cookie。cookie是 HTTP标头的一部分, 因此设置cookie功能必须在任何内容送到浏览器之前。这种限制与header()函数一样。任何从客户端传来的cookie将自动地转化成一个PHP变量。PHP取得信息头并分析, 提取cookie名并变成变量。因此,如果你设置cookie如setcookie("mycookie","wang");php将自动产生一个名为$mycookie,值为"wang"的变量. 先让我们复习一下setcookie函数语法: setcookie(string CookieName, string CookieValue, int CookieExpireTime, path, domain, int secure); PATH:表示web服务器上的目录,默认为被调用页面所在目录 DOMAIN:cookie可以使用的域名,默认为被调用页面的域名。这个域名必须包含两个".",所以如果你指定你的..
- [ PHP 技巧 ] 配置PHP使之能同时支持GIF和JPEG
点击:204 发布日期:08/03
问题:安装蓝点Linux 2.0后,进行PHP编程,发现只能处理GIF图像,不能处理JPEG图像。后来知道PHP处理图像,使用了GD库,而GD库开始时是支持GIF的,但由于GIF使用了有版权争议的LZW算法,会引起法律问题,于是从GD-1.6开始,GD库不再支持GIF,改为支持更好的,无版权争议的PNG。而我现在希望同时支持GIF,PNG和JPEG。经过尝试,我成功地做到了这一点。下面介绍具体做法。我的配置为:蓝点Linux 2.0,Kernel-2.2.16,MySQL-3.23.10alpha,Apache-1.3.12,PHP4.0.1pl2,gd-1.8.3,Jpeg6b。我将按照由底向上的顺序介绍,即Jpeg->GD->PHP->Apache。 0、 当前状态查看 安装蓝点Linux 2.0后,Kernel,MySQL,Apache未做任何改变,看看当前状态如何。 创建一PHP文件,名为info.php,放于Apahce的文档目录下(/etc/httpd/html),其内容如下: <? phpinfo(); ?> 文件就只有1行。用浏览器打开该文件URL(我的hostname为zhangzh): http://zhangzh/info.php 如果Apache/PHP正常运行的话,页面中将会列出PHP版本,Apache版本,以及其他各种有用的信息。我关心的是GD库部分,看看它是否支持GIF、JPEG,结果发现支持GIF而不支持JPEG。 1、 Jpeg6b的安装和配置 Jpeg的..
- [ PHP 实例 ] 杏林同学录(四)
点击:195 发布日期:08/03
个人管理: 班级通讯录:class/address.php <? session_start(); // 开始session if(!session_is_registered("userregister")||($userregister==""))//检查是否注册,如userregister未注册或session为空值,重新注册. { echo "<a href='../index.php'>请重新注册<BR>"; exit; } ?> <HTML> <HEAD> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <TITLE>班级通讯录</TITLE> <style type="text/css"> <!-- .white12 { font-size: 12pt; color: #FFFFFF; text-decoration: none} .blue9 { font-size: 9pt; color: #9999FF} --> </style> </HEAD> <BODY BGCOLOR="#FFFFFF"> <table width="98%" border="0" cellspacing="0" cellpadding="0" height="65"> <tr> <td width="35%"><img src="image/classlogo.gif" width="224" height="60"> </td> <td width="65%"> &..
- [ 高级应用 ] 创造世界上最简单的------php开发模式
点击:1030 发布日期:08/03
/*************************//* author:大龄青年/* email :wenadmin@sina.com/* from: http://blog.csdn.net/hahawen/*************************/
原代码下载: http://club.phpe.net/index.php?s=&act=Attach&type=post&id=29432
(近来帮许多网友改程序,发现一个问题,就是大家用php开发设计模式的非常的混乱,所以写下这篇文章,希望对大家都有帮助)php作为“最简单”的Web脚本语言, 在国内的市场越来越大,phper越来越多,但是感觉大多数人好像没有考虑到模式问题,什么样的设计模式才是最优的,才是最适合自己目前工作的,毕竟效率是最重要的(用省下的时间打游戏,多美啊...)。MVC应该是首选,www.sourceforge.net 上有好多优秀的基于MVC的开源项目,大家可以冲过去研究研究。
前几天给自己公司网站改版,主要还是文章发布系统,老板说后台我想怎么设计就怎么设计,唯一的前提就是快。于是自己搭建了一个简单的发布系统的框架。如果单纯从文章发布系统上讲,基本上可以满足“中小型”企业网站的文章发布系统的要求,后台的总共的php代码不超过800行,而且支持任意扩充和plugin功能。
废话不再说了,下面把我的架构讲一下,希望对您能有所帮助..
- [ 基础文章 ] PHP中的面向对象和面向过程
点击:1128 发布日期:08/03
本文针对的读者本文针对希望了解PHP中有关面向对象与面向过程两种编程方式的读者,包括新手和老手。假设读者对PHP及类的使用有一定程度的熟悉。简介“真正的天才具有正确评价不确定的,有风险的和矛盾的信息的能力。--邱吉尔”使用许多编程语言时,你通常只能使用面向对象或面向过程二者之一的编程方式。而在PHP中,你可以自由选择或混用。目前绝大多数PHP程序员使用面向过程的方式,因为解析WEB页面本身就非常“过程化”(从一个标签到另一个标签)。在HTML中嵌入过程处理代码是很直接自然的作法,所以PHP程序员通常使用这种方式。如果你是刚接触PHP,用面向过程的风格来书写代码很可能是你唯一的选择。但是如果你经常上PHP论坛和新闻组的话,你应该会看到有关“对象”的文章。你也可能看到过如何书写面向对象的PHP代码的教程。或者你也可能下载过一些现成的类库,并尝试着去实例化其中的对象和使用类方法--尽管你可能没有真正理解这些类为什么可以工作,或者为什么需要使用面向对象的方法来实现功能。应该使用“面向对象”的风格还是“面向过程”的风格?双方各有支持者。像“对象是低效的”或“对象非常棒”这样的议论也时有耳闻。本文不尝试轻易判定两种方法的哪种具有绝对的..
- [ PHP 函数 ] php通用检测函数集
点击:539 发布日期:08/03
<? //【警告】:未经许可请勿随便修改 //----------------------------------------------------------------------------------- ------- //----------------------------------------------------------------------------------- ------- // // 【文件名】: c_check.inc // 【作 用】: 通用检测函数集 // 【作 者】: 天灰 // // 【最后修改日期】: 2001/05/11[cxx] // 【变量定义规则】:‘C_’=字符型,‘I_’=整型,‘N_’=数字型,‘L_’=布尔型,‘A_’=数 组型 //----------------------------------------------------------------------------------- ------- //----------------------------------------------------------------------------------- ------- // ※CheckMoney($C_Money) 检查数据是否是 99999.99格式 // ※CheckEmailAddr($C_mailaddr) 判断是否为有效邮件地 址 // ※CheckWebAddr($C_weburl) 判断是否为有效网址 // ※CheckEmpty($C_char) 判断字符串是否为空 // ※CheckLengthBetween($C_char, $I_len1, $I_len2=100) 判断是否为指定长度内 字符串 // ※CheckUser($C_user) 判断是否为合法用户名 // ※CheckPassword($C_passwd) 判断是否为合法用..
- [ PHP 实例 ] 生成加水印的图片类 (支持水印为图片或者文字)
点击:973 发布日期:08/03
gb2312.txt下载: 下载1 下载2
<?php/*+--------------------------------------------------------------------------| 生成加水印的图片类 (支持水印为图片或者文字)| ============================| by JackMing (感谢Dash和其他不知道姓名的朋友支持,本类在这些朋友作品的基础上创建)+--------------------------------------------------------------------------测试:
$img = new Gimage();$img->gburl = "inc/";//简体中文码文件路径//$img->wm_text = "我们都是中国人";$img->wm_text = "www.csdn.net";$img->wm_text_font = "c:\windows/fonts/STXINWEI.TTF";//字体文件的路径名+文件名//$img->wm_image_name = "image/mouse.jpg";//水印图片,注意包含路径名//$img->wm_text_size = 20;//字体大小针对文本水印$img->create("./mouse.jpg"); */
Class Gimage{ var $src_image_name = ""; //输入图片的文件名(必须包含路径名) var $jpeg_quality = 60; //jpeg图片质量 v..
- [ PHP 函数 ] header()函数使用说明
点击:1043 发布日期:08/03
header()函数使用说明: 一、作用: ~~~~~~~~~ PHP只是以HTTP协议将HTML文档的标头送到浏览器,告诉浏览器具体怎么处理这个页面,至于传送的内容则需要熟悉一下HTTP协议了,与PHP无关了,可参照http://www.w3.org/Protocols/rfc2616/rfc2616。 传统的标头一定包含下面三种标头之一,并只能出现一次。 Location: xxxx:yyyy/zzzz Content-Type: xxxx/yyyy Status: nnn xxxxxx 二、先来了解一下HTTP协议的运作方式 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ HTTP协议是基于请求/响应范式的。一个客户机与服务器建立连接后,发送一个请求给服务器,请求方式的格式为,统一资源标识符、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。服务器接到请求后,给予相应的响应信息,其格式为一个状态行包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可..
- [ PHP 技巧 ] PHP+MySQL分页显示示例分析
点击:1892 发布日期:02/06
Web开发是今后分布式程式开发的主流,通常的web开发都要涉及到与数据库打交道,客户端从服务器端读取通常都是以分页的形式来显示,一页一页的阅读起来既方便又美观。所以说写分页程序是web开发的一个重要组成部分,在这里,我们共同来研究分页程序的编写。
一、分页程序的原理
分页程序有两个非常重要的参数:每页显示几条记录($pagesize)和当前是第几页($page)。有了这两个参数就可以很方便的写出分页程序,我们以MySql数据库作为数据源,在mysql里如果要想取出表内某段特定内容可以使用的 T-SQL语句:select * from table limit offset,rows来实现。这里的offset是记录偏移量,它的计算方法是offset=$pagesize*($page-1),rows是要显示的记录条数,这里就是$page。也就是说select * from table limit 10,10这条语句的意思是取出表里从第11条记录开始的20条记录。
二、主要代码解析
$pagesize=10; //设置每一页显示的记录数
$conn=mysql_connect("localhost","root",""); //连接数据库
$rs=mysql_query("select count(*) from tb_product",$conn); //取得记录总数$rs
$myrow = mysql_fetch_array($rs);
$nu..
- [ PHP 技巧 ] php中实现多线程
点击:1020 发布日期:02/06
PHP中实现多线程? 看到这个标题, 你一定以为我疯了..但是事实上我真的这么做了.
下面是我的一些做法, 已经实验过. 确实可以的.
我们知道PHP本身是不支持多线程的, 但是我们的WEB服务器是支持多线程的.
也就是说可以同时让多人一起访问. 这也是我在PHP中实现多线程的基础.
假设我们现在运行的是a.php这个文件. 但是我在程序中又请求WEB服务器运行另一个b.php
那么这两个文件将是同时执行的.
(PS: 一个链接请求发送之后, WEB服务器就会执行它, 而不管客户端是否已经退出)
有些时候, 我们想运行的不是另一个文件, 而是本文件中的一部分代码.该怎么办呢?
其实可是通过参数来控制a.php来运行哪一段程序.
下面看一个例子:
//a.php
PHP代码:--------------------------------------------------------------------------------
<?php
function runThread()
{
$fp = fsockopen('localhost', 80, $errno, $errmsg);
fputs($fp, "GET /a.php?act=b\r\n\r\n");  ..
- [ 基础文章 ] 初学者入门:细述PHP4的核心Zend
点击:683 发布日期:02/06
Zend引擎的名称由Zeev Suraski和Andi Gutmans二位在PHP担任核心开发工作的资深设计师的名字合体.开发的目的师为了研发新的脚本执行机制,而PHP4就是这套崭新的Zend引擎的第一个实作产品。在一些特殊测试环境下,Zend(PHP$)的执行速度比PHP3及ASP快了几倍到几百倍之多,这也意味着网站的后端CGI界面的统一者非PHP4 Zend莫属了。(当然,技术是不断进步的,说不定哪一天又出现了新的引擎。)
Zend引擎在研发二年多之后,已经变成类似VBA功能的广义程式环境,它不但有传统的PHP函数功能,更增加了分散式物件(COM)的功能,并且能够在不同的操作平台上执行。以这种潜力发展下去,VBA的终结者非Zend莫属。
Zend在PHP4上实作时更针对了PHP3之前最大缺憾的session做了最完整的承诺,同时加入了一些未来的功能,如CyberCash...等等。
在opensource社群中,唯一能保持声势,却又尚未被微软公司视为竞争对手的,PHP/Zend是最好的例子。它已经完全地将ASP丢到了身后,正往VBA的环境发展。而微软只全力对付Linux,没有注意到来自PHP/Zend的威胁。
Web服务器发觉是PHP的要求,需要PHP引擎解析(根据文件的..
- [ PHP 安装 ] Windows下的PHP5.0安装配制详解
点击:1696 发布日期:02/06
PHP5包括以下一些重要的特征:
·支持新的对象模型和许多新特点的Zend引擎。
·完全重新编写了XML支持,扩展性能围绕着优秀的libxml2库(http://www.xmlsoft.org/)。
·新的SimpleXML扩展,PHP对象轻松访问操作。
·全新的内建SOAP扩展,支持Web服务的交换。
·增加命名为MySQLi的了MySQL的扩展,支持MySQL4.1及以后版本的功能。
·绑定SQLite数据库。
·极大地改进流的设计,包括通过流操作底层的socket
首先,点这里下载PHP5 FOR win32
然后我们开始吧
以PHP for Apache as CGI binary方式为例,我喜欢用这种方式。以安装目录c:\php为例;
将原先的php安装目录删除,解压php-5.0.0-Win32.zip到c:\php
重命名php.ini-dist为php.ini(跟php4一样)
修改Apache的httpd.conf文件。将原有跟php4邦定的语句删除。
用以下这几行代替:
ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php/php-cgi.exe"
修改php.ini中,去掉extension=php_mysql.dll前面“;”,默认是有..
- [ 基础文章 ] PHP.MVC的模板标签系统(四)
点击:234 发布日期:02/06
页面布局
在这个单元中我们将看到如何使用模板标签系统构造一个标准的模板页面。这个例子我们使用了一个简单的HTML页面布局,请看下图:
这个页面有多个标准单元组成,就像页面设计者和开发者熟悉的那样.这个页面的主体由3个包含的单元组成:页眉,页内容主体和页脚.我们现在就看看这些单元并且了解如何使用模板标签系统来实现.
页主体
下面的代码单元显示的是主体:
The Page Body Layout
1
<@ saleMonth = data.getValueBean('SALE_MONTH') @>
<@ saleTitle = data.getValueBean('SALE_TITLE') @>
<@ dealHeading = data.getValueBean('DEAL_HEADING') @>
<@ salesAreaID = "Central District" @>
<html>
<head>
<link rel='stylesheet' type='text/css' href="./style/pageStyles.css"/>
<title>
2 <@ =viewConfig.getAppTitle @>
</title>
</head>
<body>
<table ..
- [ 基础文章 ] PHP.MVC的模板标签系统(三)
点击:223 发布日期:02/06
PHP.MVC标签语法
在基本的介绍之后,我们现在就可以来看看模板标签系统的语法.
在看具体的标签之前,我们应该定义什么作为我们的标签.为了写一个标签,我们使用<@ ... @>标签结点.左标签(<@)和右标签(@>)是默认的标签.如果必要的话,这些标签我们能够在phpmvc-config.xml中重新定义.
模板标签系统现在支持以下3种标签:包含指令,声明和表达式.我们现在来看看这些指令.
包含指令
包含指令能让我们将内容分隔为许多模块,比如:页眉,页脚或者内容.包含的页面可以是HTML,或者其他标签模板页.据个例子,下面的包含指令能用来包含一个页眉:
<@ include 'pageHeader.ssp' @>
一个包含指令在模板上下文种的例子:
<html>
<head>
...
</head>
<body>
<center>
<table class='pageLayoutTable'>
<tr>
<td class='pageHeader'>
<@ include 'pageHeader.ssp' @>
&nb..
- [ 基础文章 ] PHP.MVC的模板标签系统(二)
点击:210 发布日期:02/06
The Php.MVC Tag Action Dispatcher
TagActionDispatcher是一个标准的ActionDispatcher类的实现,它支持访问基本模板标签.TagActionDispatcher类支持相同的ActionObjects集合和ViewResourcesConfig属性作为默认的ActionDispatcher.TagActionDispatcher类能被用在带有或没有带有模板标签系统上,尽管由于它的额外处理会造成小的性能下降.
模板标签库是PHP.MVC框架结构的子系统.模板标签库联合TagActionDispatcher一起工作来支持一些简单的模板标签.
下面的图表显示了PHP.MVC模板标签系统的总揽.左边展示的是模板标签系统的程序流程.右边是TagActionDispatcher的程序流程,还有标签模板是怎样使这些类进行交互.
1.初始化
当控制器传递控制到达TagActionDispatcher,一些初始化触发去设置ActionObjects和ViewResourcesConfig属性为了使用我们的模板:
从request中重新获得$form,$errors和$data对象,如果这些对象中的任意一个已经在之前被创建(比如在Action类中),那么对象现在将在资源模板中不可见,否则对象将被设置为NULL.
重新获得..
- [ 基础文章 ] session全教程(二)
点击:5828 发布日期:12/16
二、php3,4中session的实现
在php3中是没有session这种东东的,但我们又需要,怎么办呢?别急,有很多人替你做了这些,这其中最有名的要算phplib了。你可以去国外下载,可以上国内大部分php站点下载。我们要做的第一件事是让phplib和php3结合在一起使它能工作。为了能实现这方面的功能,我们需要先安装phplib。跟着我来做,很容易的(以下方法在win2000+php3.0.16+apache1.3.12+phplib7.2c+mysql3.23.21 for win32 上通过)phplib最基本的功能包括用户认证,Session管理,权限及数据库的抽象化。
怎样使用phplib来实现session功能呢?
一、首先你将phplib解开,里面有一个目录叫"php",将这个目录拷贝到apache的安装目录下。以笔者的机器为例:我的apache安装在d:/apache目录下,我将上面的"php"目录拷贝到d:a/pache,并将phplib下的pages 目录下的文件和目录一起拷贝到 d:/apache/htdocs下,注意不带目录本身。phplib的类库需要根据系统进行初始化,你可以修改local.inc文件,其中包含着一些基本参数,你可以根据自己机器的实际情况来进行修改。 将d:/apache/php/prepend.php3文件中的一段程序改为如下样子:
if (!isset($_PHPLIB) or !is_array($_PHPLIB))..
- 共有796条信息 1 - 30 1/27页 30个/页 上一页 下一页