苗启源的部落格PHP - http://www.miaoqiyuan.cn Fri, 30 Dec 2011 16:20:41 +0000 http://wordpress.org/?v=2.9.1 en hourly 1 PHP分页(页码)函数 http://www.miaoqiyuan.cn/p/php-yema-fenye http://www.miaoqiyuan.cn/p/php-yema-fenye#comments Mon, 25 Oct 2010 13:40:10 +0000 mqycn http://www.miaoqiyuan.cn/?p=715 09年的时候写过一个ASP输出分页页面的函数,分享两个ASP分页(页码)函数(http://www.miaoqiyuan.cn/p/asp-yema-fenye)。在开发中,省了不少力气,今天在些一个php的分页(页码)函数,供以后工作用。和ASP版本的参数,函数名都一样。

<?php
  /*
    #函数:csPage
    #功能:返回页面列表
  */
  Function csPage($iPage,$aPage,$urlStart,$urlEnd){
  	$tmp = "";
    if($iPage == 1 && $aPage == 1){
      $tmp = "<strong> 1/1 </strong>";
    }else{
      if($iPage == 1){
        $tmp = "<span> |< </span><span> << </span>";
      }else{
        $tmp = '<a title="首页" href="' . $UrlStart . 1 . $urlEnd . '"> |< </a><a title="上一页" href="' . $UrlStart . ($iPage-1) . $urlEnd . '"> << </a>';
      }
      $tmp .= "<strong> " . $iPage . "/" . $aPage . " </strong>";
      if($iPage == $aPage){
      	$tmp .= '<span> >> </span><span> >| </span>';
      }else{
        $tmp .= '<a title="下一页" href="' . $urlStart . ($iPage+1) . $urlEnd .' "> >> </a><a title="尾页" href="' . $urlStart . $aPage . $urlEnd . '"> >| </a>';
      }
    }
    return $tmp;
  }
  ?>
]]>
http://www.miaoqiyuan.cn/p/php-yema-fenye/feed 0
PHP无限级分类函数 http://www.miaoqiyuan.cn/p/php-super-class http://www.miaoqiyuan.cn/p/php-super-class#comments Tue, 12 Oct 2010 16:32:08 +0000 mqycn http://www.miaoqiyuan.cn/?p=702 很早之前就想一套PHP无限级分类函数,供以后的项目用,今晚闲了无事,就写一个把。懒得动脑,就按以前的ASP无限级分类函数的思想写一个把。

  /*
    作者:苗启源(Miaoqiyuan.cn)
    函数:getCatagory
    功能:获得分类列表
    参数:cat_arr     -> 分类数组(Rscordset:id:分类编号,pid:上级分类,name:分类名称,childs:子分类)
          cat_pid     -> 上级分类编号
          cat_childs  -> 下级分类编号
          cat_select  -> 选择的分类
          cat_dir     -> 分类级别
    返回:返回分类列表(Option)
  */
  function getCatagory($cat_arr,$cat_pid,$cat_childs,$cat_select,$cat_dir,$format){
    if($cat_pid==0 && $format=="option"){
      echo '<option value="0">根目录</option>';
    }
    if(is_array($cat_arr)){
      foreach($cat_arr as $cat_id =>$cat){
        if($cat['pid'] == $cat_pid && strpos("," . $cat_childs . ",","," . $cat['id'] . ",") == 0){
        #if($cat['pid'] == $cat_pid){
          if($format == "option"){
            echo '<option value="'. $cat['id'] .'" '. (($cat_select == $cat['id'])?"selected":"") . '>' . $cat_dir . '┣ ' . $cat['name'] . '</option>';
          }else{
            #<li>{$cat.dir}┣<a href="?act=edt&id={$cat.id}&type=product">{$cat.name}</a></li>
            $tmp = $format;
            if(strpos($tmp,"{\$cat.dir}")>0)$tmp = str_replace("{\$cat.dir}",$cat_dir,$tmp);
            if(strpos($tmp,"{\$cat.id}")>0)$tmp = str_replace("{\$cat.id}",$cat['id'],$tmp);
            if(strpos($tmp,"{\$cat.pid}")>0)$tmp = str_replace("{\$cat.pid}",$cat['pid'],$tmp);
            if(strpos($tmp,"{\$cat.name}")>0)$tmp = str_replace("{\$cat.name}",$cat['name'],$tmp);
            if(strpos($tmp,"{\$cat.childs}")>0)$tmp = str_replace("{\$cat.childs}",$cat['childs'],$tmp);
            echo $tmp;
          }
          getCatagory($cat_arr,$cat['id'],$cat_childs,$cat_select,$cat_dir . "┃",$format);
        }
      }
    }
  }

  $cat_arr = Array(
    1 => Array(
      'id'     =>1,
      'pid'    =>0,
      'name'   =>'分类一',
      'childs' =>'1,2,3,4,5'
    ),
    2 => Array(
      'id'     =>2,
      'pid'    =>1,
      'name'   =>'分类二',
      'childs' =>'2,5'
    ),
    3 => Array(
      'id'     =>3,
      'pid'    =>1,
      'name'   =>'分类4',
      'childs' =>'3,4'
    ),
    4 => Array(
      'id'     =>4,
      'pid'    =>3,
      'name'   =>'分类4',
      'childs' =>'4'
    ),
    5 => Array(
      'id'     =>5,
      'pid'    =>2,
      'name'   =>'分类5',
      'childs' =>'5'
    )
  );

  getCatagory($cat_arr,0,'','','','<li>{$cat.dir}┣<a href="?act=edt&id={$cat.id}&type=product">{$cat.name}</a></li>');
]]>
http://www.miaoqiyuan.cn/p/php-super-class/feed 0
关于模板的一些思考 http://www.miaoqiyuan.cn/p/template-thinks http://www.miaoqiyuan.cn/p/template-thinks#comments Thu, 16 Sep 2010 14:33:59 +0000 mqycn http://www.miaoqiyuan.cn/?p=695 现在php的项目,动不动就smarty。甚至有的朋友做个两三个页面的新闻系统,也要用smarty。今天按捺不做,谢谢我的看法。本文原文地址为:http://www.miaoqiyuan.cn/p/template-thinks,希望转贴的朋友留一个我的链接。
做个新闻系统,不用smarty,10KB以内的代码搞定,如果用smarty后,就要几百KB了。有些人可能会说不用模板,修改的时候不方便,或则需要每篇文章使用不同的模板,直接用php代码,就不好控制了,在这里给我大家分享一套另类的模板方法。

<?php
  #init.php
  #获取皮肤设置,如果不存在,则调用default.php
 $skin = trim($_GET['skin']);
  if(!isset($skin) || @$skin==''){
    $skin = 'skin/default.php';
  }else{
    $skin = 'skin/'.$skin.'.php';
    if(!is_file($skin)){
      $skin = 'skin/default.php';
    }
  }
?>

数据处理文件

<?php
   include("inc/init.php");
   #其他数据处理,把所有的数据,用变量或数组保存
  ...
   $title = "1111";
   $newlist = Array(
     Array("111"),
     Array("222"),
     Array("333")
   );
   #引用模板文件
  require($skin);
?>

模板文件:default.php

<html>
<head>
<meta http-equiv=content-type content="text/html; charset=utf-8">
<title><?php echo $title?></title>
</head>
<body>
<?php foreach($newslist as $id => $item){?>
<li><?php echo $item['title'];?></li>
<?php }?>
</body>
</html>
?>

模板文件:skin2.php

<html>
<head>
<meta http-equiv=content-type content="text/html; charset=utf-8">
<title><?php echo $title?></title>
</head>
<body>
<table>
<?php foreach($newslist as $id => $item){?>
<tr><td><?php echo $item['title'];?></td></tr>
<?php }?>
</table>
</body>
</html>
?>
]]>
http://www.miaoqiyuan.cn/p/template-thinks/feed 2
PHP写的FTP猜解工具 http://www.miaoqiyuan.cn/p/php-ftp-check http://www.miaoqiyuan.cn/p/php-ftp-check#comments Tue, 29 Jun 2010 16:13:29 +0000 mqycn http://www.miaoqiyuan.cn/?p=665 最近,使用公司虚拟主机的客户老是抱怨网站被挂马,服务器安全方面我认为是没有问题的,问题只有可能出现在ftp上。查看服务器日志,果然没错,近期有大量的ftp登录失败的日志。
原因找到了,看看到底是那些空间出现了问题。于是模仿攻击这的方式,用php写的ftp猜解工具,今天测试了一下,结果让人触目惊心啊。考虑再三,本工具还是一改我往常的作风,不公开源代码了,原因嘛~太危险了,本工具一个小时能检测1800(我测试的服务器机房线路比较好,所以速度很快)个站点左右,出现安全隐患的竟然能达到300个站点左右,出现问题的站点竟然能占到1/6,如果被非法份子利用,跑10个小时,可能就有3000个站点遭殃了。
简单说一下功能,php 5.0开发的,
1、首先载入页面框架,提示输入一个域名
2、得到该服务器上的站点,调用myip.cn上的同服务器站点,返回列表。使用了easytemplate框架。
3、根据2的列表,依次执行猜解工作。每次猜解完一条信息,通过ajax返回工作进度,暂停0.5秒继续猜解。

猜解字典可自定义,一下密码均可被猜出:
同FTP名
域名去掉.(比如域名:www.baidu.com 密码为wwwbaiducom,baiducom)
123,1234,12345,123456,1234567,12345678,123456789,5201314,1314520,987654321,54321,88888888,000,0000,001,002,007,008,10th,1st,2nd,3rd,4th,5th,6th,7th,8th,9th,100,101,108,133,163,166,188,233,266,350,366,450,466,136,137,138,139,158,168,169,192,198,200,222,233,234,258,288,300,301,333,345,388,400,433,456,458,500,555,558,588,600,666,598,668,678,688,888,988,999,1088,1100,1188,1288,1388,1588,1688,1888,1949,1959,1960,1961,1962,1963,1964,1965,1966,1967,1968,1969,1970,1971,1972,1973,1974,1975,1976,1977,1978,1979,1980,1981,1982,1983,1984,1985,1986,1987,1988,1989,1990,1997,1999,2000,2001,2002,2088,2100,2188,2345,2588,3000,3721,3888,4567,4728,5555,5678,5888,6666,6688,6789,6888,7788,8888,8899,9988,9999,23456,34567,45678,88888,654321,888888,6666,56789,1234567,12345678,737,777,1111,2222,3333,4321,computer,cpu,memory,disk,soft,y2k,software,cdrom,rom,admin,master,card,pci,lock,ascii,knight,creative,modem,internet,intranet,web,www,isp,unlock,ftp,telnet,ibm,intel,microsoft,dell,compaq,toshiba,acer,info,aol,56k,server,dos,windows,win95,win98,office,word,excel,access,unix,linux,password,file,program,mp3,mpeg,jpeg,gif,bmp,billgates,chip,silicon,sony,link,word97,office97,network,ram,sun,yahoo,excite,hotmail,yeah,sina,pcweek,mac,apple,robot,key,monitor,win2000,office2000,word2000,net,virus,company,tech,technology,print,coolweb,guest,printer,superman,hotpage,enter,myweb,download,cool,coolman,coolboy,coolgirl,netboy,netgirl,log,login,connect,email,hyperlink,url,hotweb,java,cgi,html,htm,home,homepage,icq,mykey,c++,basic,delphi,pascal,anonymous,crack,hack,hacker,chinese,vcd,chat,chatroom,mud,cracker,happy,hello,room,english,user,netizen,frontpage,agp,netwolf,usa,hot,site,address,mail,news,topcool

]]>
http://www.miaoqiyuan.cn/p/php-ftp-check/feed 2
使用php加密、压缩Javascript脚本 http://www.miaoqiyuan.cn/p/php-javascriptpacker http://www.miaoqiyuan.cn/p/php-javascriptpacker#comments Sat, 15 May 2010 13:56:33 +0000 mqycn http://www.miaoqiyuan.cn/p/%e4%bd%bf%e7%94%a8php%e5%8a%a0%e5%af%86%e3%80%81%e5%8e%8b%e7%bc%a9javascript%e8%84%9a%e6%9c%ac 又好久没有更新日志了,上次谈到将工作用的脚本换成php,现在发现这是一个非常非常明智的选择。
在Linux也可以直接用php当作脚本,处理工作的事情。也算是“跨平台脚本”咯~~~
今天说一下JS压缩,呵呵,这种工具我可写不出来,但是网上牛人已经帮我们写出了相应的类:JavaScriptPacker(http://creativecommons.org/licenses/LGPL/2.1/)
我们直接调用就可以咯,比如将test_resource.js压缩成test.js。

<?php
   #demo.php
   require_once 'class.JavaScriptPacker.php';
   $packer = new JavaScriptPacker(file_get_contents("./test_resource.js"), 'Normal', true, false);
   file_put_contents("./test.js",$packer->pack());
?>

直接 php demo.php

]]>
http://www.miaoqiyuan.cn/p/php-javascriptpacker/feed 0
PHP连接Access的方法 http://www.miaoqiyuan.cn/p/php-access http://www.miaoqiyuan.cn/p/php-access#comments Sat, 08 May 2010 13:29:13 +0000 mqycn http://www.miaoqiyuan.cn/?p=599 最近准备放弃使用许久的vbscript作为处理工作方面问题,而转向PHP。
应该是ASP转向PHP把,怎么是vbscript转向php?这个我要说一下,处理工作方面问题,比如通过API导个数据…用ASP,PHP在IIS中执行肯定不行,写个VBScript脚本,cscript 脚本名 让他执行吧,别的不用关了。所以用脚本处理些数据转换、导入导出还是不错的选择。
VBScript的致命的缺点是不支持引用文件,对HTTP请求方便不是很强,正则、XML处理起来不方面,JSON作为数据载体时就等着傻眼把。这是后用php作为脚本也是一个不错的选择。扯得有点远了,换成了php,数据库还是Access怎么办?这个简单,直接用com创建adodb实例即可。
现在已经创建好了数据库,只填写了部分域名,要通过php到域名查询接口返回whois信息,并存到Access数据库中,Access字段名已对应返回数组中的索引相同。

<?php
	set_time_limit(0);

	#因为要链接web,使用我前几天写的myhttp类。
	include('myhttp.clsss.php');
	#API操作,这里直接忽略,里边有个get_domain_info来获取API返回的数据,并处理成数组。
	include('api.function.php');

	$conn = new COM("Adodb.Connection");
	$conn -> open("provider=microsoft.jet.oledb.4.0;data source=D:\myweb\miaoqiyuan.cn\test\php-linkdb\domain.mdb");

	$dlist = new COM("ADODB.Recordset");
	$rs = new COM("ADODB.Recordset");

	$dlist -> open("select [domain],[did] from [domain] where isupdate=0",$conn,1,1);
	while(!$dlist -> eof()){
		echo "下载域名数据[".$dlist['domain']."].\n";
		$d=get_domain_info($dlist['domain']);
		$rs -> open("select * from [domain] where  did=".$dlist['did'],$conn,3,2);
		foreach($rs -> fields as $k => $v){
			if($k >= 6){
				$myvalue = $d[$rs[$k] -> name];
				if(isset($myvalue) && !is_array($myvalue)){
					$rs[$k] -> value = mb_convert_encoding($myvalue,"GB2312","UTF-8");
				}
			}
		}
		$rs['isupdate'] -> value = 2;
		$rs -> update();
		$rs -> close();
		$dlist -> movenext();
	}
?>
]]>
http://www.miaoqiyuan.cn/p/php-access/feed 0
myhttp类 php使用fsockopen实现稳定的HTTP连接 http://www.miaoqiyuan.cn/p/myhttp-php-fsockopen http://www.miaoqiyuan.cn/p/myhttp-php-fsockopen#comments Sat, 01 May 2010 08:52:19 +0000 mqycn http://www.miaoqiyuan.cn/?p=579 最近一直在写淘宝客的程序,因为网络的原因,file_get_contents经常读取出错,想到了比较稳定的方法,使用fsockopen连接API。fsockopen 函数在网上介绍的还是很多的,但是介绍再多,创建http请求仍然是一件比较麻烦的。
fsockopen调用的方法比较繁琐,要使用得到的数据还要去掉http头,所以冒出了写一个通用的类的方法。今天正好是51假日,在家写了这种的一个类。

<?php
	/*
	CatSeven myHttp Vesion 0.1

	======CopyRight======
	Home:http://www.myw3.cn/myDevise/myHttp/
	Design:Miao Qiyuan[miaoqiyuan.cn]
	Downloads:http://downloads.myw3.cn/file=myDevise/myHttp/0.1
	*/

	class myHttp{
		public $Method,$URI,$SendDate;
		public $HttpServerPort,$HttpServer,$HttpServerIP;
		public $Err,$ErrStr;
		public $timeout;
		public $responseText;

		public function __construct($uri='/',$method='get',$query='',$server='localhost',$port='80',$serverip='',$timeout=30){
			$this->URI=$uri;
			$this->Method=$method;
			$this->SendDate=$query;
			$this->HttpServer=$server;
			$this->HttpServerPort=$port;
			$this->HttpServerIP=$serverip;
			if(is_numeric($timeout))$this->timeout=$timeout;
		}

		public function send(){
			$this->Method=strtoupper($this->Method);
			if($this->HttpServerIP=="")$this->HttpServerIP = $this->HttpServer;
			if($this->Method=="GET" && strstr($this->URI,"?")==0)$this->URI=$this->URI."?".$this->SendDate;
			$sock = fsockopen($this->HttpServerIP,$this->HttpServerPort,$errno,$errstr,$this->timeout);
			if(!$sock){
				$this->ErrStr=$errstr;
				$this->Err=$errno;
				die("无法打开".$this->HttpServerIP.":".$this->HttpServerPort);
			}
			fwrite($sock, $this->Method." ".$this->URI." HTTP/1.0\r\n");
			fwrite($sock, "Host: ".$this->HttpServer."\r\n");
			if($this->Method=="POST"){
				fwrite($sock, "Content-type: application/x-www-form-urlencoded\r\n");
				fwrite($sock, "Content-length: ".strlen($this->SendDate) . "\r\n");
				fwrite($sock, "Accept: */*\r\n");
				fwrite($sock, "\r\n");
				fwrite($sock, $this->SendDate."\r\n");
				fwrite($sock, "\r\n");
				fwrite($sock, "Referer: http://www.myw3.cn/myDevise/myHttp/");
			}
			fwrite($sock, "Connection: Close\r\n\r\n");
			$headers = "";
			while ($str = trim(fgets($sock,4096)))
				$headers .= "$str\n";

			$body = "";
			while (!feof($sock))
				$body .= fgets($sock, 4096);
			fclose($sock);
			$this->responseText=$body;
		}
	}
?>

输入参数的方法有两种,在创建类的时候同时输入参数和先创建类,慢慢输入参数。相关例子分别为test,test2,该类同时支持get,post的方法。

< ?php
	include("myHttp.class.php");
	$test = new myHttp();
	$test -> URI = "/index.php";
	$test -> HttpServer = "www.miaoqiyuan.cn";
	$test -> Method = "post";
	$test -> SendDate ="s=myhttp";
	$test -> send();
	echo $test -> responseText;

	$test2 = new myHttp('/index.php','get','s=myhttp','www.miaoqiyuan.cn','80','',30);
	$test2 -> send();
	echo $test2 -> responseText;
?>
]]>
http://www.miaoqiyuan.cn/p/myhttp-php-fsockopen/feed 0
更dedeeims添加在线支付系统 http://www.miaoqiyuan.cn/p/dedeeims-onlinepay http://www.miaoqiyuan.cn/p/dedeeims-onlinepay#comments Tue, 23 Mar 2010 16:19:19 +0000 mqycn http://www.miaoqiyuan.cn/?p=528 <h4 class=”sort”><a class=”icon par” href=”../member/pay.php”> < ?php echo GetLang('pay'); ?> </a></h4> </li> 然后在语言文件/include/lang/下相应的语言文件中添加上对应的文字描述。 因为网银有很多,支付接口也很多,我们用的时候可能要添加多个接口,所以我们要做一个网银配置脚本:bank_config.php < ?php $bank_List=Array( '网银在线'=>'chinabank' ); ?> 首先来说dedeeims在线支付的前台,很简单。pay.php,一个简单的表单,这里不再详述,代码如下: &lt;form class="mTB10 mL10 mR10" name="form2" action="bank.php" method="post" target="_blank"> &lt;table cellspacing="1" class="submit"> &lt;tbody> &lt;tr> &lt;td style="text-align:right;">支付接口:&lt;/td> [...]]]> 因为数据库部分我已经写过一篇文章:给dedeims添加在线支付的功能之数据库设置,本文以该文章的数据库为准来写,如果没看过此文的网友,可以通过http://www.miaoqiyuan.cn/p/dedeims-online-pay来查看。

首先在dedeeims的会员面板中添加在线支付的链接。很简单,在menu中添加:
<li>
<h4 class=”sort”><a class=”icon par” href=”../member/pay.php”> < ?php echo GetLang('pay'); ?> </a></h4>
</li>

然后在语言文件/include/lang/下相应的语言文件中添加上对应的文字描述。

因为网银有很多,支付接口也很多,我们用的时候可能要添加多个接口,所以我们要做一个网银配置脚本:bank_config.php

< ?php
	$bank_List=Array(
		'网银在线'=>'chinabank'
	);
?>

首先来说dedeeims在线支付的前台,很简单。pay.php,一个简单的表单,这里不再详述,代码如下:

	&lt;form class="mTB10 mL10 mR10" name="form2" action="bank.php" method="post" target="_blank">
    &lt;table cellspacing="1" class="submit">
      &lt;tbody>
      	&lt;tr>
      	  &lt;td style="text-align:right;">支付接口:&lt;/td>
      	  &lt;td>
      	    &lt;select name="bank" id="sbank" style="width:160px">
			&lt;?php
				foreach($bank_List as $bankName=>$bankEn){
			?>
      	      &lt;option value="&lt;?php echo $bankEn?>">&lt;?php echo $bankName?>&lt;/option>
      	    &lt;?php
      	    	}
      	    ?>
      	  	&lt;/select>&lt;span style="color:red;">*&lt;/span>
      	  &lt;/td>
      	&lt;/tr>
      	&lt;tr>
      	  &lt;td style="text-align:right;">支付金额:&lt;/td>
      	  &lt;td>&lt;input name="money" type="text" id="smoney" size="15" class="text" style="width:150px;"  value="&lt;?php echo $pay ?>"/>&lt;span style="color:red;">*&lt;/span>&lt;/td>
      	&lt;/tr>
      	&lt;tr>
      	  &lt;td>&nbsp;&lt;/td>
      	  &lt;td>&lt;button class="button2" type="submit">充值&lt;/button>&lt;button class="button2 mL10" type="reset">重填&lt;/button>&lt;/td>
      	&lt;/tr>
      &lt;/tbody>
    &lt;/table>
	&lt;/form>

现在提交到bank.php。bank.php根据选择的接口自动提交的接口文件,然后返回(这些支付接口有示例文件,直接修改下就可以)。
bank.php

&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
&lt;html>
&lt;head>
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8">
&lt;link href="css/index.css" rel="stylesheet" type="text/css">
&lt;/head>
< ?php
require_once(dirname(__FILE__)."/bank/config.php");
require_once(dirname(__FILE__)."/config.php");
CheckRank(0,0);

$bank=$_POST['bank'];
if(!in_Array($bank=$_POST['bank'],$bank_List)){ShowMsg('错误的银行,请返回重新选择', '-1',0,5000);die();}
if(!is_Numeric($money=$_POST['money'])){ShowMsg('充值金额必须是数字,请重新填写', '-1',0,5000);die();}

$row=$dsql->GetOne("select  * from `#@__member` where mid='".$cfg_ml->M_ID."'");

$orderid=date('Ymd',time())."-".$cfg_ml->M_LoginID."-".date('His',time());

?>
&lt;body onLoad="javascript:document.Bank_FORM.submit()">
载入中...&lt;form name="Bank_FORM" id="Bank_FORM" action="./bank/&lt;?php echo $bank ?>/Pay.php" method="post">
&lt;input name="orderid" value="&lt;?php echo $orderid?>" type="hidden"/>
&lt;input name="money" value="&lt;?php echo $money?>" type="hidden"/>
&lt;input name="user" value="&lt;?php echo $cfg_ml->M_LoginID?>" type="hidden"/>
&lt;input name="uid" value="&lt;?php echo $cfg_ml->M_ID?>" type="hidden"/>
&lt;input name="moeny" value="&lt;?php echo $money?>" type="hidden"/>
&lt;input name="email" value="&lt;?php echo $row['email']; ?>" type="hidden"/>
&lt;input name="uname" value="&lt;?php echo $row['uname']; ?>" type="hidden"/>
&lt;input name="company" value="&lt;?php echo $row['company']; ?>" type="hidden"/>
&lt;input name="mobile" value="&lt;?php echo $row['mobile']; ?>" type="hidden"/>
&lt;input name="tel" value="&lt;?php echo $row['tel']; ?>" type="hidden"/>
&lt;input name="fax" value="&lt;?php echo $row['fax']; ?>" type="hidden"/>
&lt;input name="address" value="&lt;?php echo $row['address']; ?>" type="hidden"/>
&lt;/form>&lt;/body>&lt;/html>

返回的时候为了统一,我们写一个通用的函数,用于为用户充值,并记录到日志:

< ?php
function payok($money,$logkey,$logdesc,$uid=1,$dsql){
	if(!$dsql->GetOne("select `id` from `#@__paylog` where `mid`='".$uid."' and `desc` like '%".$logkey."%'")){
		$res=$dsql->GetOne("select `money` from `#@__member` where `mid`='".$uid."'");
		$oldMoney=$res['money'];
		$query="insert into `#@__paylog`(`mid`,`paytype`,`money`,`money_s`,`money_e`,`desc`,`dateline`)values('$uid','0','$money','".$oldMoney."','".($oldMoney+$money)."','$logdesc','".time()."')";
		$dsql->ExecuteNoneQuery($query);
		$query="update `#@__member` set `money`=`money`+'".$money."' where `mid`='".$uid."'";
		$dsql->ExecuteNoneQuery($query);
		ShowMsg('充值成功!', './../../pay_log.php?type=pay',0,1500);
	}else{
		ShowMsg('&lt;span style=color:#F00>重复点击,只充值一次!', './../../pay_log.php?type=pay',0,15000);
	};
	die();
}
?>

现在就支付完毕了,为了方便差财务,我们在写一个充值记录的页面,这个就比较简单了,在此就不再熬述了。

因网银在线的为例,调用的时候,直接使用一下代码:

if ($v_md5str==$md5string)
{
	if($v_pstatus=="20")
	{
		payok($v_amount,':'.$v_oid.';','网银在线('.$v_pmode.'):'.$v_oid.';'.$v_moneytype.':'.$v_amount,$cfg_ml->M_ID,$dsql);
		//支付成功,可进行逻辑处理!
		//商户系统的逻辑处理(例如判断金额,判断支付状态,更新订单状态等等)......

	}
}
]]>
http://www.miaoqiyuan.cn/p/dedeeims-onlinepay/feed 0
自定义dedeeims的路径,不让dedeeims产品页生成静态 http://www.miaoqiyuan.cn/p/dedeeims-url http://www.miaoqiyuan.cn/p/dedeeims-url#comments Tue, 23 Mar 2010 15:53:44 +0000 mqycn http://www.miaoqiyuan.cn/?p=526 在织梦的论坛上看到好几篇关于自定义dedeeims的路径,不让dedeeims产品页生成静态之类的求助信息。确实,dedeeims的产品路径还带有日期,如果动态的路径,整站到再/plus/下,感觉特别不爽,今天我就给修改一下。
首先让我们感觉不爽的就是/plus/list.php?tid=这种路径作为频道(栏目,分类页),感觉特别不爽,我们就先从它下手。打开include\channelunit.func.php,找到//$reurl = $GLOBALS['cfg_phpurl'].”/list.php?tid=”.$typeid;,直接修改成$reurl = “/class.php?id=”.$typeid;这样,所有的分类页就变成了/class.php?id=…的形式了。在根目录建立一个class.php,内容如下:

< ?php
	$tid=$_GET['id'];
	require_once('plus/list.php');
?>

很简单吧,下面修改产品展示页路径为product.php,阅读新闻页为news.php。

找到include\channelunit.func.php,function GetFileUrl($aid,$typeid,$timetag,$title,$ismake=0,$rank=0,$namerule=”,$typedir=”, $filename=”),假设产品分类为4,10,新闻分类为3,9。直接添加上如下代码:

< ?php
		if($typeid==4||$typeid==10)
			return '/product.php?product_id='.$aid;
		elseif($typeid==3||$typeid==9)
			return '/news.php?id='.$aid;
		else
			return '/plus/view.php?aid='.$aid;
?>

其他情况就是默认路径了。当然也可以改成/view.php?aid=…

news.php

<?php
	$aid=$_GET['id'];
	require_once('plus/view.php');
?>

product.php

<?php
	$aid=$_GET['product_id'];
	require_once('plus/view.php');
?>

现在前台基本就没有问题了,后台预览文件的时候,可能会出现错误,修改admin\archives_do.php代码如下:

	function viewArchives()
	-->>...
	if(strpos($arcurl,'?')==-1)
		echo "$lt;script language='javascript'>location.href='$arcurl"."?".time()."';$lt;/script>";
	else
		echo "$lt;script language='javascript'>location.href='$arcurl"."&tme=".time()."';$lt;/script>";
	exit();
]]>
http://www.miaoqiyuan.cn/p/dedeeims-url/feed 0
给dedeims添加在线支付的功能之数据库设置 http://www.miaoqiyuan.cn/p/dedeims-online-pay http://www.miaoqiyuan.cn/p/dedeims-online-pay#comments Tue, 23 Mar 2010 15:39:50 +0000 mqycn http://www.miaoqiyuan.cn/?p=524 刚改VPS出问题了,现在刚解决好,原来打算多写几篇关于dedeims的文件,无奈现在太晚了,先写一篇 给dedeims添加在线支付的功能之数据库设置 ,页面代码等改天整理好再发。

--为会员添加余额
ALTER TABLE `dede_member` ADD `money` DOUBLE(11,2) Default 0 NOT NULL AFTER `scores`
ALTER TABLE `dede_member` ADD `moneyto` DOUBLE(11,2) Default 0 NOT NULL AFTER `money`

--添加充值记录
--paytype 0:在线充值;1:提现;2:积分兑换
DROP TABLE IF EXISTS `dede_paylog`;
CREATE TABLE IF NOT EXISTS `dede_paylog` (
  `id` mediumint(8) NOT NULL auto_increment,
  `mid` mediumint(8) NOT NULL,
  `paytype` smallint(5) NOT NULL,
  `money` DOUBLE(11,2) Default 0 NOT NULL,
  `money_s` DOUBLE(11,2) Default 0 NOT NULL,
  `money_e` DOUBLE(11,2) Default 0 NOT NULL,
  `dateline` int(10) NOT NULL,
  `desc` char(255) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET='utf8' AUTO_INCREMENT=1000000;
]]>
http://www.miaoqiyuan.cn/p/dedeims-online-pay/feed 1