可爱熊个人博客

Archive for 七月, 2011

php下过滤html代码的函数 提高程序安全性

以下为过滤HTML代码的函数:
复制代码 代码如下:
function ihtmlspecialchars($string) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = ihtmlspecialchars($val);
}
} else {
$string = preg_replace(‘/&((#(\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});)/’, ‘&\\1’,
str_replace(array(‘&’, ‘”‘, ‘<‘, ‘>’), array(‘&’, ‘”‘, ‘<‘, ‘>’), $string));
}
return $string;
}
Read More…

php intval

不管什么类型 如果是数字,就返回数字,如果不是数字就返回0
在PHP中用$_GET[‘id’]的时候就可以这样来一个转换
PHP代码

  1. $idintval($_GET[‘id’]);

intval(PHP 4, PHP 5)
intval — Get the integer value of a variable

Descriptionint intval( mixed$var[, int$base= 10] )Returns the integer value of var,using the specified basefor the conversion(the default is base 10).

Parameters
varThe scalar value being converted to an integer
baseThe base for the conversion (default is base 10)

Return ValuesThe integer value of varon success, or 0 onfailure. Empty arrays and objects return 0, non-empty arrays andobjects return 1.
The maximum value depends on the system. 32 bit systems have amaximum signed integer range of -2147483648 to 2147483647. So for exampleon such a system, intval(‘1000000000000’) will return2147483647. The maximum signed integer value for 64 bit systems is9223372036854775807.
Strings will most likely return 0 although this depends on theleftmost characters of the string. The common rules ofinteger castingapply.

Examples

echo intval(42);                      // 42
echo intval(4.2);                     // 4
echo intval(’42’);                    // 42
echo intval(‘+42’);                   // 42
echo intval(‘-42’);                   // -42
echo intval(042);                     // 34
echo intval(‘042’);                   // 42
echo intval(1e10);                    // 1410065408
echo intval(‘1e10’);                  // 1
echo intval(0x1A);                    // 26
echo intval(42000000);                // 42000000
echo intval(420000000000000000000);   // 0
echo intval(‘420000000000000000000′); // 2147483647
echo intval(42, 8);                   // 42
echo intval(’42’, 8);                 // 34
?>

 

json 排序 json_decode()

今天些点东西,竟然报错Call to undefined function json_decode()
json_decode我用过很多次了,竟然提示没有定义函数json_decode,真s奇怪。
检查了一下版本,php5.1,去官方查了一下,php5.2才开始支持json。

$json='{“name”:[{“first”:”shen”,”end”:”xiang”},{“first”:”zhang”,”end”:”san”}],”sex”:”girl”,”work”:”jiayou”}’;
$shen=json_decode($json);//注意json_decode的最后一个参数,忽略它将会返回一个名为stdObject对象
print_r($shen);
访问方式:echo $shen->name[0]->first;//输出结果:shen
                  echo $shen['name']['0']['first']; Read More...

动网论坛专题防垃圾注册和群发方法

方法一:

实现方法

先把根目录下的reg.asp更名为zc.asp

然后新建一个reg.asp.

代码如下:
<!–#include file=”conn.asp”–>
<!–#include file=”inc/const.asp”–>
<%
Dvbbs.LoadTemplates(“”)
Dvbbs.Stats=”注册指引”
Dvbbs.Nav()
Dvbbs.Head_var 0,””,”会员注册”,”zc.asp”
call main()
Dvbbs.Footer

sub main()
%>
<div align=”center”>
<table border=”1″ width=”98%” height=”115″>
<tr>
<td height=”115″ width=”98%” bordercolorlight=”#0000FF” bgcolor=”#C0C0C0″ bordercolor=”#0000FF”>
<p align=”center”>为防止暴力营销恶意注册,设立此页面。</p>
<p align=”center”><font size=”5″>网友注册请点击:</font><b><a href=”zc.asp”><font size=”5″>我要注册</font></a></b></p>
<p> </td>
</tr>
</table>

</div>
<p> </p>
<%
end sub
%>

 

然后进入“动网论坛”管理后台,打开外观风格界面,进入 page_login 页面,按 Ctrl + F,查找 reg.asp,统统换成zc.asp ,提交修改就可以了(成功).

Read More…

php全面获取url地址栏及各种参数

php教程 全面获取url地址栏参数多种方法:

$_SERVER[“SERVER_PORT”]//获取端口

$_SERVER[‘HTTP_HOST’]//获取域名或主机地址
$_SERVER[‘SERVER_NAME’]//获取域名或主机地 址 注:只是主域名 如xhxu.cn

$_SERVER[“REQUEST_URI”]//获取域名后的详细地址 如:/index.php?id=123 …
$_SERVER[‘PHP_SELF’]//获取PHP文件名
$_SERVER[“QUERY_STRING”]//获取PHP后的网址参数

$_SERVER[‘HTTP_REFERER’]//来源网页的详细地址
Read More…

用PHP生成随机数

通常情况下,当我们要生成一个随机字符串时,总是先创建一个字符池,然后用一个循环和mt_rand()或rand()生成php随机数,从字符池中随机选取字符,最后拼凑出需要的长度。

function randomkeys($length)
{
$pattern = ‘1234567890abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLOMNOPQRSTUVWXYZ,./&l
t;>?;#:@~[]{}-_=+)(*&^%___FCKpd___0pound;”!’; //字符池
for($i=0;$i<$length;$i++)
{
$key .= $pattern{mt_rand(0,35)}; //生成php随机数
}
return $key;
}
echo randomkeys(8);这个php随机函数能生成XC*=z~7L这样的字符串,够随机!现在介绍另一种用PHP生成随机数的方法:利用chr()函数,省去创建字符池的步骤。 function randomkeys($length)
{
$output=”;
for ($a = 0; $a < $length; $a++) {
$output .= chr(mt_rand(33, 126)); //生成php随机数
}
return $output;
}
echo randomkeys(8);

在第二个php随机函数里,先用mt_rand()生成一个介于33到126之间的php随机数,然后用chr()函数转化成字符。查看ascii码表就会发现,33到126代表的正是第一个函数中字符池里的所有字符。第二个函数和第一个函数功能相同,而且更简洁。

PHP根据两个经纬度坐标计算距离

  1. function rad($d)
  2. {
  3. return $d * 3.1415926535898 / 180.0;
  4. }
  5. function GetDistance($lat1, $lng1, $lat2, $lng2)
  6. {
  7. $EARTH_RADIUS = 6378.137;
  8. $radLat1 = rad($lat1);
  9. //echo $radLat1;
  10. $radLat2 = rad($lat2);
  11. $a = $radLat1 – $radLat2;
  12. $b = rad($lng1) – rad($lng2);
  13. $s = 2 * asin(sqrt(pow(sin($a/2),2) +
  14. cos($radLat1)*cos($radLat2)*pow(sin($b/2),2)));
  15. $s = $s *$EARTH_RADIUS;
  16. $s = round($s * 10000) / 10000;
  17. return $s;
  18. }

发一个smtp完整的类!

<?php
class smtp
{
/* Public Variables */
var $smtp_port;
var $time_out;
var $host_name;
var $log_file;
var $relay_host;
var $debug;
var $auth;
var $user;
var $pass;
/* Private Variables */
var $sock;
/* Constractor */

function smtp($relay_host = “”, $smtp_port = 25,$auth = false,$user,$pass)
{
$this->debug = FALSE;
$this->smtp_port = $smtp_port;
$this->relay_host = $relay_host;
$this->time_out = 30; //is used in fsockopen()
#
$this->auth = $auth;//auth
$this->user = $user;
$this->pass = $pass;
#
$this->host_name = “localhost”; //is used in HELO command
$this->log_file = “”;
$this->sock = FALSE;
} Read More…

如何修改DeDe标签Pagelist分页样式详解

我们在用dede仿站的时候,调用文章列表页的分页时,我们会用到:
{dede:pagelist listitem=”info,index,end,pre,next,pageno” listsize=”5″/}

然而系统默认的解析样式是<li><a href=’http://’>数字</a></li>,但是有时候我们的目标站的分页样式是<a href=’http://’>数字</a>。

因为目标站的CSS里面根本没有这对标签的属性值,因此页面就会出现混乱,显然我们不需要<li></li>这对标签,下面我们来说说怎么修改。

首先我们要明白一个理论,DEDE的页面都分动态和静态两种方式显示,显然标签的解析函数也会有两个,分别对应静态和动态页面。

修改列表页的{dede:pagelist /}标签,首先我们要确定自己列表页是动态还是静态的页面。

找到include文件夹内的arc.listview.class.php文件,

如果是动态的,ctrl+F查找function GetPageListDM。

如果是静态的,ctrl+F查找function GetPageListST。

~~以下是GetPageListDM函数的部分代码: Read More…

PHP功能齐全的发送邮件类

这个类的功能则很强大,不但能发html格式的邮件,还可以发附件。

<?php
class Email {
//—设置全局变量
var $mailTo = “”; // 收件人
var $mailCC = “”; // 抄送
var $mailBCC = “”; // 秘密抄送
var $mailFrom = “”; // 发件人
var $mailSubject = “”; // 主题
var $mailText = “”; // 文本格式的信件主体
var $mailHTML = “”; // html格式的信件主体
var $mailAttachments = “”; // 附件
/* 函数setTo($inAddress) :用于处理邮件的地址 参数 $inAddress
为包涵一个或多个字串,email地址变量,使用逗号来分割多个邮件地址
默认返回值为true
**********************************************************/
function setTo($inAddress){
//–用explode()函数根据”,”对邮件地址进行分割
$addressArray = explode( “,”,$inAddress);
//–通过循环对邮件地址的合法性进行检查
for($i=0;$icheckEmail($addressArray[$i])==false) return false; }
//–所有合法的email地址存入数组中
$this->mailTo = implode($addressArray, “,”);
return true; }
/************************************************** Read More…