PHP程序开发 | PHP ThinkPHP框架 | PHP文件代码22 February 2012 22:28 Wednesday

php window平台模拟checkdnsrr函数HP

PHP的自带checkdnsrr函数只在linux平台有效。使用惯了在window平台不能使用的话给兼容性带来麻烦。

因此写了个checkdnsrr模拟函数在window平台环境使用。

if (!function_exists('checkdnsrr ')) {
    function checkdnsrr($host, $type) {
        if(!empty($host) && !empty($type)) {
            @exec('nslookup -type=' . escapeshellarg($type) . ' ' . escapeshellarg($host), $output);
            foreach ($output as $k => $line) {
                if(eregi('^' . $host, $line)) {
                    return true;
                }
            }
        }
        return false;


2011-09-06 21:49:29阅读全文>>>

解决PHP代码恶意DDOS攻击

使用PHP代码实现的DDOS攻击会导致带宽被占用,变成卡B。

处理办法是:

修改php.ini文件

1) "disable_functions"改成gzinflate,默认是放空
2) ”allow_url_fopen“设为Off
3) php_sockets.dll 把这个模块打开


2011-06-09 16:52:45阅读全文>>>

PHP 生成excel|好用强大的php excel类库

做Magento的订单导出Excel功能,找了这个php的excel类 :PHPExcel。

PHPExcel是强大的 MS Office Excel 文档生成类库,基于Microsoft's OpenXML ,支持普通xls,Excel2007,pdf,csv,html等

官网:http://phpexcel.codeplex.com/

比较大条的一个类库,官方最新版已经蹦到7.多M大了。找了个民间精简版1.多M的。

下面是这个PHP excel类库 的一些使用方法要点备忘。来自互联网。

//设置PHPExcel类库的include path
set_include_path('.'. PATH_SEPARATOR .
'D:\Zeal\PHP_LIBS' . PATH_SEPARATOR .
get_include_path());

/**


2011-06-07 00:00:19阅读全文>>>

PHP在空间跑Magento权限

<?php
$output 
shell_exec(’find  . - type d  - exec chmod 755 {} \ find  . - type d  - exec chmod 755 {} \ chmod o + var var/. htaccess app / etc chmod  - R o + w media’) ;
echo 
< pre > $output </ pre > ;
?>

2011-04-19 14:36:39阅读全文>>>

EmEditor删除js,php等//注释的正则

EmEditor替换注释的正则表达式

一枚很方便的把//这种注释方法的注释替换掉的正则表达式,js注释、php注释等。


2011-04-15 09:11:15阅读全文>>>

恍然大悟PHP和PYTHON和RUBY的关系

PHP和PYTHON和RUBY三者的关系简单的各用一句话来概括:

PHP一句话来总结就是:Quick And Dirty 
PYTHON用一句话来总结就是:Quick And Clean, But Not Convenient For Web Development 
RUBY用一句话来总结就是:Code For Fun And Quick For Web

发现和很多网友的IT历程一样,先经历PHP然后接触PYTHON跟着RUBY。

PHP必须会因为很多应用级的程序都用它,PYTHON肯定要精因为很喜欢它。。RUBY也许也会学好它听说帮助开阔思维。


2011-04-11 23:06:54阅读全文>>>

PHP一则字符串转为标准SEO URL的正则表达式

一则把不规范的字符串转为用横杠隔开的标准的SEO的URL的正则表达式

$str    = '/The-URL-\//string-to-/the,-standard-SEO@html';
echo trim(preg_replace('/\-(?=\-)/','',preg_replace('/[^\w\-]/','-',$str)),'-');
//转化后 The-URL-string-to-the-standard-SEO-html

2011-04-09 16:02:47阅读全文>>>

PHP关闭魔术引号magic_quotes_gpc

magic_quotes_gpc 指令只能在系统级关闭,在运行时无法关闭。也就是说不能用 ini_set('magic_quotes_gpc',0);来关闭。

在无法修改服务器段配置文件的情况下,还有种办法是使用 .htaccess 来修改配置。

php_flag magic_quotes_gpc Off

但这种也有局限性,apache如果是以cgi形式跑不是作为模块的话也无效。

所以为了更好的提高移植性,只要在代码上动功夫。当然这会带来效率上的降低,如果能修改配置文件还是最好的。


2011-03-31 22:34:40阅读全文>>>

ThinkPHP URL自己带上参数PHPSESSID

碰到个问题,ThinkPHP项目程序本地测试没问题,传到服务器后第一次访问,页面的所有URL会自己带上类似?PHPSESSID=28954583914413546c6e881cfa7c8117 这样的参数,再点击刷新下页面后访问才正常。

浏览器并没有禁止cookie,本地访问正常也证实了这点,第一猜想是服务器的环境配置与项目代码某些地方冲突所影响。

检测了服务器的关于cookie的配置对比本地的,发现session.use_trans_sid这个项的配值是不同的,本地关闭,服务器是开着的。

PHP中的会话在默认情况下是使用客户端的cookie来保存session_id的,所以当客户端的cookie出现问题的时候就会影响会话了。其实会话不一定必须依赖cookie,当客户端的cookie被禁用或出现问题时


2011-03-31 21:02:29阅读全文>>>

PHP - 利用yshout给网站添加多人在线即时聊天功能

考虑给网站添加个多人即时在线聊天 的功能已经很久了,虽然没啥实际性意义。今天打酱油把网站在线聊天这功能给日上去了,姑且算是又疼了一回。

采用的是开源的yshout ,更更改改删删减减,先看看效果。

右下角的即时聊天效果图


2011-03-16 17:01:40阅读全文>>>

PHP - 利用P3P实现跨域

有别于JS跨域、IFRAME跨域等的常用处理办法,还可以利用P3P来实现跨域。

P3P是什么

P3P(Platform for Privacy Preferences)是W3C公布的一项隐私保护推荐标准,以为用户提供隐私保护。

P3P 标准的构想是:Web 站点的隐私策略应该告之访问者该站点所收集的信息类型、信息将提供给哪些人、信息将被保留多少时间及其使用信息的方式,如站点应做诸如 “本网站将监测您所访问的页面以提高站点的使用率”或“本网站将尽可能为您提供更合适的广告”等申明。访问支持P3P网站的用户有权查看站点隐私报告,然 后决定是否接受cookie 或是否使用该网站。

如何利用P3P实现跨域

在开发中,我们碰到的跨域主要还是纠结在IE,页面中的IFRAME或者FRAME或者JS跨域的时候,IE有安全策略限制页面不带cookie,但是如果我们加上P3P,就没有这策略的限制。这也是P3P来突破跨域的可行前提。

以下为摘录的例子


2011-03-09 13:29:51阅读全文>>>

php - 字符串内容为数组如何进行格式转换为数组

一个简单的应用。。

例,

$str    =    "array( 'USD'=>'1', 'GBP'=>'0.6494', 'EUR'=>'0.7668' ,'JPY'=>'82.8150','RMB'=>'6.6480' )";

现有$str,内容为数组形式的数据。

想要得到真正的数组

$arr    = array( 'USD'=>'1', 'GBP'=>'0.6494', 'EUR'=>'0.7668' ,'JPY'=>'82.8150','RMB'=>'6.6480' );

处理办法是:

eval("\$arr = ".$str.';


2011-02-09 09:59:25阅读全文>>>

Magento错误-Call to undefined method Mage_Adminhtml_Block_Widget::getrowurl() in app\code\core\Mage\Adminhtml\Block\Widget\Grid.php on line 1607

Fatal error: Call to undefined method Mage_Adminhtml_Block_Widget::getrowurl() in [magentohome]/app/code/core/Mage/Adminhtml/Block/Widget/Grid.php on line 1607

从Magento 1.4.0.1导出产品csv文件后,要导入到Magento 1.4.2.0的时候,在上传csv文件,保存提交后报这错误。

解决办法:修改 app/code/core/Mage/Core/Block/Template.php 这个文件,在319行后面加入函数getRowUrl,如:

public function getRowUrl($row)
{
return $this->getUrl(’*/*/edit’, array(’i


2011-01-03 17:30:19阅读全文>>>

Magento报错:Call to a member function extend() on a non-object in app\code\core\Mage\Core\Model\Mysql4\Config.php on line 115

遇到报错:Fatal error: Call to a member function extend() on a non-object in \app\code\core\Mage\Core\Model\Mysql4\Config.php on line 115

错误原因及解决办法参见:

Magento错误 - Notice: Undefined index:***app\code\core\Mage\Core\Model\Mysql4\Config.php on line 92的解决办法

里的

SET FOREIGN_KEY_CHECKS=0;
update `core_store` set store_id = 0 where code='admin';
update `core_store_group` set group_id = 0 where name='Default';
update `core_website` set website_id = 0 where code='admin';
update `customer_group` set customer_group_id = 0 where customer_group_code='NOT LOGGED IN';
SET FOREIGN_KEY_CHEC


2010-12-28 15:03:01阅读全文>>>

php WebSockets服务端和客户端

关于WebSockets 的基础概念参见:HTML5 WebSockets 基础使用学习教程

本文简单记录PHP利用WebSockets 和HTML5 WebSockets API的服务器推技术来实现在线聊天系统

php WebSockets服务端和客户端Demo下载

解压后只有两个文件:server.php(服务端)和client.html(客户端)

运行WebSockets服务器端

,命令行模式下使用php -q path\server.php 运行

,或者浏览器访问server.php

注:浏览器必须支持HTML5的WebSocket 。可使用当前的最新Firefox或Chrome。

另外PHP需要支持php_sockets组件 。windows环


2010-12-28 11:37:25阅读全文>>>

ThinkPHP使用Paypal支付接口的模块开发

<?php
/**
 * 
 * PaypalAction.class.php
 * 
 * ThinkPHP Paypal支付接口模块
 * 
**/


class PaymentAction extends Action { 

/** 
* 自己的paypal账号 
*/ 
private $account = 'admin@gmail.com';

/** 
* paypal支付网关地址 
*/ 
private $gateway = 'https://www.paypal.com/

2010-12-21 16:19:01阅读全文>>>

Magento错误 - Notice: Undefined index:***app\code\core\Mage\Core\Model\Mysql4\Config.php on line 92的解决办法

今天拷站架Magento 站,又碰到了这种错:

a:4:{i:0;s:116:"Notice: Undefined index :  0  in ***\app\code\core\Mage\Core\Model\Mysql4\Config.php on line 92 ";i:1;s:681:"#0 ***\app\code\core\Mage\Core\Model\Mysql4\Config.php(92): mageCoreErrorHandler(8, 'Undefined index...', 'D:\chen\www\mym...', 92, Array)
#1 ***\app\code\core\Mage\Core\Model\Config.php(344): Mage_Core_Model_Mysql4_Config->loadToXml(Object(Mage_Core_Model_Config))

好 吧,抽时间总结一下。。

问题原因

Mysql使用工具 (如PhpMyAdmin / MySQL-Front / Navicat for MySQL / SQLyogEnt等)重载转储文件(也就是重导.sql文件)的时候,默认在执行过程中遇到0值一般会生成新的序列号。

Magento的 core_store表的admin的store_id为0;core_store_group表的Default的group_id也为0。

在 导入.sql文件的时候,原本的0变成了新的序列号,破坏了Magento原有的数据。

解决办法


2010-12-13 16:08:45阅读全文>>>

PayPal支付接口的PHP开发方式

 
解析PayPal支付接口的PHP开发方式

大家都知道PHP代码的便捷之处和用法,那么今天我们就向大家详细的讲解如何运用PHP来开发PayPal支付接口 的相关内容,希望对大家有所帮 助。PayPal 快速、安全而又方便,是跨国交易的首选在线付款方式。现在PayPal支付接口可以和国内大部分信用卡关联,可以实现国人的跨国交易收支。

所 谓paypal ipn(Instant Payment Notification),就是Paypal开发的一种能主动通知第三方卖家系统交易状态的一种机制。IPN的原理很简单,就是当产生了一个交易之后, 交易状态发生变化时,如用户已经付款、或者退款、撤销时,Paypal利用常用的HTTP POST方式,将交易的一些变量提交给网站的某个页面(称之为IPN Handler),当这个页面接受到请求时候,将这些数据原封不动加上一个指示验证的cmd=_notify-validate,POST回Paypal 的接口地址,如果数据正确,那么Paypal返回字符串VERIFIED,否则为INVALID,如果结果为VERIFIED,那么你的程序就可以使用这 些数据进行操作。

开设Sandbox帐号

但代码的调试是一件很痛苦的事情,因为作为第 三方开发人员,不可能开两个帐号,每次测试还要之间交易一些钱,所以Paypal专门开发了 Sandbox给 开发人员进行开发,首先到https://developer.paypal.com/注册一个开发帐号,好了之后再进入Sandbox建立测试用的 Paypal虚拟帐号(至少


2010-12-04 15:21:19阅读全文>>>

PHP - 真随机数和伪随机数

首先来了解一下真随机数和伪随机数的概念。

真随机数发生器 ,英文为:true random number generators ,简称为:TRNGs,是利用不可预知的物理方式来产生的随机数。

伪随机数发生器 ,英文为:pseudo-random number generators ,简称为:PRNGs,是计算机利用一定的算法来产生的。

对 比一下两种办法产生的随机数的图片。

Random.org(利用大气噪音来生成随机数,而大气噪音是空气中的雷暴所产生的 )生成的随机位图:

真随机数发生器


2010-12-03 09:59:51阅读全文>>>

PHP字符串补全,PHP字符串自动填充,PHP输出固定长度

遇到要输出一定长度字符串的时候,可以使用一下两种方法进行PHP字符串自动填充、自动补全

方法一:

$newStr= sprintf('%05s', $str);

sprintf()的功能非常灵活,上面的格式字符串中,“%05s ”表示输出成长度为5的字符串,如果长度不 足,左边以零补全;如果写成 “%5s ”,则默认以空格补全;如果希望使用其它字符补全,则要在该字符前加上单引号,即形如“%'#5s ” 的表示以井号补全;最后,如果希望补全发生在 字符串右边,则在百分号后加上减号,“%-05s ”。

方法二:

$cd_no = str_pad(++$next_cd_no,8,'#',STR_PAD_LEFT);

str_pad(string,length,pad_string,pad_type):具体用法查看手册。

string    必需。规定要填充的字符串。
length    必需。规定新字符串的长度。如果该值小于原始字符串的长度,则不进行任何操作。
pad_string    可选。规定供填充使用的字


2010-11-13 09:06:09阅读全文>>>

PHP - 读取操作IP地址数据库文件QQWry.dat

首先看看QQWry.Data文件的内容结构 ,以及解读方式

一、文 件结构
文件主要分三个结构
1、文件头,8个字节;
2、数据记录区,不定长度;
3、索引区,长度为 7 的整数倍;

二、文件头
文件头的8个字节分两部分,每个部分4个字节,分别指定了索引区的开 始地址和结束地址。所以可以通过两个地址的差值 除 7 后 加 1 可以计算出总的记录数。

二、记录区
记录区的数据需要通过索引区的数据来获得各个数据的起始位置;本区数据记录了IP地址的结束地址和地区字符串;所有地区字符串都以 0×00 为结束。

三、索引区
检索IP对应的地区,关键就是找到IP起始地址对应的索引内容。一个IP 索引数据包含7个字节,前4个字节是IP地址起始值,后3个字节是对应的IP数据 记录在文件内的偏移地址;IP数据记录中,前 4 个字节是IP结束地址;紧跟的数据有两种模式: 0×01 模式 和 0×0


2010-11-11 17:52:17阅读全文>>>

【转】高级PHP应用程序漏洞审核技术

 

很值得花时间研究的一篇文章。


作者:Ph4nt0m Security Team

来源:http://www.ph4nt0m.org-a.googlepages.com/PSTZine_0x03_0x06.txt

                           ==Ph4nt0m Security Team==
 
                       Issue 0x03, Phile #0x06 of 0x07
 

|=---------------------------------------------------------------------------=|
|=---------------------=[ 高级PHP应用程序漏洞审核技术 ]=---------------------=|
|=---------------------------------------------------------------------------=|
|=---------------------------------------------------------------------------=|
|=----------------------=[    By www.80vul.com     ]=------------------------=|
|=------------------------=[   <www.80vul.com>   ]=--------------------------=|
|=---------------------------------------------------------------------------=|



2010-11-05 16:34:19阅读全文>>>

[转] - 适用于 PHP 开发人员的 Python 基础知识

 

Thomas Myer , 负责人, Triple Dog Dare Media

好段时间一直想接触Python了,刚好借这篇文章入门。:P

简介  :  您是一名经验丰富的 PHP 开发人员,并且希望学习 Python 吗?本文将从 PHP 开发人员的角度来探索 Python 开发的世界,将大家熟悉的 PHP 概念(如变量、列表、函数)转换成同等的 Python 概念。

您是一名 PHP 开发人员。您在过去 五年(或更长时间)中可能一直都编写应用程序,您已经将许多想像变成了可能 — 电子商务系统、简单内容管理系统、Twitter 和 Facebook 集成以及各种自定义实用工具。您可能还需要维护大量代码 — 从简单的显示页面到包含数千行其他人编写的代码的自定义应用程序,不一而足。

常用缩略语

  • Ajax  : 异步 JavaScript + XML
  • XML  : 可扩展标记语言(Extensible Markup Language)

您已经在 PHP 上花费了大量时间,转向另一种语言势在必行。您也知道原地不动就意味着被动挨打。其实,学习新语言就像是去国外旅行:您会接触到新事物,品尝新食物,领略不同的文化,与不同的人对话,了解一切新奇,然后再回到家中体会原来的环境


2010-11-05 15:15:01阅读全文>>>

[转]PHP函数的实现原理及性能分析

 

 

前言

 

在任何语言中,函数都是最基本的组成单元。对于php的函数,它具有哪些特点?函数调用是怎么实现的?php函数的性能如何,有什么使用建议?本文将从原理出发进行分析结合实际的性能测试尝试对这些问题进行回答,在了解实现的同时更好的编写php程序。同时也会对一些常见的php函数进行介绍。

php函数的分类

 

在php中,横向划分的话,函数分为两大类: user function(内置函数) 和internal function(内置函数)。前者就是用户在程序中自定义的一些函数和方法,后者则是php本身提供的各类库函数(比如sprintf、array_push等)。用户也可以通过扩展的方法来编写库函数,这个将在后面介绍。对于user function,又可以细分为function(函数)和method(类方法),本文中将就这三种函数分别进行分析和测试。

php函数的实现


2010-11-05 14:52:31阅读全文>>>

PHP - 信用卡卡号算法函数

可以使用以下PHP函数 验证一个卡号是否是信用卡

function validateCard ( $cardnumber )
{
    
$cardnumber = preg_replace ( " /\D|\s/ " , "" , $cardnumber ) # strip any non-digits
    
$cardlength = strlen ( $cardnumber ) ;
    
if ( $cardlength != 0 )
    
{
        
$parity = $cardlength % 2 ;
        
$sum = 0 ;
        
for ( $i = 0 ; $i < $cardlength ; $i ++ )
        
{
            
$digit = $cardnumber [ $i ] ;
            
if ( $i % 2 == $parity ) $digit = $digit * 2 ;
                
if ( $digit > 9 ) $digit = $digit - 9 ;
                    
$sum = $sum + $digit ;
        
}


2010-11-05 09:20:22阅读全文>>>

PHP - Mysql数据库备份类

使用方法:

require_once("backdata.class.php");
$link = @mysql_connect("localhost","数据库名","密码") or die ('Could not connect to server.');
mysql_query("use cms",$link);
mysql_query("set names utf8",$link);
$dbbck=new backupData($link);//实例化 它,只要一个链接标识就行了
//备份数据时,如想备份一个数据库中的所有表,你可这样写:
$dbbck->backupTables("cms","./",array('*'));
//备份数据时,如想备份一个数据库中的仅一个表时,你可这样写:
$dbbck->backupTables("cms","./",array('user'));
//备份数据时,如想备份一个数据库中的多个表时,你可这样写:
$dbbck->backupTables("cms","./",array('user','acl','informatoin'));
//注解:$dbbck->backupTables("参1"," 参2",array());中,
参1为:数据库名,
参2为:要存放备份数据的位置(即目录地址)
第三个为:你要保存那些表

backdata.class.php:

<?php
/*
*
*简单的一个Mysql备份数据类


2010-11-04 20:20:53阅读全文>>>

PHP - 增强性mhash函数

今天使用php的加密函数mhash 的时候,报错: Fatal error : Call to undefined function mhash()

mhash是php的内置函数但是使用却报错..

一番研究总结 两种方法:

1,导入php_mhash.dll扩展文件,除此之外还要导入 libmhash.dll (mhash 库的载入依赖这个文件) ,

在 Apache 的配置文件 Httpd.conf 中加载   LoadFile C:/php/libmhash.dll” 。

2,使用自定义的mhash增强函数。

function hmac_md5($key, $data)
{
    if (extension_loaded('mhash'))
    {
        return bin2hex(mhash (MHASH_MD5, $data, $key));
    }

    $b = 64;


2010-11-04 19:51:18阅读全文>>>

PHP - .htaccess设置显示PHP错误

用.htaccess设置显示PHP错误

使用.htaccess可以在某种程度上更改PHP的错误显示的设置,实际上,相当于更 改PHP.ini的参数,很是方便。

将以下相应代码放到对应目录中的.htaccess文件,即可实现相应功能。

关 闭错误显示

php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_value docref_root 0
php_value docref_ext 0

只 显示PHP错误

php_flag  display_errors        on
php_flag  display_startup_errors on
php_value error_reporting        2047

其 中,“2047”为要显示的错误的级别,详细表格如下:

1 E_ERROR

2010-11-02 14:17:59阅读全文>>>

PHP - 利用Curl、socket、file_get_contents POST数据

// php的三种方法向远程服务器POST数据

<?php     
/**     
* Socket版本      
* 使用方法:     
* $post_string = "app=socket&version=beta";     
* request_by_socket('facebook.cn','/restServer.php',$post_string);     
*/     
function request_by_socket($remote_server,$remote_path,$post_string,$port = 80,$timeout = 30){     
     $socket = fsockopen($remote_server,$port,$errno,$errstr,$timeout);     
     if (!$socket) die("$errstr($errno)");     
         
     fwrite($socket,"POST $remote_path HTTP/1.0");     
     fwrite($socket,"User-Agent: Socket Example");     
     fwrite($socket,"HOST: $remote_server");     
     fwrite($socket,"Content-type: application/x-www-form-urlencoded");     
     fwrite($socket,"Content-length: ".strlen($post_string)+8."");     
     fwrite($socket,"Accept


2010-11-01 23:59:15阅读全文>>>

php - apc和文件缓存类

// 收集到的一篇不错的PHP缓存实现。实现了apc和文件缓存,继承Cache_Abstract即可实现调用第三方的缓存工具。

<?php
class CacheException extends Exception {}
/**
* 缓存抽象类
*/
abstract class Cache_Abstract {
/**
     * 读缓存变量
     *
     * @param string $key 缓存下标
     * @return mixed
     */
     abstract public function fetch($key);

/**
     * 缓存变量
     *
     * @param string $key 缓存变量下标
     * @param string $value 缓存变量的值
     * @return bool
     */


2010-11-01 23:51:09阅读全文>>>

PHP - 比较全的CURL中文说明

目前为目最全的CURL中文说明了,学PHP的要好好掌握.有很多的参数.大部份都很有用.真正掌握了它和正则,一定就是个 采集高手了.

PHP中的CURL函数 库(Client URL Library Function)

curl_close — 关闭一个curl会 话
curl_copy_handle — 拷贝一个curl连 接资源的所有内容和参数
curl_errno — 返回一个包含 当前会话错误信息的数字编号
curl_error — 返回一个 包含当前会话错误信息的字符串
curl_exec — 执行一个curl会 话
curl_getinfo — 获取一个curl连 接资源句柄的信息
curl_init — 初始化一个curl会 话
curl_multi_add_handle — 向curl批 处理会话中添加单独的curl句柄资源
curl_multi_close — 关闭一个批处理句柄资源
curl_multi_exec — 解析一个curl批处理句柄
curl_multi_getcontent — 返回获取的输出的文本流
curl_multi_info_read — 获取当前解析的curl的相关传输信息
curl_multi_init — 初始化一个curl批处理句柄资源
curl_multi_remove_handle — 移除curl批处理句柄资源中的某个句柄资源
curl_multi_select — Get all the sockets associated with the cURL extension, which can then be "selected"
curl_setopt_array — 以数组的形


2010-11-01 23:21:04阅读全文>>>

php 全部的编译选项

php-5.3.3全部的编译选项

Usage: configure [options] [host]
Options: [defaults in brackets after descriptions]
Configuration:
  --cache-file=FILE       cache test results in FILE
  --help                  print this message
  --no-create             do not create output files
  --quiet, --silent       do not print `checking...' messages
  --version               print the version of autoconf that created configure
Directory and file names:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [/usr/local]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                          [same as prefix]
  --bindir=DIR            user executables


2010-10-29 13:05:55阅读全文>>>

用PHP建立XML-RPC的Web Sevice系統

PHP 中集成了XML-RPC和SOAP两种协议的访问,都是集中在xmlrpc扩展当中。另外,在PHP的PEAR中,不管是 PHP 4还是PHP 5,都已经默认集成了XML-RPC扩展,而且该扩展跟xmlrpc扩展无关,能够独立实现XML-RPC的协议交互,如果没有xmlrpc扩展,建议使 用PEAR::XML-RPC扩展。
Web Service介绍

Web Service就是为了异构系统的通信而产生的,它基本的思想就是使用基于XML的HTTP的远程调用提供一种标准的机制,而省去建立一种新协议的需求。 目前进行Web Service通信有两种协议标准,一种是XML-RPC,另外一种是SOAP。 XML-RPC比较简单,出现时间比较早,SOAP比较复杂,主要是一些需要稳定、健壮、安全并且复杂交互的时候使用。

我们这里主要是以 XML-RPC来简单描述Web Service的交互过程,部分内容来自PHP手册,更详细内容,建议参考手册。

 

安 装xmlrpc扩展

如果你的系统中没有安装xmlrpc的php扩展,那么请正确安装。

在Windows平台下,首先 把PHP安装目录下的扩展php_xmlrpc.dll放到C:\Windows或者C:\Winnt 目录下,(PHP4的扩展在C:\php\extensions目录中,


2010-10-23 14:59:25阅读全文>>>

php使用fsockopen传送POST到別的URL并取得回应內容

如果不需要传送参数或是使用GET method传送可以直接使用fopen()或是file_get_contents()函式获得回应內容
但 是如果需要不经过表单就送出POST给某URL就需要使用curl相关函式或是fsockopen()传送

curl的用法比较简单可以咕狗 看看(但是php必须要先安裝curl才可以用),这边要讲的是fsockopen().

//接收POST參數的URL
$url = 'http://www.google.com';

//POST參數,在這個陣列裡,索引是name,值是value,沒有限定組數
$postdata = array(
'post_name'=>'post_value','acc'=>'hsin','nick'=>'joe');

//函式回覆的值就是取得的內容
$result = sendpost($url,$postdata);


2010-10-23 14:54:47阅读全文>>>

php支付宝支付接口参数详解

<?php
$service  = isset( $_GET [ 'service' ]) ?  $_GET [ 'service' ] :  'create_direct_pay_by_user' ;
$services  = array(    //交易类型
     'create_direct_pay_by_user'  =>  '即时到账' ,
     'create_partner_trade_by_buyer'  =>  '担保交易' ,
);
if(! array_key_exists ( $service , $services )) exit( '错误的交易类型' );
?>

<p style="border:2px dotted blue;width:auto;">
    <label> 请选择交易类型:</label>
    <?php  foreach ( $services  as  $key => $val ):  ?>
        <?php  if( $service  ==  $key ):  ?>
            <b style="color:red"><?php  echo  $val ;  ?> </b>
        <?php  else:  ?>
            <b><a href="<?php  echo  url (array( 'service' => $key ));  ?> "><?php  echo  $val ;  ?> </a></b>
        <?php  endif;  ?>
    <?php  endforeach;  ?>
</p>

<?php

//php 支付宝支付接口参数 主要如下

//(合作商户编号,加密串,返回url, 默认编码,商品名称,商品简介,商户订单号,物流配送费用)
function  getRequestUrl ( $partner , $scode , $return_url , $charset , $subject , $body , $order , $lfee ) {
    global  $data , $service ;


2010-10-19 23:47:59阅读全文>>>

php获取gb2312编码的汉字的首个字母

 

<?php

//取GB2312字符串首字母,原理是GBK汉字是按拼音顺序编码的.

function get_letter($input){

$dict=array(

'a'=>0xB0C4,

'b'=>0xB2C0,

'c'=>0xB4ED,

'd'=>0xB6E9,

'e'=>0xB7A1,

'f'=>0xB8C0,

'g'=>0xB9FD,

'h'=>0xBBF6,

'j'=>0xBFA5,

'k'=>0xC0AB,


2010-10-17 10:25:39阅读全文>>>

php利用curl获取指定IP的所有信息的API

看马:

<?php
function getIpInfo($ip,$timeout=15) {
    if(!function_exists('curl_init') or !function_exists('simplexml_load_string')) return false;
    $ch = curl_init("http://ipinfodb.com/ip_query2.php?ip={$ip}&timezone=true");
    $options = array(
        CURLOPT_RETURNTRANSFER => true,
    );
    curl_setopt_array($ch,$options);
    $res = curl_exec($ch);
    curl_close($ch);
    if($xml = simplexml_load_string($res)) {
        $dt = array();
        foreach ($xml->Location->children() as $key=>$item)  {
            $dt[$key] = strtolower($item);
        }
        return $dt;
    } else {


2010-10-17 09:44:45阅读全文>>>

php函数 - 单位时间内字符串加密解密

 

此函数可在指定时间内,加密还原字符串,超时无法还原。

用途如:单点登录的token加密传输,临时密码等等

 

 

<?php

/**

 * @param string $operation 操作(ENCODE | DECODE), 默认为 DECODE

 * @param string $key 密钥

 * @param int $expiry 密文有效期, 加密时候有效, 单位 秒,0 为永久有效

 * @return string 处理后的 原文或者 经过 base64_encode 处理后的密文

 *

 * @example

 *

 * $a = authcode('abc', 'E


2010-09-19 21:55:32阅读全文>>>

thinkphp关于session的使用总结

ThinkPHP官方的说明文档

  1. start 启 动session
  2. pause 暂 停session
  3. clear 清除session
  4. destroy 销毁session
  5. get 获取session
  6. getLocal 获取私有session
  7. set 设置session
  8. setLocal 设置私有session
  9. name 获取或者设置session_name
  10. is_set 是否设置session
  11. is_setLocal 是否设置私有session
  12. id 获取或者设置session_id
  13. path 获取或者设置session_save_path
  14. setExpire 设置session过期时 间
  15. setCookieDomain 设置 有效域名
  16. setCallback 设置Session 对象反序列化时候的回调函数

最常用的操作方法示例:

代码:

// 获 取Session变量

  1. // 检测 Session变量是否存在
  2. Session::is_set('name');
  3.  
  4. // 给Session变 量赋值
  5.  
  6. Session::set('name','value');
  7.  

2010-08-24 09:27:17阅读全文>>>

php产生全球唯一标识符guid的算法一例

 

 

类库

<?php

// guid.php

class System {

  function currentTimeMillis() {

    list($usec, $sec) = explode(" ",microtime());

    return $sec.substr($usec, 2, 3);

  }

}

 

class NetAddress {

  var $name = 'localhost';

  var $ip   = '127.0.0.1';


2010-08-23 22:42:25阅读全文>>>

thinkphp 使用技巧总结 - 快速入门

在比较了下Zend Framework、CakePHP等框架后,我认为ThinkPHP的开发效率最高,代码最为简洁,最适合中小型项目开发。


1. 模板中不能使用的标签
{$content} {$i}
2. If标签
如: <if condition="$name eq 1 ">
试验后总是有想不到的错误, 这样,还不如直接用<?php if(...){ ...?>来得快些呢.

约定:
1.所有类库文件必须使用.class.php作为文件后缀,并且类名和文件名保持一致
2.控制器的类名以Action为后 缀
3.模型的类名以Model为后缀,类名第一个字母须大写
4.数据库表名全部采用小写,

如:
数据表名: 前缀_表名


2010-08-20 11:11:28阅读全文>>>

PHP数据库操作类 - ezSQL

ezSQL 下载地址:http://sjolzy.cn/php/ezSQL/bak/ez_sql_2.05.zip

新 版本是2.05添加了很多支持,包括 CodeIgniter,MSSQL, PDO等等。

查看示例:

Example 1
----------------------------------------------------

// Select multiple records from the database and print them out..
$users = $db->get_results("SELECT name, email FROM users");
foreach ( $users as $user ) {
            // Access data using object syntax
            echo $user->name;
            echo $user->email;
}

Example 2


2010-08-07 10:57:04阅读全文>>>

GeoIP的使用 - PHP版

GeoIP介绍:

什么是GepIP ?

所谓GeoIP,就是通过来访者的IP, 定位他的经纬度,国家/地区,省市,甚至街道等位置信息。这里面的技术不算难题,关键在于有个精准 的数据库。有了准确的数据源就奇货可居赚点小钱,可是发扬合作精神,集体贡献众人享用是我们追求的。

 

GeoIP如 何使用?

首先我们需要数据信息,所以先获取一个免费的数据库:http://sjolzy.cn/php/GeoIP/bak /GeoIP.dat.gz ,接着解压得到:GeoIP.dat, 然后就是对数据文件的按需操作,这边范例使用的是PHP。

 

GeoIP + PHP的使用


2010-08-07 09:55:04阅读全文>>>

PHP读取远程文件的三种方法



file_get_contents
<?php
$url = http://www.xxx.com/;
$contents = file_get_contents($url);
//如果出现中文乱码使用下面代码
//$getcontent = iconv("gb2312″, "utf-8″,file_get_contents($url));
//echo $getcontent;
echo $contents;
?>


curl
<?php
$url = "http://sjolzy.cn/";
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT


2010-08-03 19:50:33阅读全文>>>

thinkphp 语言包加载失败的解决办法

 

在浏览器未设置默认语言的时候,thinkphp便检测不到语言,导致语言包加载失败直接输出。

thinkphp2.0语言检测和模板检测是在ThinkPHP\Lib\Think\Core的App.class.php的239行开始,查看代码便可知,当未检测到语言的时候,无法加载语言包。

我的解决办法是,在项目公共部分从配置表中读取站点要设置的语言和模板,代码只有三句话

cookie('think_language','en-us',3600);
cookie('think_template','default',3600);
App::init();

原理就是在thinkphp框架编译完后


2010-07-29 21:32:29阅读全文>>>

php json_decode返回数据js的处理

php json_decode后,返回到前台的数据如:encode_str   =》{"green":10,"size":5,"strock":12}

则 js通过 eval("obj = " + encode_str + ";") ;

便可将json数据实例化为对象,  直接obj.green即可得到数据。


2010-07-26 21:10:38阅读全文>>>

thinkphp 多主题和多语言的使用方法

ThinkPHP提供了设置多语言和多主题的接口,如

URL:
语言切换:?l=zh-cn
主题切换:?t=default

对应的目录位置:
APP/Lang/zh-cn/common.php  - 简体中文
APP/Tpl/default/Index/index.html  - 默认主题

模板使用语言输出


2010-07-20 18:41:12阅读全文>>>

thinkphp 自带常量

Action中使用的系统常量

THINK_PATH // ThinkPHP 系统目录
APP_PATH // 当前项目目录
APP_NAME // 当前项目名称
MODULE_NAME //当前模块名称
ACTION_NAME // 当前操作名称
TMPL_PATH // 项目模版目录
LIB_PATH // 项目类库目录
CACHE_PATH // 项目模版缓存目录
CONFIG_PATH //项目配置文件目录
LOG_PATH // 项目日志文件目录
LANG_PATH // 项目语言文件目录
TEMP_PATH //项目临时文件目录
PLUGIN_PATH // 项目插件文件目录
VENDOR_PATH // 第三方类库目录
DATA_PATH // 项目数据文件目录
IS_APACHE // 是否属于 Apache
IS_IIS //是否属于 IIS
IS_WIN //是否属于Windows


2010-07-20 10:35:09阅读全文>>>

PHP断点续传的实现

$fname = './MMLDZG.mp3';  
$fp = fopen($fname,'rb');  
$fsize = filesize($fname);  
if (isset($_SERVER['HTTP_RANGE']) && ($_SERVER['HTTP_RANGE'] != "") && preg_match("/^bytes=([0-9]+)-$/i", $_SERVER['HTTP_RANGE'], $match) && ($match[1] < $fsize)) {
    $start = $match[1];
} else {
    $start = 0;
}
@header("Cache-control: public"); @header("Pragma: public");
if ($star--> 0) {  
    fseek($fp, $start);  
    Header("HTTP/1.1 206 Partial Content");  
    Header("Content-Length: " . ($fsize - $start));  
    Header("Content-Ranges: bytes" . $start


2010-07-19 14:52:52阅读全文>>>

又一篇关于PHP性能优化的文章

1、升级硬件的一般规则:对于 PHP 脚本而言,主要的瓶颈是 CPU ,对于静态页面而言,瓶颈是内存和网络。一台 400 Mhz 的普通奔腾机器所下载的静态页面就能让 T3 专线(45Mbps)饱和。

2、Apache 处理 PHP 脚本的速度要比静态页面慢 2-10 倍,因此尽量采用多的静态页面,少的脚本。

3、PHP 脚本如果不做缓冲,每次调用都需要编译,因此,安装一个 PHP 缓冲产品能提升 25-100% 的性能。

4、把基于文件的会话切换到基于共享内存的会话。编译 PHP 时采用 --with-mm 选项,在 php.ini 中设置 set session.save_handler=mm 。这个简单的修改能让会话管理时间缩短一半。

5、另外一项缓冲技术是把不常修改的 PHP 页面采用 HTML 缓冲输出。

6、如果你采用了 Linux 系统,建议升级内核到 2.6.0以上(现在最新版本为2.6.10)并开启抢占式内核支持,因为静态页面由内核服务。

7、采用最新版本的 Apache ,并把 PHP 编译其中,或者采用 DSO 模式,尽量不要采用 CGI 方式。

8、采用输出缓冲(请参考ob_start),如果你的代码有很多的 print 和 echo 语句,能提速 5-15% 。

9、不要在 Web 服务器上运行 X-Windows ,关掉没有必要运行的进程,如果已经安装了X-windows,请使用 init 3退出。


2010-07-19 14:18:31阅读全文>>>

thinkPHP学习笔记[持续更新]

快捷方法:
A:快速实例化Action类库
B:执行行为类
C:配置参数存取方法
D:快速实例化Model类库
F:快速简单文本数据存取方法
L:语言参数存取方法
M:快速高性能实例化模型
R:快速远程调用Action类方法
S:快速缓存存取方法
U:URL动态生成和重定向方法
W:快速Widget输出方法

导入:
Vendor\Zend\Filter\Dir.php
Vendor('Zend.Filter.Dir');

lib\Think\Util\Session.class.php
import("Think.Util.Session");

MyApp项目下面的Lib\Action\Us


2010-07-17 17:30:56阅读全文>>>

php读取操作大文件

在php中,对于文件的读取时,最快捷的方式莫过于使用一些诸如file、file_get_contents之类的函数,简简单单的几行代码就能 很漂亮的完成我们所需要的功能。但当所操作的文件是一个比较大的文件时,这些函数可能就显的力不从心, 下面将从一个需求入手来说明对于读取大文件时,常用的操作方法。

需求

有一个800M的日志文件,大约有500多万行, 用php返回最后几行的内容。

实现方法

1. 直接采用file函数来操作

注:由于 file函数是一次性将所有内容读入内存,而php为了防止一些写的比较糟糕的程序占用太多的内存而导致系统内存不足,使服务器出现宕 机,所以默认情况下限制只能最大使用内存16M,这是通过php.ini里的 memory_limit = 16M来进行设置,这个值如果设置-1,则内存使用量不受限制.

下面是一段用file来取出这具文件最后一行的


2010-07-14 15:40:49阅读全文>>>

ThinkPHP去除url中的index.php

例如你的原路径是 http://localhost/test/index.php/index/add
那么现在的地址是 http://localhost/test/index/add
如何去掉index.php呢?

1.httpd.conf配置文件中加载了mod_rewrite.so模块  //在APACHE里面去配置

#LoadModule rewrite_module modules/mod_rewrite.so把前面的警号去掉

2.AllowOverride None 讲None改为 All      //在APACHE里面去配置 (注意其他地方的AllowOverride也统统设置为ALL)
<Directory "D:/server/apache/cgi-bin">
AllowOverride none  改   AllowOverride ALL
Options None
Order allow,deny
Allow from all


2010-07-12 11:37:58阅读全文>>>

php+FreeBSD + Nginx 环境搭建

为什么要选择 FreeBSD?


官 方网站:www.freebsd.org 中文网站:http://www.freebsd.org/zh_CN/
FreeBSD是一个优秀的unix操作系统,基于宽松的BSD协议,是完美的企业级操作系统,以重点突出性能和安全而闻名,行业领先的企业多年以来一直 使用FreeBSD服务器。具有同所有其它开源软件操作系统竞争的高级性能。
  1. Unix兼容性强
  2. 速度快
  3. 极 其稳定、可靠
  4. 强大的网络功能
  5. 多用户、多任务
  6. 使用方便(按照极好的说明文件操作)

为什么要选 择 Nginx?

Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。Nginx 是由 Igor Sysoev 为 俄罗斯访 问量第二的Rambler.ru 站点开


2010-07-10 16:31:03阅读全文>>>

php+CentOS + Nginx 环境搭建

获取相关开源软件包
本文中提到的所有开源软件包为截止到2009年10月20日的最新稳定版,且均从官方网站下载。
mkdir -p /home/software
cd /home/software
fetch http://sysoev.ru/nginx/nginx-0.8.24.tar.gz
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.00.tar.gz
wget ftp://xmlsoft.org/libxml2/libxml2-2.7.6.tar.gz
wget http://www.zlib.net/zlib-1.2.3.tar.gz
wget ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng-1.2.40.tar.gz
wget http://www.ijg.org/files/jpegsrc.v7.tar.gz
wget http://ftp.twaren.net/Unix/NonGNU/freetype/freetype-2.3.11.tar.gz
wget http://www.libgd.org/releases/gd-2.0.35.tar.gz
wget http://www.php.net/get/php-5.2.11.tar.gz/from/this/mirror
wget http://php-fpm.org/downloads/php-5.2.11-fpm-0.5.13.diff.gz
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.tar.gz

安装、升级所需的程序库
利用CentOS Linux系统自带的yum命令安装、升级所需的程序库
yum -y install gcc gcc-c++ autoconf libtool* openssl openssl-devel
安装 Mysql5.1.40
Mysql5.1.40 下载地址


2010-07-10 16:21:04阅读全文>>>

php命令行方式的学习

 

关于PHP CGI和CLI的几点学习

 

 

PHP 命令行?是的,您可以!http://www.ibm.com/developerworks/cn/opensource/os-php- command/


2010-07-10 14:28:09阅读全文>>>

PHP 权限设计及算法

权限设计

大概有这几种 模式:

用户+组+角色+权限

用户+组+权限

用户+角色+ 权限

用户+权限

最 近看了别人的设 计方法,大多以“整数”来表示权限值,如添加、浏览、删除和修改,分别用1、2、4、8这几个整数来代替,不过,各人的做法有所不同,举例如下:

1. 用2的n次幂组成权限值的集合,如1、2、4、8、16...,某用户的权限值为其子集中的整数之和,如 7=1+2+4,5=1+4。如果要从数据库检索包含某几种权限的用户,则先把这几种权限值相加,假设和为k,然后select * from table where 1 and 用户权限值 = 'k';如果要


2010-07-02 13:12:12阅读全文>>>

PHP Ctype函数

Ctype函数是PHP内置的字符串体测函数。主要有以下几种

ctype_alnum -- Check for alphanumeric character(s)
检测是否 是只包含[A-Za-z0-9]

ctype_alpha -- Check for alphabetic character(s)
检测是否是只包含[A- Za-z]


ctype_cntrl -- Check for control character(s)
检查是否是只包含类是“\n\r\t”之类的字 符控制字符


ctype_digit -- Check for numeric character(s)
检查时候是只包含数字字符的字符串(0-9)


ctype_graph -- Check for any printable character(s) except space
检查是否是只包含有可 以打印出来的字符(除了


2010-07-02 09:51:42阅读全文>>>

php利用crypt函数加密和解密

// +----------------------------------------------------------------------+
// | Wiki Framework |
// +----------------------------------------------------------------------+
// $string 明文 或 密文 必填
// $isEncrypt 是否加密 可选,默认为加密
// $key 密匙 可选,默认为空格
// $b = dencrypt($a,TRUE,'123'); 
// $c = dencrypt($b,false,'123');
// 采用SHA1生成密匙簿,超过300个字符使用ZLIB压缩
function dencrypt($string, $isEncrypt = true, $key = KEY_SPACE) {
    if (!isset($string{0}) || !isset($key{0})) {
        return false;
    }
    $dynKey = $isEncrypt ? hash('sha1', microtime(true)) : substr($string, 0, 40);
    $fixedKey = hash('sha1', $key);
    $dynKeyPart1 = substr($dynKey, 0, 20);
    $dynKeyPart2 = substr($dynKey, 20);
    $fixedKeyPart1 = substr($fixedKey, 0, 20);
    $fixedKeyPart2 = substr($fixedKey, 20


2010-07-01 17:48:51阅读全文>>>

php 字母大小写转换总结

1.将字符转换成小写

strtolower(): 该函数将传入的字符参数所有的字符转换成小写,并以小定形式放回这个字符

 

2.将字符转成大写

strtoupper(): 该函数的作用同strtolower函数相反,是将传入的字符参数字符全部转换大写,并以大写形式返回这个字符串.用法strtolowe()一 样.

 

3.将字符串首字符转换大写

ucfirst(): 该函数的作用是将字符串的第一个字符改成大写,该函数返回字符大写字符串.用法strtolowe()一 样.


2010-06-14 11:06:22阅读全文>>>

50个有用的PHP工具

PHP使用P3P完成COOKIE跨域操作

 

P3P可以完成跨域 COOKIE操作
实际工作中,类似这样的要求很多,比如说,我们有两个域名,我们想实现在一个域名登录后,能自动完成另一个域名的登录,也就是PASSPORT的功能。
为了测试的方便,先编辑hosts文件,加入测试域名(C:\WINDOWS\system32\drivers\etc\hosts)
127.0.0.1       www.a.com
127.0.0.1       www.b.com
首先:创建 a_setcookie.php 文件,内容如下:

  1. <?php  
  2. //header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');  
  3.   
  4. setcookie("test", $_GET['id'], time()+3600, "/", ".a.com");  
  5. ?>  


然后:创建 a_getcookie.php 文件,内容如下:

  1. <?php  
  2. var_dump($_COOKIE);  
  3. ?>  

2010-06-11 23:29:03阅读全文>>>

fleaPHP里的RBAC权限模型

 

 

转自:http://old.fleaphp.org/index.php?q=book/export/html/36

 

RBAC 是英文(Role-Based Access Control)的缩写,也就是基于角色的访问控制。RBAC 的定义比较晦涩,我就以比较生动的形式来阐述什么是 RBAC。



ATM 机的一天

假设有一台 ATM(自动提款机)放在街边,我们来看看这个 ATM 度过的一天。

  1. 早上,有一个家伙走到 ATM 面前,对着机器说:“芝麻开门,芝麻开门,给我 100 块!”。很显然 ATM不会有任何动作。失望之余,这个家伙踢了 ATM 一脚走了。
  2. 中午,一位漂亮的 Office lady 走到 ATM 机面前,放入她的信用卡,输入密码后,取出了 1200 块钱。当然,这些钱很快就会变成一件衣服或是化妆品。
  3. 下班时分,银行的工作人员来到 ATM 机器面前,放入一张特制的磁卡,然后输入密码。从中查询到 ATM 机器内还有充足的现金,无需补充。所以他很高兴的开着车去下一台 ATM 机器所在地了。

现在我们要开发一台具有同样功能的 ATM 机,应该怎么


2010-06-04 23:29:28阅读全文>>>

PHP autoload和spl_autoload自动加载机制详解

 

 

PHP autoload机制详解

(1) autoload机制概述

使用PHP的OO模式开发系统时,通常大家习惯上将每个的实现都存放在一个单独的文件里,这样会很容易实现对进行复用,同时将来维护时也很便利。这 也是OO设计的基本思想之一。在PHP5之前,如果需要使用一个,只需要直接使用include/require将其包含进来即可。下面是一个实际的例 子:

/* Person.class.php */
<?php
class Person {
var $name, $age;

function __construct ($name, $age)
{
$this->name = $name;
$this->age = $age;
}
}
?>

/* no_autoload.php */
<?php
require_once (”Person.class.php”);

$person = new Person(”Altair”, 6);
var_dump ($person);
?>

在这个例子中,no-autoload.php文件需要使用Person,它使用了re


2010-05-12 17:13:03阅读全文>>>

php实现的基本的数据结构和算法,什么二叉树、二叉搜索树、AVL树、B树、链表和常见排序、搜索算法

 

 

goo gle的代码 搜索 里面发现一个使用 php 实现的基本的数据 结构和算法 ,什么二叉树、二叉搜索 树、AVL树、B树、链表和常见 排序搜索 算法 等等,而且全部是使用 面向对象来实现的,确是是很强。

源码地址 :http://www .brpreiss.com/books/opus11/public /Opus11-1.0.tar.gz

文档 地址 :http://www .brpreiss.com/books/opus11/

 


2010-05-11 19:41:05阅读全文>>>

php在线解压缩工具

终于找到几款好用的php在线解压缩工具了!
如果你的空间不是通过cPanel管理的,那么强力推荐你使用,特别是国内用户

解决问题
XOOPS程序以及module的文件通常都很,一个小站点都有好几千个文件,这种情况下,无论是安装还是备份网站,如果用FTP一个个上传下载文件,即使你的空间速度很快,还是要花很长时间!!

解决思路:
文件压缩成一两个压缩包,再上传下载就能大大节约时间
上传(安装):在本地先把文件压缩为一两个压缩包,接着用FTP上传,最后用在线解压工具解压。
下载(备份):先用在线解压工具压缩为一两个压缩包,接着下载,最后在本地解压。

解决方案

1、phpzip: 浩公出品的软件,绝对五星级推荐:http://www.pview.net/Download/
这个软件有两种形式php程序和windows下运行的exe软件。它们的目的都是解压缩文件,但是用的场合不同,一个是在服务器空间运行,一个是在本地运行,两者配合,无敌!一个小小的遗憾就是这个软件生成的压缩包不是标准的压缩格式。不过这并不影响它成为五星级软件!强烈推荐大家使用


2010-05-11 19:36:36阅读全文>>>

开源 PHP 验证码 Securimage 带语音识别

 

官方网站http://www.phpcaptcha.org/
下载地址http://www.phpcaptcha.org/download/
原文地址http://www.21andy.com/blog/20100417/1886.html

验证码图 片:

<img id="captcha" src="/securimage/securimage_show.php" alt="CAPTCHA Image"  />

验证码文 本框:

<input type="text" name="captcha_code" size="10" maxlength="6" />

看不清验证码

<a href="#" rel="nofollow" target="_blank">Reload Image</a>

后端PHP验 证:

<?php
session_start();
 
include_once $_SERVER['DOCUMENT_ROOT'] . '/securimage/securimage.php';
$securimage = new Securimage();
 
if ($securimage->check($_POST['captcha_cod

2010-05-05 22:11:08阅读全文>>>

PHP文件缓存数据类


2010-05-04 22:30:07阅读全文>>>

四种 PHP验证码

 

<?php

//checkNum.php
ssion" title="session" >session_start();
function random($len)
{
$srcstr="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
mt_srand();//配置乱数种子
$strs="";
for($i=0;$i <$len;$i++){
$strs.=$srcstr[mt_rand(0,35)];
}

return strtoupper($strs);
}
$str=random(4); //随机生成的字符串" title="字符串" >字符
$width = 50; //验证码图片的宽度
$height = 25; //验证码图片的高度

@header("Content-Type:image/png");
$_SESSION["code"] = $str;
//echo $str;
$im=imagecreate($width,$height);
//背景色


2010-04-30 17:42:00阅读全文>>>

php使用phpmailer发送邮件不显示中文的解决办法

phpmailer 是 很优秀的发件程序

今 天使用 phpmailer 要 发件时,

按照说明 设置 smtp服务器用户密码

能 正常利用支持 smtp/pop3服务的邮箱 发送信件给指定邮箱

但 是中文 却显示不了,

最 后经过解决

只 要将send.php(我写发送逻辑 代码文件 )转为utf -8的文件 格式 即可。


2010-04-29 14:50:34阅读全文>>>

php采用rails思想提交数据入库

 

 

最近一直在考虑一种更方便的数据提交规则,

 

就POST来说,通常我大部分数据都是POST的,这样通常都是获取POST数组然后过滤,然后处理后提交到数据库" title="数据库" >数据库,现在如果加入rails的思想提交数据,然后表单字段变量和POST数组中的字段名称一致,并且跟数据库" title="数据库" >数据库中的字段一样,这样就可以利用方法获取$_POST array中的key然后循环一下就可以不用写sql句" title="句" >句中的字段了,然后按照顺序$_POST中的value写进去就ok了,是不是一种很便捷的方法呢,在这个时代就是一个要求敏捷的时代.

 

SQL代码

CREATE TABLE `table` (   

  `id` int(255) unsigned NOT NULL auto_increment,   

  `username` varchar(255) NOT NULL default '',   

  `age` varchar(255) NOT NULL default '',   

  `address` varchar(255) NOT N


2010-04-18 13:00:37阅读全文>>>

php基础安全多方面总结

 

一、简介

1.PHP安全方面的基本功能

1.1全局变量注册

事实上,全局变量是无辜的,它不会产生安全漏洞。

一般我们会关闭全局变量原因是:它会增加安全漏洞的数量;隐藏了数据的来源,与开发者需要随时跟踪数据的责任违背;

注:如果必须在一个开启了register_globals的环境部署应用程序时,重要的一点是,必须要初始化所有变量,并且把error_reporting设为E_ALL(或E_ALL | E_STRICT)以对未初始化变量进行警告。

当register_globals开始时,任何使用未初始化变量的行为就意味着安全漏洞。

 

1.2错误报告" title="错误报告" >错误报告

php的错误报告" title="错误报告" >错误报告方便了我们开发时对错误的确认和定位,但这些错误描述如果被恶意攻击者看到,就不妙了。所以开发结束后我们要关闭错误报告" title="错误报告" >错误报告。


2010-04-14 21:44:45阅读全文>>>

PHP开发WAP游戏的一些注意事项

 

:WAP游戏是没有客服端的,仅仅是通过网页页面上的链接,输入框,等等进行游戏,实际上,所有的逻辑运行都是在服务器端。举个简单的例子说:比如在地图上移动这一动作,首先地图的所有数据都是保存在服务器上的,无论是数组还是DB,而要表示当前玩家所在的位置在哪,也仅仅是把地名,本地的描述信息图片,及NPC等有关信息生成一个页面发送给客户端,就这么简单。而玩家要从本地移动到其它地点,也仅仅需要点击一个用POST或GET传递地点ID的链接便可完成,在程序方面,当前程序能够接收到一个合法的地点ID时,便将本ID更新到玩家的记录中去,并生成对应本地的信息生成页面输出即可。


从三方面介绍一些做WAP游戏所需要注意的:安全效率,延展。


安全


用户输入:这是最基本的,也是最可能被忽视的一点。‘1+(-10000)’,这是什么?这就是‘黑客’最常用的一种方法,它出现在当你的程序需要用户输入一个数字时,比如,玩家可以把自己钱送给其他玩家,逻辑很简单,看看自己有没有这么钱(if($my_money>$give_money)()),有的话,给自己扣钱,并给其他玩家加钱。完成。但你试试下面这段程序:

[php]<?php
$a="1+(-111111)";
$b=2;


2010-04-12 13:08:00阅读全文>>>

一个简洁的PHP操作Access类

 

/*

FileName:cls_access.php

Summary: Access数据库操作类

*************************************

使用范例:

========================

$databasepath='D:/wwwroot/cef/www/class/testdb.mdb';

//或者$databasepath='testdb.mdb';

$dbusername='';

$dbpassword='';

require_once('cls_access.php');

$access=new Access($databasepath,$dbusername,$dbpassword);

print_r($access->getlist("SELECT TOP 5 * FROM `Result` WHERE `Re


2010-04-09 12:53:25阅读全文>>>

简洁的PHP操作SQLite类

 

SQLite是一款轻型的数据库" title="数据库" >数据库,是遵守ACID的关联数据库" title="数据库" >数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很程序言相结合,比如Tcl、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库" title="数据库" >数据库管理系统来讲,它的处理速度比他们都快。

这里为大家提供一个简洁的PHP操作SQLite

<?php

/***

//应用举例

require_once('cls_sqlite.php');

//创建实例

$DB=new SQLite('blog.db'); //这个数据库" title="数据库" >数据文件名字任意

//创建数据库" title="数据库" >数据库表。

$DB->query("create table test(id integer primary key,title varchar(50))");

//接下来添加数据

$DB->query("insert into test(title) values('小


2010-04-09 12:40:55阅读全文>>>

php使用jquery.imgareaselect插件上传图片

 

在开发中难免碰到图片上传问题图片上传问题很好解决,而上传服务器上的图片尺寸大小不一,使表现无法使用统一的规格显示被上传图片。 
那么被上传图片的 等比例缩 与等比率放 还有等比率截图 可能会给我们的开发带来障碍! 
使用 jquery.imgareaselect图片处理插件完全可以解决方面问题; 

jquery.imgareaselect 官方网站:http://odyniec.net/projects/imgareaselect

导入jquery和jquery.imgareaselect

 

例1.

$(window).load(function () {  

  $('#myimg').imgAreaSelect({ selectionColor: 'blue', selectionOpacity: 0.2,  

    borderWidth: 2 });  

});  

注释
myimg:需要处理的图片 


2010-04-08 09:47:53阅读全文>>>

关于PHP CGI和CLI的几点学习

 

 

本文来自小屋sjolzy.cn【原创】

 

首先关于几个概念词的总结:

 

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

CGI:“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。在服务器环境中,为“程序”提供标准的接口,通过这个接口,“程序”可以对服务器客户端交换的信息做一些事情。“程序”的言并没有要求。程序对接口进行操作。服务器支持CGI就要提供CGI中要求的环境变量,或者还有别的。我的理解至此为之。

 

CLI:“ 命令行界面”(Command Line Interface),可在用户提示符下键入可执行指令的界面。

 

SAPI:“ 服务器应用程序接口”(Server Application Programme Interface),可以认为是服务器端的API。貌似和CGI是一个东西,每个服务器提供的API可能不同,但是他们都提供了CGI。所以可以理解CGI是每个服务器应该有的SAPI。apache有自己的SAPI,IIS也有


2010-04-06 22:56:58阅读全文>>>

IIS下PHP的CGI,ISAPI,FastCGI比较

 

来自php -under-iis-for-cgi-isapi-fastcgi -compare/">博吧

在Windows IIS 6.0下配置 PHP,通常有CGI、ISAPI和FastCGI三种配置 方式 ,这三种模式 都可以在IIS 6.0下成功运行,下面我就讲一下这三种方式 配置区别 和性能上的差异。

  1、CGI(通用网关接口/Common Gateway Interface)一般是可执行程序 ,例如EXE文件 ,和WEB服务器 各自占据着不同的进程 ,而且一般一个CGI程序 只能处理一个用户 请求 。这样,当用户 请求 数量非常 时,会大量占用系统资源 ,如内存、CPU时间 等,造成效能低下。

  2、ISAPI(Internet Server Application Program Interface)是微软 提供的一套面向WEB服务的API接口,它能实现CGI提供的全部功能 ,并在此基础上进行扩展 ,如提供了过滤器应用程序 接口。ISAPI应用大 数以DLL动态 库的形式 使用 ,可以在被用户 请求 后执行,,在处理完一个用户 请求不会 马上消失,而是继续驻留在内存中等待处理别的用户 输入。此外,ISAPI的DLL应用程序 和WEB服务器 处于同一个进程 中,效率 要显著高于CGI。

  在Windows Server 2003的IIS6下配置 ISAPI方式 的PHP,配置 方法 是,在IIS的“WEB服务扩展 ”中,添加一个新的WEB服务扩展程序 后缀 为PHP,ISAPI程序php 5isapi.dl l,然后再“环境变量 ”-“系统 变量 ”中增加变量 名PHPRC,数值php .ini的路径 ,在Internet信息


2010-04-06 21:50:48阅读全文>>>

PHP定时生成静态html首页

 

本文来自小屋sjolzy.cn【原创】

 

//这边的定时也是需要用户触发 否则 使用设置html">php计划任务的方法来实现的话资源耗费较大

<?php
$nowtime=time();
$pastsec = $nowtime – $_GET["t"];

if($pastsec<60)
{
    exit; //1分钟更新一次,时间可以自己调整
}

ob_tart" title="start" >start(); //打开缓冲区
include(”index.php”);


2010-03-31 22:53:09阅读全文>>>

PHP的FTP操作函数大全

        ftp_connect: 打开 FTP 链接。
  ftp_login: 登入 FTP 服务器。
  ftp_pwd: 取得目前所在路径。
  ftp_cdup: 回上层目录。
  ftp_chdir: 改变路径。
  ftp_mkdir: 建新目录。
  ftp_rmdir: 删除目录。
  ftp_nlist: 列出指定目录中所有文件。
  ftp_rawlist: 详细列出指定目录中所有文件。
  ftp_systype: 显示服务器系统。
  ftp_pasv: 切换主被动传输模式。
  ftp_get: 下载文件。
  ftp_fget: 下载文件,并存在已开的档中。
  ftp_put: 上传文件。
  ftp_fput: 上传已打开文件。
  ftp_size: 获得指定文件的大小。
  ftp_mdtm: 获得指定文件的最后修改时间。
  ftp_rename: 将文件改名。


2010-03-27 21:14:52阅读全文>>>

格式化php代码的两种方法

 

本文来自小屋sjolzy.cn【原创】

 

1/     组装 phpCodeBeautifier + Emeditor (详细见:php格式化代码+Emeditor 太爽了

下载phpCB.exe(下载地址:http://www.waterproof.fr/products/phpCodeBeautifier/

使用Emeditor扩展外部工具:工具->打开外部工具->自定义工具->新建
标题,php代码格式化
命令,点击浏览,找到phpCB.exe的路径
参数,"$(Path)" 
初始目录,不填 
图标,随便
保存文件,可打勾可不打
使用输出栏,打上勾
之后打开php文件 就能选工具里的php代码格式化,就会输出格式化后的代码。再保存一下。

 

2/    phpCB批量转换的php程序(详细见:phpCB批量转换php文件视图/)

 

phpCB批量转换的php程序:
<?
header("Content-type: text/html; charset=gb2312");
 

2010-03-24 20:57:15阅读全文>>>

使 Emeditor能调试PHP

 

本文来自小屋sjolzy.cn【原创】

 

工具->打开外部工具->自定义工具->新建 
标题,php调试 
命令,点击浏览,找到php.exe文件,我的是C:\xampp\php\php.exe 
参数,"$(Dir)\$(Filename).$(Ext)" 
初始目录,不填 
图标,可填可不填,我填的是选择了一张ico
保存文件,可打勾可不打,我没有打勾 
使用输出栏,打上勾
之后打开php文件 就能选工具里的php调试。


2010-03-24 20:05:23阅读全文>>>

《Head First 设计模式》php设计模式版

 

策略模式

 

<?php
/**
 * 策略模式
 * 定义了算法族,分别封装起来,让它们之间可以互相替换,
 * 此模式让算法的变化独立于使用算法的客户。
 */
//飞行行为接口
interface FlyBehavior {
    public function fly();
}
//呱呱叫行为接口
interface QuackBehavior {
    public function quack();
}
//翅膀飞行
class FlyWithWings implements FlyBehavior {
    public function fly() {
        echo "I'm flying!!\n";
    }
}
//不会飞
class FlyNoWay implements FlyBehavior {
    public function fly() {
        echo "I can't fly!\n";
    }
}
class FlyRocketPowered implements FlyBehavior {
    public function fly() {
        echo "I'm flying with a rocket!\n";
    }
}
class Qquack implements QuackBehavior {
    public function quack() {

2010-03-17 21:23:32阅读全文>>>

服务器推技术简介及php实现服务器推技术的聊天室

 

IBM:Comet:基于 HTTP 长连接的“服务器推”技术

DEMO1:

  首先是首页,包含一个文本输入和一个显示聊天内容的iframe,还有一个隐藏iframe用来提交form表单:

<?php

//chat.php

header('cache-control: private');

header('Content-Type: text/html; charset=utf-8');

?>

<html>

<script type="text/javascript">

function submitChat(obj) {

obj.submit();


2010-03-17 20:29:15阅读全文>>>

什么样才算学好php

也算做PHP蛮久了,我也在想水平怎么样呢?找人凭什么说明人家的水平呢?其实这个有工作经验的成分,有知识面的成分,也有深度的成分。知识面觉得了你可以跟哪些人顺利的交流和工作,知识深度决定了你的工作能力和工作效果,工作经验是避免了你工作产生失误。

我很强调知识面,也是自己的个性所以然。我就喜欢看很多东西,但是我学东西的深度也许都不大,但我却有了和别人沟通的前提。所以我成为不了专家也许。成为专家的人是一群痴迷的人,为工作学习疯狂的人,只有这样的人才是专家。这个也是《卓有成效的管理者》一书说的一方面,这本书很好,我还得温习一遍才行。

回到正题,不多说,但看了一下别人发的帖子,所以转了,PHPer可以参考参考:

《什么样才算是学好了


2010-03-12 20:52:24阅读全文>>>

优化PHP代码,使php更高效

 

 

1.如果一个方法可静态化,就对它做静态声明。速率可提升至4倍。 

 

2.echo 比 print 快。 

 

3.使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接。 

 

4.在执行for循环之前确定最大循环数,不要每循环一次都计算最大值。 

 

5.注销那些不用的变量尤其是大数组,以便释放内存。 

 

6.尽量避免使用__get,__set,__autoload。 

 

7.require_once()代价昂


2010-03-07 22:58:24阅读全文>>>

如何在php中判断一个网页请求是ajax请求还是普通请求

 

如何在php中判断一个网页请求是ajax请求还是普通请求?你可以通过传递参数的方法来实现,例如使用如下网址请求:

/path/to/pkphp.com/script.php?ajax

在php脚本中使用如下方法判断:

if(isset($_GET['ajax'])) {

...这是一个ajax请求,然后...

}

else {

...这不是一个ajax请求,然后...

}

通过传递_GET参数的方法简单实现了网页请求的判断。但是如果需要这样的功能,这个方法可能就有弊端,功能需求如下:

1.通过ajax请求的网页与普通请求


2010-03-07 22:48:20阅读全文>>>

php发送邮件:phpMailer使用介绍

 

发送邮件是一个经常使用的功能,但是php的默认支持并不是很好,这里介绍一个很好的开源模块:phpmailer,此模块功能比较全面,支持SMTP验证。下面就简单介绍一下它的使用方法:

 

1 下载phpmailer模块: 官方网站 http://www.phpdoc.org/

 

2 解压到一个文件夹

 

3 在php文件中包含 require_once("class.phpmailer.php");

 

4 使用SMTP发送邮件:


2010-03-07 22:40:22阅读全文>>>

用PHP的ob_start();控制浏览器cache!

 

Output Control 函数可以让你自由控制脚本中数据的输出。它非常地有用,特别是对于:当你想在数据已经输出后,再输出文件头的情况。输出控制函数不对使用 header() 或 setcookie(), 发送的文件头信息产生影响,只对那些类似于 echo() 和 PHP 代码的数据块有作用。

 

我们先举一个简单的例子,让大家对Output Control有一个大致的印象:

Example 1.

 

CODE<?php

ob_start(); //打开缓冲区

echo \"Hellon\"; //输出

header("location:index.php"); //把浏览器重定向到index.php

ob_end_flush();//输出全部内容到浏览器


2010-03-06 20:25:05阅读全文>>>

PHP的日期时间运算总结

 

 

<?php

//GB2312的Encode

header("Cache-Control: no-store, no-cache, must-revalidate");

header("Cache-Control: post-check=0, pre-check=0", false);

 

/*重点了解strtotime()函数

1、strftime比time()好用,可以直接把常用的’2010-02-03‘转成时间戳。

2、date()可以显示1970年前的时间。而不必用负数做参数2

3、日期计算可以用时间戳来中转。计算两个日期相差的天数,可以取得相差的时间戳后除以“24小时*60分*60”秒来得到,但用strtotime()更简洁、

4、了解用PEAR创建日历。这


2010-03-06 19:38:58阅读全文>>>

2010年最新PHP类的精缩归纳

 

一:结构和调用(实例化):

 

class className{} ,调用:$obj = new className();当类有构造函数时,还应传入参数。如$obj = new className($v,$v2...);

 

二:构造函数和析构函数:

1、构造函数用于初始化:使用__construct(),可带参数。

2、但析构函数不能带参数(用于在销去一个类之前执行一些操作或功能)。析构函数用__destruct()做名称。在脚本执行结束时,PHP会销掉内存中的对象,因此可不用析造函数,但有些比如COOKIE等,就应当要用此函数销掉。

知识点:在PHP4中也提供了构造函数


2010-03-06 19:34:17阅读全文>>>

php设置时区的两种方法

 

 

本文来自小屋sjolzy.cn【原创】

 

php5后都要自己设置时区,要么修改php.ini的设置,要么在代码里修改。

 

 

在PHP.INI中设置时区

date.timezone = PRC

 

在代码中设置时区

 

1 date_default_timezone_set('Asia/Shanghai');//'Asia/Shanghai'   亚洲/上海

2 date_default_timezone_set('Asia/Chongqing');//其中Asia/Chongqing'为“亚洲/重庆”

3 date_default_timezone_set('PRC');//其中PRC为“中华人民共和国”

4i ni_set('date.timezone','Etc/GMT-8');

5 ini_set('date.timezone','PRC');

6 ini_set('date.timezone','Asia/Shanghai');

7 ini_set('date.timezone','Asia/Chongqing');

 

以上七种方法,任意一个都可以满足我们需求。

 

系统初始化时,加上


2010-02-28 15:42:57阅读全文>>>

php json函数在jquery中的应用

 

本文来自小屋sjolzy.cn【原创】

 
鉴于JSON的娇小性和通用性 PHP在5.2的版本之后 默认加上一组针对数据进行JSON互转的函数: 

json_encode :数据到JSON 

json_decode :JSON到PHP变量的转换 

这两个函数在使用Ajax诸如:jquery和Ext框架的时候显得尤为重要,Ext默认接受的数据就是JSON格式,而jquery如果让JSON接入之后就显得更加轻松和简洁。本文将用一个实例讨论一下PHP 的JSON数据函数在jquery中的应用。 

Jquery做为一个轻量级的Ajax框架确实显得短小而精悍,比较适合Web编程的前台页面,更加适合和PHP结合。其中jquery中有一个方法是:$.getJSON,这个用来从服务器脚本页面取得JSON格式的数据的。我们按顺序来,首先建立一个名为json.php的PHP脚本,具体程序如下: 

<?php 

//创建一个联合数组,这里我们尽量真实的模拟了一个从数据库中读取的记录 

$a=array('name'=>'dog','sex'


2010-02-27 22:27:13阅读全文>>>

PHP:$_SERVER中,QUERY_STRING、REQUEST_URI、SCRIPT_NAME与PHP_SELF四个变量的区别

 

,$_SERVER["QUERY_STRING"]
说明:查询(query)的字符串

2,$_SERVER["REQUEST_URI"]
说明:访问此页面所需的URI

3,$_SERVER["SCRIPT_NAME"]
说明:包含当前脚本的路径

4,$_SERVER["PHP_SELF"]
说明:当前正在执行脚本的文件名

实例:
1,http://www.sjolzy.com/ (直接打开主页)
结果:
$_SERVER["QUERY_STRING"] = ""
$_SERVER["REQUEST_URI"] = "/"
$_SERVER["SCRIPT_NAME"] = "/index.p


2010-02-26 14:55:55阅读全文>>>

PHPDocument 代码注释规范总结

PHPDocument 代码注释规范

1. 安装phpDocumentor(不推荐命令行安装)
在http://manual.phpdoc.org/下载最新版本的PhpDoc
放在web服务器目录下使得通过浏览器可以访问到
点击files按钮,选择要处理的php文件或文件夹
还可以通过该指定该界面下的Files to ignore来忽略对某些文件的处理。
然后点击output按钮来选择生成文档的存放路径和格式.
最后点击create,phpdocumentor就会自动开始生成文档了。

2.如何写PHP规范注释

所有的文档标记都是在每一行的 * 后面以@开头。如果在一段话的中间出来@的标记,这个标记将会被当做普通内容而被忽略掉。
@access        该标记用于指


2010-02-12 20:21:34阅读全文>>>

25个PHP游戏编程脚本代码

 

本文介绍的脚本易于理解、使用简单并可以快速掌握。
简单的掷骰器
许多游戏和游戏系统都需要骰子。让我们先从简单的部分入手:掷一个六面骰子。实际上,滚动一个六面骰子就是从 1 到 6 之间选择一个随机数字。在 PHP 中,这十分简单:echo rand(1,6);。
在许多情况下,这基本上很简单。但是在处理机率游戏时,我们需要一些更好的实现。PHP 提供了更好的随机数字生成器:mt_rand()。在不深入研究两者差别的情况下,可以认为 mt_rand 是一个更快、更好的随机数字生成器:echo mt_rand(1,6);。如果把该随机数字生成器放入函数中,则效果会更好。
清单 1. 使用 mt_rand() 随机数字生成器函数
  function roll () {
  return mt_rand(1,6);
  }
  echo rol


2010-02-09 18:47:52阅读全文>>>

PHP生成网页快照

 

<?php
$url = 'www.baidu.com'; //抓取百度
echo snapshot($url);  //输出结果为图片地址
echo snapshot($url, './baidu.png'); //将图片保存至本地baidu.png, 输出内容图片大小

/**
 * 生成网页快照
 * Fr PHP100.com 论坛 xiaokai
 * @param   string  $site   目标地址
 * @param   string  $path   保存地址, 为空则不保存
 * @param   integer $dealy  延迟
 * @return  


2010-02-09 18:42:59阅读全文>>>

php截取百度搜索结果

 

简单的通过file($URL)获取远程网页数据,用implode()函数把数组合并成string,再根据自己的需要,对string进行截取、过滤等个性化处理,基于此思想,可以进一步拓展,估计就是采集器的雏形了。。。

<?php
if(isset($keyword)&&$keyword!=”")
{
$kwd=urlencode($_POST["keyword"]);
$strurl=”http://www.baidu.com/s?wd=”.$kwd.”&cl=3“;
$resarr=file($strurl);
$resstr=implode(” “,$resarr);
$resstr=strstr($resstr,”<DIV id=ScriptDiv></DIV>”);
$footpos=strpos($resstr,’<td style=”font-size:14px;font-weight:bold;height:40px;width:70px;”>相关搜索</td>’);
$resstr=substr($resstr,o,$footpos); echo $resstr;
}else
{
echo”请输入查询单词”;
echo ‘<form name=”search” action=”search.php” method=”post”><input type=”text” name=”keyword”></i


2010-01-21 21:20:59阅读全文>>>

PHP实现对文本数据库的数据显示、加入、修改、删除、查询

  PHP实现对文本数据库的数据显示、加入、修改、删除、查询五大基本操作的方法

我用一个留言本程序作为例子,阐述PHP实现对文本数据库的数据显示、加入、修改、删除、查询五大基本操作的方法。

此文本数据库共有字段10个:客户IP、发言时间、客户名、客户EMAIL、客户主页地址、留言表情图片名、客户QQ、客户形象图片、留言内容、管理员回复内容。

1、加入数据程序段。
$date=date("Y-m-d H:i:s");//取得系统时间
$ip = $HTTP_SERVER_VARS[REMOTE_ADDR]; //取得发言的IP地址
$text=encode($gb_text);//去掉留言内容后面的空格.
$fp=fopen("gb.dat","a");//以只写模式打开gb.dat文本文件,文件指针指向文件尾部.
$str =$ip."|".$date."|".$gb_name."|".$gb_email."|".$gb_home."|".$face."|".$gb_qq."|". $head."|".$text."|".$reply."\n";//将所有留言的数据赋予变量$str,"|"的目的是用来今后作数据分割时的数据间隔符号。
fwrite($fp,$str);//将数据写入文件


2010-01-19 22:10:30阅读全文>>>

PHP购物车类

  <?
// 购物车类 

/*
使用说明:
构造函数 cart 可以使用参数:
cart($cartname = 'myCart', $session_id = '', $savetype = 'session', $cookietime = 86400, $cookiepath = '/', $cookiedomain = '')
$cartname 是购物车的标识,可以指定,可以保证不重名,不会有相关冲突
$session_id 是 session_id,默认是使用 cookie 来传输,也可以自定义,如果存储类型是 session 才起效
$savetype 存储类型,有 session 和 cookie 方式
... 其他是 cookie 需要的参数

如果程序本身也需要使用 session,建议购物车使用 cookie 存储




添加一个商品
============================================================
// 引用类
require_once './cart.class.php';
// 建立类实例
$cart = new cart();

// 商品已经存在 修改数据
if ($cart->data[$id]) {
$cart->data[$id]['count'] += $count;
$cart->data[$id]['money'] += $cart->data[$id]['price'] * $count;
// 添加商品
} else {
$cart->data[$id]['name'] = $name;
$cart->data[$id]['price'] = $price;
$cart->data[$id]['count'] = $count;


2010-01-14 19:16:00阅读全文>>>

发表评论:(这里的评论会加到留言板)