admin
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文件。 继续阅读 »
admin
2010.04.26
Php, 技术文档
1.呼叫setcookie的敘述必須放在<html>标签之前
2.呼叫setcookie之前,不可使用echo
3.直到網頁被重新載入後,cookie才會在程式中出現
4.setcookie函数必須在任何資料輸出至浏览器前,就先送出 继续阅读 »
admin
2010.04.26
Php, 技术文档
PHP常用缓存方式:
第一种,把需要缓存的数据进行处理,形成PHP可以直接执行的文件。在需要缓存数 据的时候,通过include方式引入,并使用。
第二种,把需要的数据通过serialize函数序列化后直接保存到文件。在需要使用缓存数据的 时候,通过反序列化读入文件内容并复制给需要的变量,然后使用。
测试结果:
通过测试我们发现,第二种也就是serialize缓存数据的方式更加高效。(数据略去,最 后提供了文章地址下载,大家可以自行测试)
原因分析:
include方式读取缓存的时候,PHP需要执行几个过程
1.读取文件
2. 解析所Include的文件
3.执行,给变量赋值
而serialize 序列化方式读取缓存的时候:
1.读取数据
2.反序列化数据内容
3.给变量赋值
继续阅读 »
admin
2010.04.26
Php, 技术文档
(其实在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 也改掉了!)
继续阅读 »
admin
2010.04.26
Php, 技术文档
使用$_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
来引用客户端发送的数据。
继续阅读 »
近期评论