windows 上面安装squid 加速代理网站

windows squid 下载 http://squid.acmeconsulting.it/index.html

下载解压到 c:\squid

c:\squid\etc\squid.conf 如下

 

#本地绑定的IP端口
http_port 80 accel vhost vport
visible_hostname localhost
cache_dir ufs c:/squid/cache 1024 16 256
cache_mem 100 MB
#代理的IP地址和端口
cache_peer ip地址 parent 80 0 no-query originserver weight=1 name=a
#加速两个站点
cache_peer_domain a www.aaa.com

#下面这行在squid 3 可以注释掉
acl all src 0.0.0.0/0.0.0.0
http_access allow all
cache_peer_access a allow all
cache_peer_access b allow all
tcp_recv_bufsize 65535 bytes

c:\squid\etc\mime.conf.default 复制成 mime.conf

创建缓存目录
c:\squid\sbin\squid -z
安装成服务
c:\squid\sbin\squid -i
启动服务
net start squid

更多资料看这里  http://www.squid-cache.org/Doc/config/

squid 支持gzip的资料看 https://code.google.com/p/squid-ecap-gzip/wiki/Installation

关于squid 完全抛弃缓存,只起代理作用
参数是
cache deny all

ecshop 农行支付接口的返回respond部分

function respond()
{
$result = false;

$originData = $_POST["MSG"];
$xmlData = base64_decode($originData);
$retCodStartStr = "<ReturnCode>";
$retCodEndStr = "</ReturnCode>";
$retCodStartPos = strpos($xmlData,$retCodStartStr);
$retCodEndPos = strpos($xmlData,$retCodEndStr);
$retCode = substr($xmlData,$retCodStartPos+strlen("<ReturnCode>"),$retCodEndPos-$retCodStartPos-strlen("<ReturnCode>"));//注意不可使用$ReturnCode,否则会什么都不显示,可能是保留字

$errMesStartStr = "<ErrorMessage>";
$errMesEndStr = "</ErrorMessage>";
$errMesStartPos = strpos($xmlData,$errMesStartStr);
$errMesEndPos = strpos($xmlData,$errMesEndStr);
$ErrorMessage = substr($xmlData,$errMesStartPos+strlen("<ErrorMessage>"),$errMesEndPos-$errMesStartPos-strlen("<ErrorMessage>"));

$sigStartStr = "<Signature>";
$sigEndStr = "</Signature>";
$sigStartPos = strpos($xmlData,$sigStartStr);
$sigEndPos = strpos($xmlData,$sigEndStr);
$signature = substr($xmlData,$sigStartPos+strlen("<Signature>"),$sigEndPos-$sigStartPos-strlen("<Signature>"));

$mesStartStr = "<Message>";
$mesEndStr = "</Message>";
$mesStartPos = strpos($xmlData,$mesStartStr);
$mesEndPos = strpos($xmlData,$mesEndStr);
$message = substr($xmlData,$mesStartPos+strlen("<Message>"),$mesEndPos-$mesStartPos-strlen("<Message>"));
//验证签名有效性
$data = $message;
$fp = fopen(ROOT_PATH."MainServer.0001.pem", "r");
$pub_key = fread($fp, 8192);

$pubkeyid = openssl_get_publickey($pub_key);
$sig=base64_decode($signature);
if(openssl_verify($data,$sig,$pubkeyid)==1)
{
if($retCode=="0000")
{
//订单号
$OrderNoStartStr = "<OrderNo>";
$OrderNoEndStr = "</OrderNo>";
$OrderNoStartPos = strpos($xmlData,$OrderNoStartStr);
$OrderNoEndPos = strpos($xmlData,$OrderNoEndStr);
$OrderNo = substr($xmlData,$OrderNoStartPos+strlen("<OrderNo>"),$OrderNoEndPos-$OrderNoStartPos-strlen("<OrderNo>"));

//订单金额
$AmountStartStr = "<Amount>";
$AmountEndStr = "</Amount>";
$AmountStartPos = strpos($xmlData,$AmountStartStr);
$AmountEndPos = strpos($xmlData,$AmountEndStr);
$Amount = substr($xmlData,$AmountStartPos+strlen("<Amount>"),$AmountEndPos-$AmountStartPos-strlen("<Amount>"));

//批次号
$BatchNoStartStr = "<BatchNo>";
$BatchNoEndStr = "</BatchNo>";
$BatchNoStartPos = strpos($xmlData,$BatchNoStartStr);
$BatchNoEndPos = strpos($xmlData,$BatchNoEndStr);
$BatchNo = substr($xmlData,$BatchNoStartPos+strlen("<BatchNo>"),$BatchNoEndPos-$BatchNoStartPos-strlen("<BatchNo>"));

//传票号
$VoucherNoStartStr = "<VoucherNo>";
$VoucherNoEndStr = "</VoucherNo>";
$VoucherNoStartPos = strpos($xmlData,$VoucherNoStartStr);
$VoucherNoEndPos = strpos($xmlData,$VoucherNoEndStr);
$VoucherNo = substr($xmlData,$VoucherNoStartPos+strlen("<VoucherNo>"),$VoucherNoEndPos-$VoucherNoStartPos-strlen("<VoucherNo>"));

//会计日期
$HostDateStartStr = "<HostDate>";
$HostDateEndStr = "</HostDate>";
$HostDateStartPos = strpos($xmlData,$HostDateStartStr);
$HostDateEndPos = strpos($xmlData,$HostDateEndStr);
$HostDate = substr($xmlData,$HostDateStartPos+strlen("<HostDate>"),$HostDateEndPos-$HostDateStartPos-strlen("<HostDate>"));

//会计时间
$HostTimeStartStr = "<HostTime>";
$HostTimeEndStr = "</HostTime>";
$HostTimeStartPos = strpos($xmlData,$HostTimeStartStr);
$HostTimeEndPos = strpos($xmlData,$HostTimeEndStr);
$HostTime = substr($xmlData,$HostTimeStartPos+strlen("<HostTime>"),$HostTimeEndPos-$HostTimeStartPos-strlen("<HostTime>"));

//备注
$MerchantRemarksStartStr = "<MerchantRemarks>";
$MerchantRemarksEndStr = "</MerchantRemarks>";
$MerchantRemarksStartPos = strpos($xmlData,$MerchantRemarksStartStr);
$MerchantRemarksEndPos = strpos($xmlData,$MerchantRemarksEndStr);
$MerchantRemarks = substr($xmlData,$MerchantRemarksStartPos+strlen("<MerchantRemarks>"),$MerchantRemarksEndPos-$MerchantRemarksStartPos-strlen("<MerchantRemarks>"));

//支付方式
$PayTypeStartStr = "<PayType>";
$PayTypeEndStr = "</PayType>";
$PayTypeStartPos = strpos($xmlData,$PayTypeStartStr);
$PayTypeEndPos = strpos($xmlData,$PayTypeEndStr);
$PayType = substr($xmlData,$PayTypeStartPos+strlen("<PayType>"),$PayTypeEndPos-$PayTypeStartPos-strlen("<PayType>"));

//通知方式
$NotifyTypeStartStr = "<NotifyType>";
$NotifyTypeEndStr = "</NotifyType>";
$NotifyTypeStartPos = strpos($xmlData,$NotifyTypeStartStr);
$NotifyTypeEndPos = strpos($xmlData,$NotifyTypeEndStr);
$NotifyType = substr($xmlData,$NotifyTypeStartPos+strlen("<NotifyType>"),$NotifyTypeEndPos-$NotifyTypeStartPos-strlen("<NotifyType>"));

//todo:商户更新相关数据库操作

$order_sn = $OrderNo;
if(substr($order_sn,0,4)=="0000"){
$order_id = get_order_id_by_sn($order_sn,true);
order_paid($order_id);
}
else{
$order_id = get_order_id_by_sn($order_sn);
order_paid($order_id);
}
$result = true;
file_put_contents("abcbank.txt","支付成功1",FILE_APPEND);
}
else
{
file_put_contents("abcbank.txt","错误码:".$retCode."错误信息:".$ErrorMessage,FILE_APPEND);
}
}
else
{
file_put_contents("abcbank.txt","签名验证失败,该通知内容不可信",FILE_APPEND);
}

// free the key from memory
openssl_free_key($pubkeyid);
return $result;

}

一个还算漂亮的语法高亮的工具 prettify

从这里下载
https://code.google.com/p/google-code-prettify/
下载后,有用的文件是src 和 style 目录
用法

如下
<head>
<link rel="stylesheet" type="text/css" href="sunburst.css">
<script type="text/javascript" src="prettify.js" ></script>
</head>
<body onload="prettyPrint()">
<pre class="prettyprint">
@*你的代码片断*@
</pre>
</body>
参考了 http://www.lidongkui.com/use-prettify-to-highlight-code

gzip 电信 联通 双线

双线服务器的电信联通侧的访问 居然不同 一侧是gzip了,另外一侧没有,好奇怪,除非是采用proxy方式的双线,可是查看确实又绑定了双ip,这就叫人摸不到头脑了,难道iis会针对不同ip 做gzip ,或者电信线路做了解压???

js获得ip的地理位置 通过sina 的调用

  <script type="text/javascript">
  <!--
	function loadScript(src,callBack){
  var ie = /msie/i.test(navigator.userAgent);
  var el=document.createElement('script');
  el.src=url;
  if(ie){
    el.onreadystatechange=function(){
     if(el.readyState=='loaded' || el.readyState=='complete') callBack&& callBack()
    } 
  }else{
    el.onload=callBack;
  }
  document.body.appendChild(el);
}
 //jquery包用$.getScript
/////////////////////////////////////////////////
var url="http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip="
loadScript(url,function(){
   document.write(remote_ip_info.city );
});
  //-->
  </script>

dedecms 的一点经验分享

GetFileName 位于 include\helpers\chanelunit.helper.php 文件中

此函数 是 dedecms 用于生成文件名和获得文件url 地址的 关键文件!!!!!

而且是入口型文件,所有的文件名和url地址的获取都从此走出

flv 自由拖动的几点注意事项,nginx 伪流服务器

编译 nginx 指出 flv module

参考 http://wiki.nginx.org/HttpFlvModule

./configure –with-http_flv_module  –其他参数

配置文件里面加入

location ~ \.flv$ {
  flv;
}

然后 如果是 jwplayer 的 播放器 ,注意参数

startparam: "start",

如果是 ckplayer 的播放器 ,注意参数

h:’0′,//播放http视频流时采用何种拖动方法,=0不使用任意拖动,=1是使用按关键帧,=2是按时间点,=3是自动判断按什么(如果视频格式是.mp4就按关键帧,.flv就按关键时间),=4也是自动判断(只要包含字符mp4就按mp4来,只要包含字符flv就按flv来)

q:”,//视频流拖动时参考函数,默认是start

 

参考资料

http://www.longtailvideo.com/support/jw-player/28855/pseudo-streaming-in-flash

 

nginx的discuzx伪静态

discuz X 的 nginx 伪静态规则

rewrite ^([^\.]*)/topic-(.+)\.html$ $1/portal.php?mod=topic&topic=$2 last;
rewrite ^([^\.]*)/article-([0-9]+)-([0-9]+)\.html$ $1/portal.php?mod=view&aid=$2&page=$3 last;
rewrite ^([^\.]*)/forum-(\w+)-([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;
rewrite ^([^\.]*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;
rewrite ^([^\.]*)/group-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=group&fid=$2&page=$3 last;
rewrite ^([^\.]*)/space-(username|uid)-(.+)\.html$ $1/home.php?mod=space&$2=$3 last;
rewrite ^([^\.]*)/blog-([0-9]+)-([0-9]+)\.html$ $1/home.php?mod=space&uid=$2&do=blog&id=$3 last;
rewrite ^([^\.]*)/(fid|tid)-([0-9]+)\.html$ $1/index.php?action=$2&value=$3 last;
rewrite ^([^\.]*)/([a-z]+[a-z0-9_]*)-([a-z0-9_\-]+)\.html$ $1/plugin.php?id=$2:$3 last;
if (!-e $request_filename) {
        return 404;
}

其他的建议去看
http://www.vpser.net/manage/nginx-rewrite.html

jieqi 杰奇的图片水印增加在四角同时添加水印

杰奇的小说图片上传后可以加水印,目前的上中下左中右,随机都有了

现在需求是加在四角都有 修改 lib/image/imagewater.php

原来代码

$temp_wm_image = $this->getPos($src_image_w,$src_image_h,$this->wm_image_pos,$wm_image);
$wm_image_x = $temp_wm_image["dest_x"];
$wm_image_y = $temp_wm_image["dest_y"];

imagecopymerge($src_image, $wm_image,$wm_image_x,$wm_image_y,0,0,$wm_image_w,$wm_image_h,$this->wm_image_transition);

// 1 = top left 上左
// 2 = top middle 上中
// 3 = top right 上右
// 4 = middle left 中左
// 5 = middle 中中
// 6 = middle right 中右
// 7 = bottom left 下左
// 8 = bottom middle 下中
// 9 = bottom right 下右
// 10 = rand 随机

知道我们只要在 1 3 7 9 位置加就可以了

重复上面的代码 4次就可以搞定了。

QQ截图20130407134936

 

最土程序,克隆或者说另存为一个新项目的快捷方式

有没想过最土的项目如何快速复制出一个来,然后改改就成新的团购项目了?

或者说编辑一个老项目的时候想把他另存为一个新项目而不是保存,

看下图 红色部分

zuituclone

具体开发代码(非细节),如下

修改模板,加入按钮

include/template/manage_team_edit.html

<input type=”submit” value=”保存为新项目” name=”commit” id=”leader-submit” class=”formbutton” style=”margin:10px 0 0 120px;” onclick=”cloneteam()”/>

加js 处理cloneteam函数

function cloneteam()
{
document.getElementById(‘-user-form’).action=”/manage/team/edit.php?clone=1″;
document.getElementById(‘-user-form’).submit();
}

注意 clone=1

另外修改模板加了几处隐藏的hidden 内容,目的是为了复制老项目中的image image1 image2 字段

<!–{if $team[‘image’]}–><span class=”hint”><input type=’hidden’ name=”hidden_team_image” value=”{$team[‘image’]}”></span><!–{/if}–>

<!–{if $team[‘image1′]}–><span class=”hint”><input type=’hidden’ name=”hidden_team_image1″ value=”{$team[‘image1’]}”></span><!–{/if}–>

<!–{if $team[‘image2′]}–><span class=”hint”><input type=’hidden’ name=”hidden_team_image2″ value=”{$team[‘image2’]}”></span><!–{/if}–>

 

修改 manage/team/edit.php

原来代码是这样的

zuit-clone-team1

 

现在代码是这样的

zuit-clone-team2

shopex 同步 ucenter 的redirect问题,造成script不运行

首先此问题来自向这个帖子

http://hi.baidu.com/fire_love_live/item/247276cfda421217b67a24c7

需要说明的是,并非15处需要修改,

其中 有关登陆密码错的那一项建议不要修改

在大约行 557处

$this->nowredirect('failed',base64_encode(str_replace(array('+','/','='),array('_',',','~'),$_POST['ref_url'])),__('用户名或密码有误,请重新输入'),$_POST['from_minipassport']);

上面的nowredirect 不建议修改为 splash

 

最土整合uc的问题,其他系统可能需要调整登陆代码

问题:

最土的用户被导入到了ucenter 的用户表,其他uc_server 的客户端登陆时候提示密码错

解决思路

最土的加密方法在 ./include/classes/ZUser.class.php

const SECRET_KEY = ‘@4!@#$%@’;

static public function GenPassword($p) {
return md5($p . self::SECRET_KEY);
}

而uc的方法是  md5(md5(‘密码’) + SALT字段)

两者不相同,所以需要在其他系统里面吧最土的密码验证发也加进去,

现在以shopex为例 ,shopex系统里面uc_client 目录在shopex/core/lib/uc_client

修改里面的 model\user.php 和 control\user.php

model\user.php 修改如下

zuitu_ex_uc_2

control\user.php 修改如下zuitu_ex_uc_1