首页 › 日存档 › 2010年04月26日

PHP网络开发详解:远程文件包含漏洞

由于PHP支持使用相同的函数(Function)对本地文件和远程文件进行操作。因此,一些恶意用户通过强行使网站上的PHP代码(Code)包 含自己的文件来实现执行自己脚本的目的。以下代码(Code)实现了根据浏览器地址栏参数的文件名称包含不同文件的功能。

<?php
$file_name = $_GET["filename"]; //获得当前文件名
include(“$file_name “); //包含文件
// 一些其他操作
?>

这时,通过在地址栏上指定不同的文件名就可以实现包含不同文件并执行的功能。例如,通过在浏览器上访问http://localhost /test.php?filename=myinc.php就可以在代码(Code)中包含并执行myinc.php文件。 继续阅读 »

php 出现Cannot modify header information问题的解决方法大全

1.呼叫setcookie的敘述必須放在<html>标签之前
2.呼叫setcookie之前,不可使用echo
3.直到網頁被重新載入後,cookie才會在程式中出現
4.setcookie函数必須在任何資料輸出至浏览器前,就先送出 继续阅读 »

PHP文件缓存的性能测试

PHP常用缓存方式
第一种,把需要缓存的数据进行处理,形成PHP可以直接执行的文件。在需要缓存数 据的时候,通过include方式引入,并使用。
第二种,把需要的数据通过serialize函数序列化后直接保存到文件。在需要使用缓存数据的 时候,通过反序列化读入文件内容并复制给需要的变量,然后使用。

测试结果
通过测试我们发现,第二种也就是serialize缓存数据的方式更加高效。(数据略去,最 后提供了文章地址下载,大家可以自行测试)

原因分析
include方式读取缓存的时候,PHP需要执行几个过程
1.读取文件
2. 解析所Include的文件
3.执行,给变量赋值

而serialize 序列化方式读取缓存的时候:
1.读取数据
2.反序列化数据内容
3.给变量赋值

继续阅读 »

FCKeditor 和 SyntaxHighlighter 代码高亮插件的整合

Introduction(简介)

This is a dialog-based plugin to handle formatting of source code for FCKeditor 2.5.x. It WON’T work with the new CKEditor (yet).(CKEditor 是FCKEditor 的升级版,不过,SyntaxHighlighter 还不能在 CKEditor 中实现代码高亮) It makes use of the SyntaxHighlighter 2.0.x javascript library available to download from Alex Gorbatchev’s project page (the older version 1.5.1 version is available from Google Code).

The plugin primiarily edits a <pre> tag with some custom attributes. Its mainly aimed at users editing blogs or content management systems where there is a requirement to format programming languages on a website that is being edited using FCKEditor.

The plugin will not format the code in FCKEditor – the SyntaxHighlighter javascript library dynamically generates a lot of formatted HTML at runtime, which would cause problems in FCKEditor.

继续阅读 »

如何在 Windows 下安装 Memcached

(其实在Windows下安装还是比较简单的)

源码包准备:

1,memcached 1.2.1 for Win32 binaries

这个是 Win32 服务器端的 memcached 最新版本,直接下载就可以了;

2,php_memcache-5.2-Win32-vc6-x86-20090408.zip

这个是 php 所需的 PECL 扩展,即 php_memcache 扩展;(一定要和自己的 PHP 版本相同,我用的是5.2.1)

有了源码包包,那就开始大快朵颐吧,按照下面的步骤

1. 将第一个包解压放某个盘下面,比如在c:\memcached
2. 在终端(也即cmd命令界面)下输入 ‘c:\memcached\memcached.exe -d install’ 安装
3. 再输入: ‘c:\memcached\memcached.exe -d start’ 启动。(需要注意的: 以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了)
4. 解压第二个包包,里面会只有一个 php_memcache.dll 文件,把它放入 usr/local/php5/ext/ 中
5. 在C:\WINDOWS\php.ini 加入一行 ‘extension=php_memcache.dll’(不知道为什么 PHP 会有两个配置文件,一个在 usr/local/php5/php.ini, 而另一个则在 C:/WINDOWS/中,而且只改前一个配置文件不起作用,所以就把 WINDOWS 中的 php.ini 也改掉了!)

继续阅读 »

nwpulei php 使用post,get的一种简洁方式

使用$_POST,和$_GET获取客户发来的信息时,一般是使用数组加小标的方式。

近来看到了一个巧妙地方法,原理是

$var_a =’var_b’;

$$var_a =’test’;

则echo $var_b;为’test’

因此可以这样处理

foreach(array(‘_COOKIE’, ‘_POST’, ‘_GET’) as $_request)

{
foreach($$_request as $_key => $_value)

{
$_key{0} != ‘_’ && $$_key = addslashes($_value);
}
}

这样像test.php?name=name_in&pwd=pwd_in

你就可以直接用$name,$pwd

来引用客户端发送的数据。

继续阅读 »