当前位置:  编程技术>php
本页文章导读:
    ▪php安装yaf扩展出错      php安装yaf扩展时报错:/usr/include/php/ext/pcre/php_pcre.h:37: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token/usr/include/php/ext/pcre/php_pcre.h:38.........
    ▪PHP二维数组矩形转置      <?php //二维数组转置 //定义一个二维数组 $arr =array(array(1,2,3),array(4,5,6)); //定义一个数组来放置转置的数据 $arr1=array(); //转置前遍历 echo "转置前:<br/>"; for($i=0;$i<coun.........
    ▪linux服务器配合php和cron自动实现封锁攻击者ip          我已经好久没有写点东西了,主要是因为最近实在是太忙了,有个白痴天天用webbench攻击公司的服务器.    俗话说得好,久病成医,今天我这个蒙古大夫就分享一下自动防攻.........

[1]php安装yaf扩展出错
    来源:    发布时间: 2013-11-07

php安装yaf扩展时报错:

/usr/include/php/ext/pcre/php_pcre.h:37: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
/usr/include/php/ext/pcre/php_pcre.h:38: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
/usr/include/php/ext/pcre/php_pcre.h:44: error: expected specifier-qualifier-list before ‘pcre’
 
这个问题是由于yaf扩展包需要安装PCRE的头文件和库.
PCRE可以从

ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

下载安装.

安装之后就可以成功编译yaf扩展包了.

本文链接


    
[2]PHP二维数组矩形转置
    来源:    发布时间: 2013-11-07
<?php

//二维数组转置
//定义一个二维数组

$arr =array(array(1,2,3),array(4,5,6));

//定义一个数组来放置转置的数据
$arr1=array();

//转置前遍历
echo "转置前:<br/>";
for($i=0;$i<count($arr);$i++){

for($j=0;$j<count($arr[$i]);$j++){

echo $arr[$i][$j];

}
echo "<br/>";
}

echo "转置前后:<br/>";
//确定装置后的行数
for($j=0;$j<count($arr[0]);$j++){
$arr1[$j]=array();
}
for($i=0;$i<count($arr);$i++){

for($j=0;$j<count($arr[$i]);$j++){

$arr1[$j][$i]= $arr[$i][$j];
//echo $arr;
}
}

//转置后遍历:
for($k=0;$k<count($arr1);$k++){

for($l=0;$l<count($arr1[$k]);$l++){

echo $arr1[$k][$l];
}
echo "<br/>";
}
?>

 

本文链接


    
[3]linux服务器配合php和cron自动实现封锁攻击者ip
    来源:    发布时间: 2013-11-07

    我已经好久没有写点东西了,主要是因为最近实在是太忙了,有个白痴天天用webbench攻击公司的服务器.

    俗话说得好,久病成医,今天我这个蒙古大夫就分享一下自动防攻击的部分.

    首先我来说一下这个被攻击的网站的大概部署状况.这个网站主要是nginx+mysql+php,有两台服务器分别放了web和数据库,web只对外开启了80端口操作系统是centos,而数据库服务器则在内网,攻击者的手段其实很简单,用webbench网站压力测试工具发送大量的请求到服务器,之前的时候发送每一个请求之后数据库就会相应,然后读取内容最终显示,造成数据库和web之间大量的交换数据,甚至导致mysql达到连接数上限,请求被拒绝,而且攻击者时间挺多的,他不停地换浮动ip,因此直接用防火墙封锁ip没意义.

   刚开始我的做法是,用php取得攻击者的agent头,判断是不是webbench来访,如果是就die掉,不在请求数据库,确实挺有效,数据库不会再超出限制了,但是对方频繁的发送请求过来,导致网络带宽被严重消耗,看来得想想其他办法,最终想到了一个解决方法且实际测试发现可行,因此分享给大家,其实我的做法原理很简单:用php取得用户agent头判断是否是webbench来源,如果是的话就在服务器上写一个shell档案,这个档案的内容就是封锁IP的规则,然后再用chmod函数修改一下这个档案让其可执行,再用cron服务读取这个档案执行,把ip封锁掉,整个过程全部自动化完成不需要人为干预,另外在封锁的时候给我发一封email通知我有个倒霉蛋被干掉了,这样就行了.

    具体实现代码如下:

IF(isSet($_SERVER['HTTP_USER_AGENT']) And Trim($_SERVER['HTTP_USER_AGENT'])!='') {
$_SERVER['HTTP_USER_AGENT']=StrToLower($_SERVER['HTTP_USER_AGENT']);
IF(StriStr($_SERVER['HTTP_USER_AGENT'],'webbench')!==False) {
$p='/home/www/webbench.sh';

$_SERVER['REMOTE_ADDR']=isSet($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : 'unknow';
File_Put_Contents($p,"#!/bin/bash\niptables -I INPUT -s {$_SERVER['REMOTE_ADDR']} -j DROP;\n",LOCK_EX);
Chmod($p,0755);
chown($p,'www');
Function sMail($to,$tit,$msg) {
IF(Filter_var($to,FILTER_VALIDATE_EMAIL)==''){
throw new Exception('電郵地址錯誤!');
}

$tit='=?UTF-8?B?'.Base64_Encode($tit).'?=';
$msg = str_replace("\n.","\n..",$msg);//Windows如果在一行开头发现一个句号则会被删掉,要避免此问题将单个句号替换成两个句号

Return Mail($to,$tit,$msg,'From:No-reply@adm.bossadm.com.tw'."\n".'Content-Type:text/html;charset=utf-8');
}
sMail('see7di@gmail.com','【WebBench又開始了-by http://www.7di.net】!',date('Y-m-d H:i:s',time())." {$_SERVER['REMOTE_ADDR']}");

Header('Location:http://127.0.0.1');
Die();
}
}

 

本文链接


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3