存档
POST处理函数例子
PHP小偷处理POST请求的函数,调用方法get_post( 请求URL,参数名,参数值)
对比表单POST和fsockopen提交两种不同方式的区别。 表单POST方式提交情况下 $_POST 与 php://input可以取到值,$HTTP_RAW_POST_DATA 为空 $_POST 以关联数组方式组织提交的数据,并对此进行编码处理,如urldecode,甚至编码转换。 php://input 可通过输入流以文件读取方式取得未经处理的POST原始数据 php://input 允许读取 POST 的原始数据。和 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小,并且不需要任何特殊的 php.ini 设置。php://input 不能用于 enctype=”multipart/form-data”。 fsockopen提交POST数据 例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$sock = fsockopen("localhost", 80, $errno, $errstr, 30);
if (!$sock) die("$errstr ($errno)\n");
$data = "txt=" . urlencode("中") . "&bar=" . urlencode("Value for Bar");
fwrite($sock, "POST /posttest/response.php HTTP/1.0\r\n");
fwrite($sock, "Host: localhost\r\n");
fwrite($sock, "Content-type: application/x-www-form-urlencoded\r\n");
fwrite($sock, "Content-length: " . [...]
在HTML静态页面如何能调用到PHP的代码呢?直到今晚我才知道解决的方法。原理很简单,通过Javascript的调用就行了。
来个例子:
a.php代码
1
2
3
4
5
6
< ?php
for($i=0;$i<6;$i++)
{
echo "document.write(\"我是第".$i."次循环!<br />\");";
}
?>
上篇教程我们介绍了PHP生成静态页面的原理和使用的函数,下面我们以一个实例来讲解在PHP中如何生成静态页面,其核心思路未:首先开启 ob_start缓冲,当已经调出数据的时候利用 ob_get_contents函数获取缓冲区的内容,然后生成静态页,ob_end_clean清除缓冲即可。
例如,我们这里首先创建一个以book命名的数据表,其代码如下:
CREATE TABLE `book` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(255) NOT NULL,
`content` text,
PRIMARY KEY (`id`)
) TYPE=MyISAM;
PHP获取传入的ID,并导入模板,代码如下:
在进行网站访问时,访问静态页面永远要比访问动态页面快。眼下一下流行的CMS系统利用这一特性,定时地根据动态页面生成静态页面,将一些动态页面访问操作转化为对静态页面的访问。 那么如何进行PHP生成静态页面的操作呢?其原理就在于我们可以将一些信息变化不明显(当然信息还是会改变)的信息放在缓存在以加快显示速度,其通俗地理解便是我们在服务器端保存一些共用信息,并且可以制定这些共用信息更新的频率(比如说5分钟),然后我们使用当前时间time()与上次修改文件filemtime($file)的间隔与更新频率对比,如果大于频率时间,读取数据库,更新缓存,否则直接读取缓存数据。同事,缓存需要客户端用户激活,只需一次。
PHP相关函数:
1、Flush:刷新缓冲区的内容,输出。函数格式:flush()。
说明:这个函数经常使用,效率很高。
2、ob_start :打开输出缓冲区。函数格式:void ob_start(void)。
说明:当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。为了输出缓冲区的内容,可以使用ob_end_flush()或flush()输出缓冲区的内容。
3 、ob_get_contents :返回内部缓冲区的内容。函数格式:string ob_get_contents(void)。
说明:这个函数会返回当前缓冲区中的内容,如果输出缓冲区没有激活,则返回 FALSE 。
4、ob_get_length:返回内部缓冲区的长度。函数格式:int ob_get_length(void)。
1.寻找入口
准备:如果你以前没尝试过SQL注入攻击,那应该把HTTP友好提示关闭,这样才能让你清楚看到服务器端返回的提示信息。
尝试几个有传入参数的页面,逐个测试是否有SQL注入漏洞,识别方法为:把网址栏的ID=***x加个号,或在表单输入号,如果提示表达式错误,表示有漏洞可注入,另外,通过这个方式可以得到程序所用的数据库类型。
经测试,发现有几个页面有注入漏洞,决定从http://www.movie.com/movie.ASP?ID=1000入手,输入http://www.movie.com/movie.ASP?ID=1000,得到信息:数据库用是的ACCESS,提示ArticleID=1000附近有表达式错误,嘿,原来是个用文章系统改出来的电影站。
最近评论