防止恶意刷页面的原理是
要求在页面间传递一个验证字符串,
在生成页面的时候 随机产生一个字符串,
做为一个必须参数在所有连接中传递。同时将这个字符串保存在session中。
点连接或者表单进入页面后,判断session中的验证码是不是与用户提交的相同,如果相同,则处理,不相同则认为是重复刷新。
在处理完成后将重新生成一个验证码,用于新页面的生成
代码
代码如下 | 复制代码 |
<?php |
ie6提交两次我也碰到过,大致是用图片代替submit时,图片上有个submit(),这样会提交两次,如果只是submit钮我没碰到过提交两次的情况。
现在整理一下:
方法基本上前面几位说得差不多
接收的页即2.php分为两部分,一部分处理提交过来的变量,一部分显示页面
处理变量完毕用header( "location: ".$_SERVER[ 'PHP_SELF '])跳转到自身页
本部分要做判断,如果没有post的变量就跳过。当然也可以跳到别的页面。
跳到别的页面返回时会有问题,建议做在一个php文件里。
如果上页穿过来得变量不符合要求可以强制返回
代码如下 | 复制代码 |
<script> history.go(-1); </script> |
只说了一下大体思路,也许高手们不会遇到此类问题,可是并不是每个人都是高手。
2.php的流程
代码如下 | 复制代码 |
if(isset($_POST)) { 接收变量 if(变量不符合要求) <script> history.go(-1); </script> else 操作数据 ... if(操作完成) header( "location: ".$_SERVER[ 'PHP_SELF ']); } <script language= "JavaScript "> <!-- javascript:window.history.forward(1); //--> </script> |
curl发出请求的文件fake_ip.php:
代码
代码如下 | 复制代码 |
<?php
代码 |
目标文件target_ip里面的IP打印顺序是目前很多开源系统的IP获取顺序
访问fake_ip.php,看到结果:
58.68.44.61
58.68.44.61
127.0.0.1
实例
CURL确实很强悍,可以伪造IP和来源。
1.php 请求 2.php 。
代码如下 | 复制代码 |
1.php代码: $ch = curl_init(); 2.php代码如下: function getClientIp() { echo "IP: " . getClientIp() . ""; |
伪造成功,这是不是给“刷票”的朋友提供了很好的换IP的方案!!
•得到当前要处理的月份总共有多少天$days •得到当前要处理的月份的一号是星期几$dayofweek $days的作用:知道要处理的月份共有多少天,就可以通过循环输出天数了使用PHP实现万年历功能的要点:
•得到当前要处理的月份总共有多少天$days
•得到当前要处理的月份的一号是星期几$dayofweek
$days的作用:知道要处理的月份共有多少天,就可以通过循环输出天数了
$dayofweek的作用:只有知道每个月的1号是星期几,才能知道在输出天数之前需要输出多少空格(空白)
代码如下 | 复制代码 |
<?php |
下面是一个简单的检查文件是否存在的实例代码:
代码如下 | 复制代码 |
<?php if (file_exists($filename)) { |
如果文件存在,执行该 PHP 文件的显示结果是:
The file C:blablaphphello.txt exists.
如果文件不存在,执行该 PHP 文件的显示结果是:
The file C:blablaphphello.txt does not exist.
你也可以用file_exists 函数测试某个目录是否存在,示例代码如下:
代码如下 | 复制代码 |
if (file_exists("C:\blabla\php")) |
实例
代码如下 | 复制代码 |
/**
|
PHP判断目录是否存在
代码如下 | 复制代码 |
/**************************************************** /*判断目标目录是否存在,不存在则新建*/ /*记录完整路径和文件名*/ /*打开文件,文件名为<时间戳> + <.xml>*/ /*写入文件流*/ fclose($fp); return $filePathAndName; |
strip_tags函数
strip_tags --- 去除字串中的HTML和PHP标签
语法 : string strip_tags (string str [, string allowable_tags])
例
代码如下 | 复制代码 |
<?php // Allow <p> and <a> |
正则过滤各种标签,空格,换行符
代码如下 | 复制代码 |
$str=preg_replace("/s+/", " ", $str); //过滤多余回车 |
php 正则过滤html 的超链接
代码如下 | 复制代码 |
<?php echo preg_replace("/(?<=href=)([^>]*)(?=>)/i","#", "<a href='www.111cn.net'>你好,点这里看看</a><a href='www.111cn.net'>你好,点这里看看</a>"); ?> |
正则:/(?<=href=)([^>]*)(?=>)/
(?<=exp) 匹配exp后面的位置
(?=exp) 匹配exp前面的位置
此正则 匹配 在 href= 之后 “>” 之前 的 非 “>” 的所有字符
例子:<a href='www.111cn.net'>
找到这些字符(url)用 # 替换,就可以去掉html里的所有链接。