1 <?
2 class useful{
3 /*
4 * 常用函数类
5 * 作 者:多菜鸟
6 * 联系邮箱:kingerq AT msn DOT com
7 * 创建时间:2005-07-18
8 * 来源:http://blog.csdn.net/kingerq
9 */
10 /*
11 * 功能:格式化数字,以标准MONEY格式输出
12 */
13 function formatnumber($num){
14 return number_format($num, 2, ".", ",");
15 }
16
17 /*
18 * 功能:格式化文本,将\n转成<br>等
19 * 参数:$string 来源字符串
20 * 返回:处理后的字符串
21 */ function formatstring($string = ""){
22 $string = preg_replace(array("/ /", "/ /"), array(" ", " "), $string);
23 return nl2br($string);
24 }
25
26 /*
27 * 功能:格式化文本输出
28 * 参数 $text 为需格式化的文本内容
29 */ function formatcontent($text){
30 $trans = get_html_translation_table(HTML_SPECIALCHARS);
31 $trans = array_flip($trans);
32 $text = strtr($text, $trans);
33 //$text = str_replace("\n", "<br>", $text);
34 //$text = str_replace(" ", " ", $text);
35 return $text;
36 }
37
38 /*
39 * 将字节转换成Kb或者Mb
40 * 参数 $num为字节大小
41 */ function bitsize($num){
42 if(!preg_match("/^[0-9]+$/", $num)) return 0;
43 return $num > 1024 ? ($num/1024 > 1024 ? round($num/1024/1024, 2)." Mb" : round($num/1024, 2)." Kb") : $num." 字节";
44 }
45
46 /*
47 * 防注入处理(为变量加入斜杠)函数
48 * 参数 $array 为防注入变量数组
49 */ function add_s(&$array){
50 foreach($array as $key=>$value){
51 if(!is_array($value)){
52 $array[$key]=addslashes($value);
53 }else{
54 $this->add_s($array[$key]);
55 }
56 }
57 }
58
59 /*
60 * 转换HTML特殊字符(表单提交的时候使用,防止恶意JS代码)
61 * 参数 $array 为需转换的字符串或者数组
62 */ function specialhtml(&$array){
63 if(is_array($array)){//数组处理
64 foreach($array as $key=>$value){
65 if(!is_array($value)){
66 $array[$key]=htmlspecialchars($value);
67 }else{
68 $this->specialhtml($array[$key]);
69 }
70 }
71 }else{
72 $array = htmlspecialchars($array);
73 }
74 }
75
76 /*
77 * 可以避免乱码的截取汉字
78 * 参数 $str 为字符串,$start 为开始字符,$len 结束字符
79 * 返回截取后的字符
80 */ function msubstr($str, $start, $len) {
81 $tmpstr = "";
82 $strlen = $start + $len;
83 for($i = 0; $i < $strlen; $i++) {
84 if(ord(substr($str, $i, 1)) > 0xa0) {
85 $tmpstr .= substr($str, $i, 2);
86 $i++;
87 } else
88 $tmpstr .= substr($str, $i, 1);
89 }
90 return $tmpstr;
91 }
92
93 /*
94 * 功能:综合提示JS代码输出
95 * 参数 $msg 为提示信息
96 * $direct 为提示类型 0为提示(默认)1为提示刷新返回 2为提示返回
97 * 输出提示代码并结束程序
98 */ function alert_msg($msg, $direct = "0"){
99 switch($direct){
100 case '0'://提示
101 $script = "";
102 case '1'://提示刷新返回
103 $script = "location.href=\"".$_SESSION["HTTP_REFERER"]."\";";
104 break;
105 case '2'://提示返回
106 $script = "history.back();";
107 break;
108 default://提示转向指定页面
109 $script = "location.href=\"".$direct."\";";
110 }
111 echo "<script language='javascript'>window.alert('".$msg."');".$script."</script>";
112 exit;
113 }
114
115 /*
116 * 功能:取得给定日期所在周的开始日期和结束日期
117 * 参数:$gdate 日期,默认为当天,格式:YYYY-MM-DD
118 * $first 一周以星期一还是星期天开始,0为星期天,1为星期一
119 * 返回:数组array("开始日期", "结束日期");
120 */ function aweek($gdate = "", $first = 0){
121 if(!$gdate) $gdate = date("Y-m-d");
122 $w = date("w", strtotime($gdate));//取得一周的第几天,星期天开始0-6
123 $dn = $w ? $w - $first : 6;//要减去的天数
124 $st = date("Y-m-d", strtotime("$gdate -".$dn." days"));
125 $en = date("Y-m-d", strtotime("$st +6 days"));
126 return array($st, $en);//返回开始和结束日期
127 }
128
129 /*
130 * 功能:检测页面是否合法连接过来
131 * 如果为非法,就转向到登陆窗口
132 */ function checkurl(){
133 //如果直接从浏览器连接到页面,就连接到登陆窗口
134 //echo "referer:".$_SESSION['HTTP_REFERER'];
135 if(!isset($_SESSION['HTTP_REFERER'])) {
136 header("location: index.php");
137 exit;
138 }
139 $urlar = parse_url($_SESSION['HTTP_REFERER']);
140 //如果页面的域名不是服务器域名,就连接到登陆窗口
141 if($_SERVER["HTTP_HOST"] != $urlar["host"]) {
142 header("location: index.php");
143 exit;
144 }
145 }
146
147 /*
148 * 读取文件内容
149 * 参数 $file 为文件名及完整路径
150 * 返回文件内容
151 */ function readfiles($file){
152 $tdata = "";
153 $fp = fopen($file, "r");
154
155 if(filesize($file) <= 0) return;
156
157 while($data = fread($fp, filesize($file))){
158 $tdata .= $data;
159 }
160 fclose($fp);
161 return $tdata;
162 }
163 }
164 ?>
165
166 这个小程序是将来访者的$_SERVER['HTTP_REFERER']信息记录到dbfile中,达到访客来源统计的效果。
167
168 referer.php,主文件,记录来访信息。
169
170 <?php
171 $refererFile='refererdata.php';
172 if(file_exists($refererFile)){
173 require_once($refererFile);
174 }else{
175 $Referer=array();
176 }
177
178 $path=pathinfo($SCRIPT_NAME);
179 if(isset($_SERVER['HTTP_REFERER']) && !strstr($_SERVER['HTTP_REFERER'],'http://'.$HTTP_HOST.$path['dirname'])){
180 $url=urldecode($_SERVER['HTTP_REFERER']);
181 if(isset($Referer[$url])){
182 $Referer[$url]=$Referer[$url]+1;
183 }else{
184 $Referer[$url]=1;
185 }
186 function getRefererStr($i,$k){
187 global $s;
188 $s[]="\t\"".$k."\"=>$i";
189 }
190 array_walk($Referer,'getRefererStr');
191 $s="<?php\n\$Referer=array(\n".join($s,",\n")."\n);\n?>";
192 if(is_writable($refererFile) || !file_exists($refererFile)){
193 if(!$handle=fopen($refererFile,'w')){
194 return false;
195 }
196 if(!fwrite($handle,$s)){
197 return false;
198 }
199 fclose($handle);
200 }else{
201 return false;
202 }
203 return true;
204 }
205 ?>
206
207
208 在要统计的页面插入“<?php require_once('referer.php'); ?>”,使用时主文件会自动生成一个数据存储文件refererdata.php。
209
210 referstat.php,来源信息察看文件。
211
212 <?php
213 if(file_exists('refererdata.php')){
214 require_once('refererdata.php');
215 natsort($Referer);
216 end($Referer);
217 for($i=0;$i<count($Referer);$i++){
218 $R=current($Referer);
219 $s[]='» <a href="'.key($Referer).'" target="_blank">'.preg_replace("/^https?:\/\//i",'',key($Referer)).'</a> ('.$R.')';
220 prev($Referer);
221 }
222 echo '<b>访客来源:</b><br/>'.join($s,'<br/>');
223 }else{
224 header('Location:.',true);
225 }
226 ?>