06 2012 档案
摘要:Zend Studio调试PHP主要使用Xdebug和Zend Debugger,之前我介绍了Zend Studio调试工具Xdebug安装教程,今天来说说Zend Debugger的安装与配置方法,目前在PHP5.3 Thread-Safe环境下并不支持Zend Debugger的安装与配置,PHP5.3 Non-Thread-Safe的运行环境是支持的。 如果想要在PHP5.3环境下安装配置Zend Debugger有两种方式,一种是将PHP环境配置为PHP5.3Non-Thread-Safe,另一种是安装Zend Server。为了方便,我干脆将PHP运行环境切换为IIS7下的PHP..
阅读全文
摘要:原文地址:http://bbs.phpchina.com/forum.php?mod=viewthread&tid=50716 对比起 Cookie,Session 是存储在服务器端的会话,相对安全,并且不像 Cookie 那样有存储长度限制,本文简单介绍 Session 的使用。 由于 Session 是以文本文件形式存储在服务器端的,所以不怕客户端修改 Session 内容。实际上在服务器端的 Session 文件,PHP 自动修改 Session 文件的权限,只保留了系统读和写权限,而且不能通过 ftp 修改,所以安全得多。 对于 Cookie 来说,假设我们要验证用户是否登陆.
阅读全文
摘要:刚开始在没有查PHP手册的情况下,用比较老套方法也折腾出来了,代码是这样子实现的: $date_1 = date('Y-m-d'); $date_2= '2012-07-16'; $date1_arr = explode("-",$date_1); $date2_arr = explode("-",$date_2); $day1 = mktime(0,0,0,$date1_arr[1],$date1_arr[2],$date1_arr[0]); $day2 = mktime(0,0,0,$date2_arr[1],$dat
阅读全文
摘要:先了解下Json(资料来自www.json.org):JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language(http://www.crockfor...
阅读全文
摘要:一个正则表达式主要由以下几部分组成的:原子,元字符,定界符,模式修正符号如:”/\<img\s*src=\".*?\"\/\>/iu”原子: ims \s元字符:* ?模式修正符号: i u定界符号:/ /注意:① 定界符:除了字母,数字和正斜线\以外的任何字符都可以是定界符号,如# #,| |,{ }等② 元字符:是一种特殊的字符,是用来修饰原子用到,不可以单独出现+:表示重复匹配其前面的原子一次或多次?:表示重复匹配其前面的原子0次或一次*:表示重复匹配其前面的原子0次或多次{}:可以自定义前面原子出现的次数:{n}表示重复匹配其前面的原子n次{n,m}表示
阅读全文
摘要:首先,我们先看一段PHP代码:<?php $time = date ("Y-m-d H:i:s"); $pattern = "/\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/i"; if(preg_match($pattern,$time,$arr)){ echo "<pre>"; print_r($arr); echo "</pre>"; }?>显示结果:Array( [0] => 2012-06-23 03:08:45)有没有注意到,显示的结果
阅读全文
摘要:一个自定义的循环遍历元素文本内容的函数 该函数可以确保在HTML和XML DOM文档中很好的工作,使用该函数,就能够获取任何元素文本内容了循环遍历元素文本内容 1 <html> 2 <head> 3 <meta http-equiv="Content-type" content="text/html;charset=gb2312"> 4 <title>一个循环遍历元素文本内容的函数</title> 5 </head> 6 <body> 7 <div id="
阅读全文
摘要:由于项目的需要,要写一个能生成“授权码”的类(授权码主要包含项目使用的到期时间),生成的授权码将会写入到一个文件当中,每当项目运行的时候,会自动读取出文件中的密文,然后使用唯一的“密钥”来调用某个函数,对密文进行解密,从中解读出项目的使用到期时间。 之前,自己有先试着写了下,主要是base64+md5+反转字符串。算法太过简单,很容易被破解,而且也没有能过做到“密钥”在加解密中的重要性,故而舍之。 后来,查找了相关资料,发现,原来PHP中内置了一个功能强大的函数库,即Mcrypt。 其实,mcrypt本身就提供了强大的加密解密方法,并且支持很多流行的公开的加密算法,如DES, Tri...
阅读全文
摘要:session.gc_maxlifetimesession.gc_probabilitysession.gc_divisorsession.gc_divisor 与 session.gc_probability 合起来定义了在每个会话初始化时启动 gc(garbage collection 垃圾回收)进程的概率。此概率用 gc_probability/gc_divisor 计算得来。例如 1/100 意味着在每个请求中有 1% 的概率启动 gc 进程。session.gc_divisor 默认为 100。比如:session.gc_maxlifetime=30,session.gc_divis
阅读全文
摘要:很多网站都是利用session来讲用户的信息保存到服务器上的某个文件夹中(通常是C:\window\temp)。一个会话对应一个session文件,如同一个用户使用chrom和FF打开同一个页面的时候,会在服务器上生成两个不同文件名的session文件,但是文件里面的内容是一样的。 当用户打开浏览器,访问某个网站时操作session,服务器就会在服务器端的磁盘上为该浏览器分配一个保存session信息的文件,该文件被这个浏览器独自访问。 比如:服务器上有两个文件,a.php和b.phpa.php的code:<?php session_start();//能够创建一个空的sessi...
阅读全文
摘要:1.SESSION信息保存在哪? <?php session_start(); $_SESSION['name']='marcofly';?>session默认是保存到c:\windows\temp目录下,但是通过修改php.ini中的session.save_path值可以改变session的保存路径。如:session.save_path = "d:/wamp/tmp"执行该代码后,就会在d:/wamp/tmp目录下,新增一个文件名为:sess_***的文件,打开之后,内容如下:name|s:8:...
阅读全文
摘要:转载自:https://joyqi.com/information-tech/use-comma-in-mysql-columns.html大多数开发者应该都遇到过在mysql字段中存储逗号分割字符串的经历,无论这些被分割的字段代表的是id还是tag,这个字段都应该具有如下几个共性。被分割的字段一定是有限而且数量较少的,我们不可能在一个字符串中存储无限多个字符这个字段所属的表与这个字段关联的表,一定是一对多的关系比如下面这个表结构所代表的content与tag这两个对象mysql> SELECT * FROM content;+----+------+| id | tags |+----
阅读全文
摘要:++如何设 置请求等待时间在httpd.conf里面设置: TimeOut n 其中n为整数,单位是秒。++如何接收一个get请求的总时间接收一个post和put请求的TCP包之间的时间 TCP包传输中的响应(ack)时间间隔++如何使得apache监听在特定的端口 修改httpd.conf里面关于Listen的选项,例如: Listen 8000 是使apache监听在8000端口 而如果要同时指定监听端口和监听地址,可以使用: Listen 192.170.2.1:80 Listen 192.170.2.5:8000 这样就使得apache同时监听在192.170.2....
阅读全文
摘要:对像在PHP 里面和整型、浮点型一样,也是一种数据类,都是存储不同类型数据用的,在运行的时候都要加载到内存中去用,那么对象在内存里面是怎么体现的呢?内存从逻辑上说大体上是分为4 段,栈空间段、堆空间段、代码段、初始化静态段,程序里面不同的声明放在不同的内存段里面。 数据段(data segment)通常是指用来存放程序中已初始化且不为0的全局变量如:静态变量和常量 代码段(code segment / text segment)通常是指用来存放程序执行代码的一块内存区域,比如函数和方法 栈空间段是存储占用相同空间长度并且占用空间小的数据类型的地方,比如说整型1,1...
阅读全文
摘要:更深入的学习和了解可以查看下面:风雨的博客http://www.laruence.com/2008/08/12/180.html百度研发中心的博客http://stblog.baidu-tech.com/?p=763王兴宾的博客http://blog.csdn.net/wanghao72214/article/details/3916825简介 先看看下面这个过程:我们从未手动开启过PHP的相关进程,它是随着Apache的启动而运行的;PHP通过mod_php5.so模块和Apache相连(具体说来是SAPI,即服务器应用程序编程接口);PHP总共有三个模块:内核、Zend引擎、以及扩展层;.
阅读全文
摘要:作者:Laruence本文地址:http://www.laruence.com/2009/08/23/1065.html转载请注明出处经常会有人问我, PHP的数组, 如果用foreach来访问, 遍历的顺序是固定的么? 以什么顺序遍历呢?比如<?php$arr['laruence'] = 'huixinchen';$arr['yahoo'] = 2007;$arr['baidu'] = 2008;foreach ($arr as $key => $val) {//结果是什么?}又比如:<?php$arr[2]
阅读全文
摘要:客户端从服务端下载文件的流程分析:浏览器发送一个请求,请求访问服务器中的某个网页(如:down.php),该网页的代码如下。服务器接受到该请求以后,马上运行该down.php文件运行该文件的时候,必然要把将要被下载的文件读入内存当中(这里是圣诞狂欢.jpg这张图片),这里通过fopen()函数完成该...
阅读全文
摘要:总结: 使用PHP下载文件的操作需要给出四个header(),可以参考我的另一篇博文:PHP如何实现下载功能超详细流程分析计算文件的大小的时候,并不需要先打开文件,通过filesize($filename)就可...
阅读全文
摘要:今天查看Struts2的文件上传部分 发现有个例子开头打印的信息中有Content-Disposition,一时好奇,所以了解了一下。顺便学习一下文件上传所需要的注意事项。 Content-disposition 是 MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件。当 Internet Explorer 接收到头时,它会激活文件下载对话框,它的文件名框自动填充了头中指定的文件名。(请注意,这是设计导致的;无法使用此功能将文档保存到用户的计算机上,而不向用户询问保存位置。)服务端向客户端游览器发送文件时,如果是浏览器支持的文件类型,一般会默认使用浏览器打开,比如t
阅读全文
摘要:转载自:http://www.cnblogs.com/hustcat/archive/2009/10/28/1591648.html 写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录。如果没有索引,查询将对整个表进行扫描,最坏的情况下,如果所有数据页都不在内存,需要读取10^4个页面,如果这10^4个页面在磁盘上随机分布,需要进行10^4次I/O,假设磁盘每次I/O时间为10ms(忽略数据传输时间),则总共需要100s(但实际上要好很多很多)。如果对之建立B-...
阅读全文
摘要:对于PHP程序员来说,最为难掌握的一点要数PHP抽象类应用这一块知识点。作为一个新手其实也还没有到要用面向对象的知识去编程,但以后进行开发,使用类进行封装或者使用接口之类,把程序进行各种模块式的开发,这当然是必然的。在自然语言中,我们理解抽象的概念是,一个物体的一种大的描述,这种描述对某类物体来说是共有的特性。那么在PHP中也是一样的,我们把一个类进行抽象,可以指明类的一般行为,这个类应该是一个模板,它指示它的子方法必须要实现的一些行为。PHP抽象类应用的定义:abstract class ClassName{}PHP抽象类应用要点: 1.定义一些方法,子类必须完全实现这个抽象中所有的方法 .
阅读全文
摘要:<?php try { $a=10/0; }catch (Exception $e){ echo "抛出异常"; }?>以上代码,并不会输出“抛出异常”,而是输出了错误信息:Warning: Division by zero in......说明:try块中并没有抛出异常,而是按照系统默认的错误处理机制进行处理所以能不能捕获到异常,取决于有没有真正的抛出异常
阅读全文
摘要:php对异常的处理与java一样,用到的是try{}catch(){}定义顶级异常处理器用到的函数是set_exception_handler("My_exception");这里的My_expection是开发者自定义的异常处理函数,既顶级异常处理器,只有当程序中没有函数来处理异常才有顶级异常处理器来处理异常,如果没有定义顶级异常处理器,则由系统默认的异常处理器来处理异常举例说明:<meta http-equiv="content-type" content="text/html;charset=utf-8" /><
阅读全文
摘要:1、首先php5提供了基本的异常处理类,可直接使用<?phpclass Exception{ protected $message = 'Unknown exception'; // 异常信息 protected $code = 0; // 用户自定义异常代码 protected $file; // 发生异常的文件名 protected $line; // 发生异常的代码行号 function __const...
阅读全文
摘要:定义和用法 set_error_handler() 函数设置用户自定义的错误处理函数该函数用于创建运行时期间的用户自己的错误处理方法。该函数会返回旧的错误处理程序,若失败,则返回 null。语法 set_error_handler(error_function,error_types)参数 描述 error_function 必需,规定发生错误时运行的函数。error_types 可选。规定在哪个错误报告级别会显示用户定义的错误。默认是 "E_ALL"。提示和注释提示:如果使用了该函数,会完全绕过标准的 PHP 错误处理函数,如果必要,用户定义的错误处理程序必须终止 (di
阅读全文
摘要:]转载自:http://www.cnblogs.com/cnbeir/archive/2012/05/05/2484635.html在编写php程序时,错误处理是一个重要的部分。如果程序中缺少错误检测代码,那么看上去很不专业,也为安全风险敞开了大门例:<?php $a = fopen('test.txt','r'); //这里并没有对文件进行判断就打开了,如果文件不存在就会报错?> 那么正确的写法应该如下:<?php if(file_exists('test.txt')){ $f=fopen('test.txt'
阅读全文
摘要:Apache根目录下的子目录说明:Apache的各种功能特性主要是由配置文件httpd.conf决定的。配置文件的语法\ 配置文件都是使用Linux的脚本风格。以“#”作为注释符,以反斜杠“\”作为续行符号。文件的每一行包含一个指令,告诉Apache服务器以某种特定的方式完成某一项特定的任务。 配置文件中的指令是不区分大小写的,但指令的参数通常是大小写敏感的。Apache是模块化的服务器,想要扩展新功能可以作为模块动态加载。 动态加载的指令:LoadModule 有效范围:整个Apache服务器 例子:LoadModule rewrite_module modules/mod_rew...
阅读全文
摘要:ZendFramework是基于PHP5的一个开源,面向对象的Web应用框架。当前最新的的版本是ZendFramework1.7,其中MVC组件已经相当成熟。到底什么是MVC?MVC是Model-View-Controller的缩写,即模型-视图-控制器。它是XeroxPARC在20世纪80年代为编...
阅读全文
摘要:本文来自:http://gonefish.info/blog/?page_id=461在该系列的第一部分中,简要介绍了Zend_Controller的相关组件,在第二部分的我们将详细介绍相关组件是怎样工作的,并结合源代码进行一些讲解。讲解源代码的版本是ZendFramework1.7,但由于Zend_Controller已经相当的稳定,本文的讲解可以适用于1.X分支,如发现有差别,可查阅官方的从以前的版本移植章节。如不特殊说明,本文所有内容仅针对HTTP。Zend_Controller的工作流程涉及到四个相关的组件:Zend_Controller_Router、Zend_Controller_
阅读全文
摘要:本文来自:http://gonefish.info/blog/?page_id=461在该系列的第一部分中,简要介绍了Zend_Controller的相关组件,在第二部分的我们将详细介绍相关组件是怎样工作的,并结合源代码进行一些讲解。讲解源代码的版本是ZendFramework1.7,但由于Zend...
阅读全文
摘要:获得当前日期+时间(date+time)1.1函数:now()相关函数:current_timestamp(),localtime(),localtimestamp()举例说明:2.获得当前日期(date)函数:curdate()相关函数:current_date(),current_date举例说明:3.获得当前时间(time)函数:curtime()相关函数:current_time(),current_time举例说明4.MySQLdayof…函数:dayofweek(),dayofmonth(),dayofyear()分别返回日期参数,在一周、一月、一年中的位置。举例说明set@dt=
阅读全文
摘要:MySQL中的UNIX_TIMESTAMP函数有两种类型供调用1无参数调用:UNIX_TIMESTAMP()返回值:自'1970-01-0100:00:00'的到当前时间的秒数差例子:SELECTUNIX_TIMESTAMP()=>13391234152有参数调用:UNIX_TIMESTAMP(date)其中date可以是一个DATE字符串,一个DATETIME字符串,一个TIMESTAMP或者一个当地时间的YYMMDD或YYYMMDD格式的数字返回值:自'1970-01-0100:00:00'与指定时间的秒数差举例说明:DATE字符串格式:(日期类型)S
阅读全文
摘要:问题:①如何控制用户上传的文件类型②如何控制用户上传的文件大小③如何防止用户覆盖图片问题④如何防止同一个用户上传的文件名相冲突问题解答:①可以通过PHP全局数组$_FILES['myfile']['type']来判断上传的文件类型②可以通过PHP全局数组$_FILES['myfile']['size']来判断上传的文件大小③可以根据用户输入的用户名来动态创建文件夹③通过time(),rand(),生成的数字来给文件命名就可以解决文件名冲突问题PHP Codes: 1 <?php 2 echo "<pre>
阅读全文
摘要:session问题集锦 对于PHP的session功能,始终找不到合适的答案,尤其是一些错误,还有一些没有错误的结果,最可怕的就是后者,一直为许多的初学者为难。就连有些老手,有时都被搞得莫名其妙。本文,将这些问题,做一个简单的汇总,以便大家查阅。1.错误提示Warning: Cannot send session cookie - headers already sentWarning: Cannot send session cache limiter - headers already sent分析及解决办法这一类问题,的原因是你在程序中使用session_start()时,之前已经有实.
阅读全文
摘要:$_FILES数组的内容如下所示。我们假设文件上传字段的名称为file(名称可随意命名) $_FILES['file']['name']客户端机器文件的原名称。 $_FILES['file']['type']文件的MIME类型,需要浏览器提供该信息的支持,例如“image/gif”。 $_FILES['file']['size']已上传文件的大小,单位为字节。 $_FILES['file']['tmp_name']文件被上传后在服务端储存的临时文件名。 $_FILES
阅读全文
摘要:1、mysql_fetch_row,这个函数是从结果集中取一行作为枚举数据,从和指定的结果标识关联的结果集中取得一行数据并作为数组返回。每个结果的列储存在一个数组的单元中,偏移量从 0 开始。2、mysql_fetch_array,从结果集中取得一行作为关联数组,或数字数组,或二者兼有,除了将数据以数字索引方式储存在数组中之外,还可以将数据作为关联索引储存,用字段名作为键名。3、mysql_fetch_object,顾名思义,从结果集中取得一行作为对象,并将字段名字做为属性。4、mysql_fetch_assoc,从结果集中取得一行作为关联数组,也就是说这个函数不能像mysql_fetch_r
阅读全文
摘要:MySQL中的UNIX_TIMESTAMP函数有两种类型供调用1 无参数调用:UNIX_TIMESTAMP()返回值:自'1970-01-01 00:00:00'的到当前时间的秒数差例子:SELECT UNIX_TIMESTAMP() => 13391234152 有参数调用:UNIX_TIMESTAMP(date)其中date可以是一个DATE字符串,一个DATETIME字符串,一个TIMESTAMP或者一个当地时间的YYMMDD或YYYMMDD格式的数字返回值:自'1970-01-01 00:00:00'与指定时间的秒数差举例说明:DATE字符串格式:
阅读全文
摘要:做开发的时候经常会碰到以下几个问题使用mysql的内置函数将时间轴转成对应的日期 方法一:使用from_unixtime(unix_timestamp)函数即可实现, 如:SELECT FROM_UNIXTIME('1339127478'); 结果:2012-06-08 11:51:18 SELECT FROM_UNIXTIME('1339127478','%Y-%m-%d'); 结果:2012-06-08 2.使用mysql的内置函数对日期进行计算 如:选择符合“三个小时之前”的所有订单 方法一:使用UNIX_TIMESTAMP()将时间转成时
阅读全文