WEB开发笔记 www.chhua.com 每日练习 PHP数据提交类

在之前,我写过一个关于PHP的数据提交类,只是那个类,有一点问题,只简单的接受一下数据还可以,没有判断数据来源的合法性,前几天,有人在PHP群(63417682)里说,通过PHP程序进行数据的反复提交,然后占用SERVER资源,从而达到SERVER瘫痪的目的,当时只是感觉好笑,那方法着实太天真。
好了,废话不多说了,下面是我写的一个数据提交的类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
<?php
class request {//基本数据提交类
	private $request=array();
 
	public function __construct(){
		$this->request=$this->initFromHttp();
	}
 
	private function initFromHttp(){
		if ((!empty($_POST))or(!empty($_GET))) $this->checkRequest();
		if (!empty($_POST)) return $_POST;
		if (!empty($_GET)) return $_GET;
		return array();
	}
 
	public function getRequest($key){
		if (!array_key_exists($key,$this->request)) return "";
		return $this->request[$key];
	}
 
	private function checkRequest(){//判断数据来源
		 $requestURL=$_SERVER["HTTP_REFERER"]; 
		 $requestURL=substr($requestURL,0,strrpos($requestURL,"/")+1);//请示路径的目录
		 //exit();
		  //echo $requestURL;       //请求的URL 地址
	     $serName=$_SERVER['SERVER_NAME'];            //主机名
	     $path=$_SERVER['PHP_SELF'];                  //当前脚本在服务器中的路径	
	     $serAddress="http://".$serName.$path; 
	     $serAddress=substr($serAddress,0,strrpos($serAddress,"/")+1); //当前脚本在服务器中的目录
	    // echo $serAddress;
	     //exit();
	     if (strcmp($requestURL,$serAddress)<>0) {    //比较是否一致
	       echo "<script>alert('请求非法!');history.href='http://www.chhua.com';</script>";
	       exit();
	     }
 
	}
}
 
?>

呵呵,类写的匆忙,也没有来得及测试,大家可以测试一下,如果有BUG,可以通过留言回复我。

自由转载,转载请注明: 转载自WEB开发笔记 www.chhua.com

本文链接地址: PHP面向对象编程-PHP数据提交类 http://www.chhua.com/web-note1981

相关笔记

更多