if (function_exists("imagecreatetruecolor")){
//resize picture
$new = imagecreatetruecolor($intWidth, $intHeight);
imagealphablending($new,false);
ImageCopyResampled($new, $img, 0, 0, 0, 0, $intWidth, $intHeight, $arrImageInfo["width"], $arrImageInfo["height"]);
imagesavealpha($new,true);
} else {
//resize picture
$new = imagecreate($intWidth, $intHeight);
imagealphablending($new,false);
ImageCopyResized($new, $img, 0, 0, 0, 0,$intWidth, $intHeight, $arrImageInfo["width"], $arrImageInfo["height"]);
imagesavealpha($new,true);
}
参考:http://hi.baidu.com/fanfan201314/item/2d4857de01f3cce93cc2cbff


做web开发的朋友都清楚,js程序的调试是相当郁闷的,因为首先这种语言语法比较灵活,它是一种弱类型的脚本语言,很多错误是无法控制的,这些不谈,最痛苦的是没有什么好的调试工具,现在的情况比以前稍好,在Firefox下还有firebug,这的确是一个不错的js调试工具,但在IE下使用就很麻烦,而且效果很不好,鄙人一直苦于寻找一个很好的IE下的js调试工具,能够自动捕获错误,并定位位置和原因,没想到今天竟在无意中寻找到了这么个好工具,不敢私藏,共享出来,希望能为各位web开发者带来方便
这个工具的名字叫Companion.JS,请注意,这可不是一个js文件,而是一个名字,它是作为ie的插件来安装使用的,而且需要结合 Microsoft Script Debugger使用,通过安装这个工具,但页面出现错误时会在左上角弹出一个小错误提示,点击会在IE下面显示出一个错误控制台,就如FF下的 firebug控制台一样。错误信息提示很详细。
如下是官网的一个错误提示示例图:
点击在新窗口中浏览此图片
官网地址:http://www.my-debugbar.com/wiki/CompanionJS/HomePage
具体使用方法为:
1、先下载Companion.JS安装文件,然后安装。
2、下载安装Microsoft Script Debugger,如果您的机器已经安装过了就可以免过这一步。
3、打开IE菜单“工具”–“Internet选项”–“高级”,找到“禁用脚本调试(Internet Explorer)”和“禁用脚本调试(在Internet Explorer之外)”,将两个选项前面的对钩都去掉,然后重启IE。
4、最后,测试安装成功于否:
在Ie中输入:http://www.my-debugbar.com/wiki/uploads/CompanionJS/dummy.htm,然后点击click me链接,如果左上角弹出一个小错误提示或下面控制台出现了错误信息提示,就说明您已经安装成功了。
如果没有安装Microsoft Script Debugger是只提示不会有黄色标识的:
提示:Microsoft Script Debugger下载可到MS官网(需要经过MS的操作系统正版验证):http://www.microsoft.com/downloads /details.aspx?displaylang=zh-cn&FamilyID=E606E71F-BA7F-471E-A57D- F2216D81EC3D#filelist或到baidu里输入“Microsoft Script Debugger 下载”寻找一下。
求Microsoft Script Debugger中文版的下载地址:
是这个吗 Windows Script Debugger
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=E606E71F-BA7F-471E-A57D-F2216D81EC3D
继续追问: 对,就是这个。
Microsoft DownLoad Url:
http://www.microsoft.com/zh-cn/download/details.aspx?id=23992
---------------------------------------------------------------------------------------------------------------------------------------------------------------
IE下使用firebug:
firebug官网:https://getfirebug.com/
把下面这段代码复制替换一个自己新建立的收藏Url即可,然后需要时再运行一下收藏夹,进而按F12调出来即可,如不运行收藏夹则是IE自带的那个。
做web开发的朋友都清楚,js程序的调试是相当郁闷的,因为首先这种语言语法比较灵活,它是一种弱类型的脚本语言,很多错误是无法控制的,这些不谈,最痛苦的是没有什么好的调试工具,现在的情况比以前稍好,在Firefox下还有firebug,这的确是一个不错的js调试工具,但在IE下使用就很麻烦,而且效果很不好,鄙人一直苦于寻找一个很好的IE下的js调试工具,能够自动捕获错误,并定位位置和原因,没想到今天竟在无意中寻找到了这么个好工具,不敢私藏,共享出来,希望能为各位web开发者带来方便
这个工具的名字叫Companion.JS,请注意,这可不是一个js文件,而是一个名字,它是作为ie的插件来安装使用的,而且需要结合 Microsoft Script Debugger使用,通过安装这个工具,但页面出现错误时会在左上角弹出一个小错误提示,点击会在IE下面显示出一个错误控制台,就如FF下的 firebug控制台一样。错误信息提示很详细。
如下是官网的一个错误提示示例图:
点击在新窗口中浏览此图片
官网地址:http://www.my-debugbar.com/wiki/CompanionJS/HomePage
具体使用方法为:
1、先下载Companion.JS安装文件,然后安装。
2、下载安装Microsoft Script Debugger,如果您的机器已经安装过了就可以免过这一步。
3、打开IE菜单“工具”–“Internet选项”–“高级”,找到“禁用脚本调试(Internet Explorer)”和“禁用脚本调试(在Internet Explorer之外)”,将两个选项前面的对钩都去掉,然后重启IE。
4、最后,测试安装成功于否:
在Ie中输入:http://www.my-debugbar.com/wiki/uploads/CompanionJS/dummy.htm,然后点击click me链接,如果左上角弹出一个小错误提示或下面控制台出现了错误信息提示,就说明您已经安装成功了。
如果没有安装Microsoft Script Debugger是只提示不会有黄色标识的:
提示:Microsoft Script Debugger下载可到MS官网(需要经过MS的操作系统正版验证):http://www.microsoft.com/downloads /details.aspx?displaylang=zh-cn&FamilyID=E606E71F-BA7F-471E-A57D- F2216D81EC3D#filelist或到baidu里输入“Microsoft Script Debugger 下载”寻找一下。
求Microsoft Script Debugger中文版的下载地址:
是这个吗 Windows Script Debugger
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=E606E71F-BA7F-471E-A57D-F2216D81EC3D
继续追问: 对,就是这个。
Microsoft DownLoad Url:
http://www.microsoft.com/zh-cn/download/details.aspx?id=23992
---------------------------------------------------------------------------------------------------------------------------------------------------------------
IE下使用firebug:
firebug官网:https://getfirebug.com/
把下面这段代码复制替换一个自己新建立的收藏Url即可,然后需要时再运行一下收藏夹,进而按F12调出来即可,如不运行收藏夹则是IE自带的那个。
说起正则表达式,可以一直上溯至对人类神经系统如何工作的早期研究。Warren McCulloch和Walter Pitts这两位神经生理学家研究出一种数学方式来描述这些神经网络。
1956年,一位叫Stephen Kleene的美国数学家在McCulloch和Pitts早期工作的基础上,发表了一篇标题为“神经网事件的表示法”的论文,引入了正则表达式的概念。正则表达式就是用来描述他称为“正则集的代数”的表达式,因此采用“正则表达式”这个术语。
随后,发现可以将这一工作应用于使用Ken Thompson的计算搜索算法的一些早期研究,Ken Thompson是Unix的主要发明人。正则表达式的第一个实用应用程序就是Unix中的qed编辑器。
这个专题主要是为了提高大家对正则表达式的认识和高级的使用。
1 使用正则表达式来检测HTML是否关闭
解释:
/<([a-zA-Z0-9]+)\\s*[^\\/>]*>/这个模式是用来匹配HTML的标记(如:<head>、<div>、<div id="main">等等,但是除了<br/>这种)的,并且在$start_tags保持着标签的名字(如:head、div等)。而/<\\/([a-zA-Z0-9]+)>/这个模式是用来匹配闭合的HTML标记(如:</head>,</div>等)的。并且在$end_tags中保持这闭合的标签名。然后我们用count($start_tags[1]) != count($end_tags[1])这个条件语句来判断开始的标记跟闭合的标记是否相等,不相等就说明没闭合。最后用in_array($start_tags[1][$i], $end_tags[1])来判断开始标跟闭合的标记是否相等。至此,我们就完成了HTML的匹配了!
2 匹配E-mail格式
解释:
不要被/^[\w\d!#$%&'*+-\/=?^`{|}~]+(\.[\w\d!#$%&'*+-\/=?^`{|}~]+)*@([a-z\d][-a-z\d]*[a-z\d]\.)+[a-z][-a-z\d]*[a-z]$/这条模式给吓跑了,其实也很简单的。前部分[\w\d!#$%&'*+-\/=?^`{|}~]+(\.[\w\d!#$%&'*+-\/=?^`{|}~]+)*只是匹配符合RFC-2882标准的E-mail地址允许出现的字符,就是英文字母,数字跟一些符号,有兴趣可以查询RFC-2882手册,而([a-z\d][-a-z\d]*[a-z\d]\.)+就是匹配HOST的。最后[a-z][-a-z\d]*[a-z]就是匹配顶级域名的(如:.com、.org)。
3 非贪心模式
有时候使用正则表达式的时候,你会发现有以下的问题:
很惊奇的你会发现匹配的是这样的内容"hello", Jack say: "Hi",而不是"hello"和"Hi"。这就是贪心匹配引起的。在贪心匹配中,正则表达式会尽可能的匹配最多的字符,所以出现了第一种情况,但是我们想要的是第二种情况,那我们要怎么做呢?
我们可以使用非贪心匹配,将刚才的模式改为/".*?"/这样就可以看见我们想要的结果了。*?这个就是非贪心匹配模式。还有另外一种就是+?。
*?:前面的字符可以出现任意多次,但是遇到*?后的一个字符即停止匹配。
+?:前面的字符可以出现一次或者多次,但是遇到+?后的一个字符即停止匹配。
4 检测一个用户密码是否安全
解释:
在本例中,我们使用了/(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{8,16}/模式来匹配我们的密码。在这个模式中,我们使用了正则表达式中的前瞻模式(?=)。(?=.*[0-9])这个是匹配密码中有数字,而(?=.*[a-z])是匹配密码中有小写字母,最后(?=.*[A-Z])就是匹配密码中有大写字母。而.{8,16}这个就是匹配密码是由8至16个字符组成的。那么我们的密码就需要有数字,大写字母和小写字母组成的就属于安全的密码了~
5 匹配一个网站中的所有链接
在这个例子中,我们想用file_get_contents来取得一个网页的内容。然后用str_replace("\n", "", $html)把所有的换行去掉。再用preg_replace('/<a/i', "\n<a", $html)和preg_replace('/<\/a>/', "</a>\n", $html)来把所有的<a href=".....">.....</a>模式另起一行。最后就用preg_match_all('/<a\s*.*>.*?<\/a>/', $html, $matches)匹配链接模式。/<a\s*.*>.*?<\/a>/就是匹配<a href=".....">.....</a>这种模式的正则表达式。那我们为什么要把<a href=".....">.....</a>链接另起一行呢??因为在/<a\s*.*>.*?<\/a>/模式中,.*是不能匹配换行的,所以就如<a>和</a>不在同一行就不能匹配了!!所以我们要这样做!
1956年,一位叫Stephen Kleene的美国数学家在McCulloch和Pitts早期工作的基础上,发表了一篇标题为“神经网事件的表示法”的论文,引入了正则表达式的概念。正则表达式就是用来描述他称为“正则集的代数”的表达式,因此采用“正则表达式”这个术语。
随后,发现可以将这一工作应用于使用Ken Thompson的计算搜索算法的一些早期研究,Ken Thompson是Unix的主要发明人。正则表达式的第一个实用应用程序就是Unix中的qed编辑器。
这个专题主要是为了提高大家对正则表达式的认识和高级的使用。
1 使用正则表达式来检测HTML是否关闭
function check_html($html) {
preg_match_all("/<([a-zA-Z0-9]+)\\s*[^\\/>]*>/",$html,$start_tags);
preg_match_all("/<\\/([a-zA-Z0-9]+)>/", $html, $end_tags);
if(count($start_tags[1]) != count($end_tags[1])) return false;
for($i = 0; $i < count($start_tags[1]); $i++) {
if(!in_array($start_tags[1][$i], $end_tags[1])) return false;
}
return true;
}
preg_match_all("/<([a-zA-Z0-9]+)\\s*[^\\/>]*>/",$html,$start_tags);
preg_match_all("/<\\/([a-zA-Z0-9]+)>/", $html, $end_tags);
if(count($start_tags[1]) != count($end_tags[1])) return false;
for($i = 0; $i < count($start_tags[1]); $i++) {
if(!in_array($start_tags[1][$i], $end_tags[1])) return false;
}
return true;
}
解释:
/<([a-zA-Z0-9]+)\\s*[^\\/>]*>/这个模式是用来匹配HTML的标记(如:<head>、<div>、<div id="main">等等,但是除了<br/>这种)的,并且在$start_tags保持着标签的名字(如:head、div等)。而/<\\/([a-zA-Z0-9]+)>/这个模式是用来匹配闭合的HTML标记(如:</head>,</div>等)的。并且在$end_tags中保持这闭合的标签名。然后我们用count($start_tags[1]) != count($end_tags[1])这个条件语句来判断开始的标记跟闭合的标记是否相等,不相等就说明没闭合。最后用in_array($start_tags[1][$i], $end_tags[1])来判断开始标跟闭合的标记是否相等。至此,我们就完成了HTML的匹配了!
2 匹配E-mail格式
function check_email($email) {
if(preg_match("/^[\w\d!#$%&'*+-\/=?^`{|}~]+(\.[\w\d!#$%&'*+-\/=?^`{|}~]+)*@([a-z\d][-a-z\d]*[a-z\d]\.)+[a-z][-a-z\d]*[a-z]$/", $eamil)) return true;
return false;
}
if(preg_match("/^[\w\d!#$%&'*+-\/=?^`{|}~]+(\.[\w\d!#$%&'*+-\/=?^`{|}~]+)*@([a-z\d][-a-z\d]*[a-z\d]\.)+[a-z][-a-z\d]*[a-z]$/", $eamil)) return true;
return false;
}
解释:
不要被/^[\w\d!#$%&'*+-\/=?^`{|}~]+(\.[\w\d!#$%&'*+-\/=?^`{|}~]+)*@([a-z\d][-a-z\d]*[a-z\d]\.)+[a-z][-a-z\d]*[a-z]$/这条模式给吓跑了,其实也很简单的。前部分[\w\d!#$%&'*+-\/=?^`{|}~]+(\.[\w\d!#$%&'*+-\/=?^`{|}~]+)*只是匹配符合RFC-2882标准的E-mail地址允许出现的字符,就是英文字母,数字跟一些符号,有兴趣可以查询RFC-2882手册,而([a-z\d][-a-z\d]*[a-z\d]\.)+就是匹配HOST的。最后[a-z][-a-z\d]*[a-z]就是匹配顶级域名的(如:.com、.org)。
3 非贪心模式
有时候使用正则表达式的时候,你会发现有以下的问题:
preg_match('/".*"/', 'Tony say:"hello", Jack say: "Hi"', $matches);
print_r($matches);
print_r($matches);
很惊奇的你会发现匹配的是这样的内容"hello", Jack say: "Hi",而不是"hello"和"Hi"。这就是贪心匹配引起的。在贪心匹配中,正则表达式会尽可能的匹配最多的字符,所以出现了第一种情况,但是我们想要的是第二种情况,那我们要怎么做呢?
我们可以使用非贪心匹配,将刚才的模式改为/".*?"/这样就可以看见我们想要的结果了。*?这个就是非贪心匹配模式。还有另外一种就是+?。
*?:前面的字符可以出现任意多次,但是遇到*?后的一个字符即停止匹配。
+?:前面的字符可以出现一次或者多次,但是遇到+?后的一个字符即停止匹配。
4 检测一个用户密码是否安全
function is_good_pw($pw) {
if(preg_match('/(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{8,16}/', $pw)) {
return true;
}
return false;
}
if(preg_match('/(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{8,16}/', $pw)) {
return true;
}
return false;
}
解释:
在本例中,我们使用了/(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{8,16}/模式来匹配我们的密码。在这个模式中,我们使用了正则表达式中的前瞻模式(?=)。(?=.*[0-9])这个是匹配密码中有数字,而(?=.*[a-z])是匹配密码中有小写字母,最后(?=.*[A-Z])就是匹配密码中有大写字母。而.{8,16}这个就是匹配密码是由8至16个字符组成的。那么我们的密码就需要有数字,大写字母和小写字母组成的就属于安全的密码了~
5 匹配一个网站中的所有链接
function get_links($link) {
$html = file_get_contents($link);
$html = str_replace("\n", "", $html);
$html = preg_replace('/<a/i', "\n<a", $html);
$html = preg_replace('/<\/a>/', "</a>\n", $html);
preg_match_all('/<a\s*.*>.*?<\/a>/', $html, $matches);
return($matches);
}
$html = file_get_contents($link);
$html = str_replace("\n", "", $html);
$html = preg_replace('/<a/i', "\n<a", $html);
$html = preg_replace('/<\/a>/', "</a>\n", $html);
preg_match_all('/<a\s*.*>.*?<\/a>/', $html, $matches);
return($matches);
}
在这个例子中,我们想用file_get_contents来取得一个网页的内容。然后用str_replace("\n", "", $html)把所有的换行去掉。再用preg_replace('/<a/i', "\n<a", $html)和preg_replace('/<\/a>/', "</a>\n", $html)来把所有的<a href=".....">.....</a>模式另起一行。最后就用preg_match_all('/<a\s*.*>.*?<\/a>/', $html, $matches)匹配链接模式。/<a\s*.*>.*?<\/a>/就是匹配<a href=".....">.....</a>这种模式的正则表达式。那我们为什么要把<a href=".....">.....</a>链接另起一行呢??因为在/<a\s*.*>.*?<\/a>/模式中,.*是不能匹配换行的,所以就如<a>和</a>不在同一行就不能匹配了!!所以我们要这样做!
function huanImg(num)
{
var imgsrc = $('#small_' + num).attr('lang');
$('#list_big').attr('src',imgsrc);
}
{
var imgsrc = $('#small_' + num).attr('lang');
$('#list_big').attr('src',imgsrc);
}
左边小图列表:
<li><a href="javascript:void(0)" onclick = "huanImg('1')"><img id="small_1" src="/data/72/mini_372647693_uploadFile1_20100202_122357_1.jpg" lang="/data/72/372647693_uploadFile1_20100202_122357_1.jpg" /></a></li>
<li><a href="javascript:void(0)" onclick = "huanImg('2')"><img id="small_2" src="/data/72/mini_372647693_uploadFile2_20100202_122357_1.jpg" lang="/data/72/372647693_uploadFile2_20100202_122357_1.jpg" /></a></li>
<li><a href="javascript:void(0)" onclick = "huanImg('3')"><img id="small_3" src="/data/72/mini_372647693_uploadFile3_20100202_122357_1.jpg" lang="/data/72/372647693_uploadFile3_20100202_122357_1.jpg" /></a>
右边大图展现:
<div class="center_img"><img width="307" height="306" src="/data/72/372647693_uploadFile1_20100202_122357_1.jpg" id="list_big"></div>
[个人原创]PHP时间范围判断的最简单的方法,PHP时分秒大小
Php/Js/Shell/Go jack 2010-2-1 21:28
常常需要比较时间,如几点比几点大,这儿用一个简单的方法比较:
需要比较:
二月七日凌晨到下午二点的时间不让用户领取奖品的比较,如下:
$nowDate=mktime(date('H'),date('i'),date('s'),date('m'),date('d'),date('Y'));
$day = date("d");
if($day == 7)
{
//第一天 2月7日
$forbidden_begin = mktime(0,0,0,2,7,2010);//开始时间
$forbidden_end = mktime(14,0,0,2,7,2010);//结束时间
if(($nowDate>=$forbidden_begin)&&($nowDate<=$forbidden_end))
{
return array('code'=>-1,'awardleft'=>0,'message'=>'兑换时间已过,敬请期待今日14点的机会哦!');
}
}
需要比较:
二月七日凌晨到下午二点的时间不让用户领取奖品的比较,如下:
$nowDate=mktime(date('H'),date('i'),date('s'),date('m'),date('d'),date('Y'));
$day = date("d");
if($day == 7)
{
//第一天 2月7日
$forbidden_begin = mktime(0,0,0,2,7,2010);//开始时间
$forbidden_end = mktime(14,0,0,2,7,2010);//结束时间
if(($nowDate>=$forbidden_begin)&&($nowDate<=$forbidden_end))
{
return array('code'=>-1,'awardleft'=>0,'message'=>'兑换时间已过,敬请期待今日14点的机会哦!');
}
}
我友,男,28岁成婚,之后就发生了一个很俗套的故事——认识了另一个女孩。 打碎一个婚姻之难,凡是入过围城的人都会深有体会。总之,他经过了4年的艰难历程,用他的话说就像是死过了一回之后,终于争取到了他以为的爱。朋友们也从对他进行道德批判转而佩服他的勇气。毕竟,在这个流行家中红旗不倒、外面彩旗飘飘的年月,能为爱出走,也是稀少而可贵的。
可是,他的爱情神话在再婚后两年,就已经有了破裂的迹象。曾经的激情被平庸的生活取代,而更糟糕的是,他发现自己开始越来越频繁地想到前妻。可是,在他第一次离婚的时候,在民风纯朴的当地,就已经成了千夫所指,难道他还有勇气第二次离婚吗?更何况,他还有何面目再去告诉前妻:我还是爱你的。
阅读全文
可是,他的爱情神话在再婚后两年,就已经有了破裂的迹象。曾经的激情被平庸的生活取代,而更糟糕的是,他发现自己开始越来越频繁地想到前妻。可是,在他第一次离婚的时候,在民风纯朴的当地,就已经成了千夫所指,难道他还有勇气第二次离婚吗?更何况,他还有何面目再去告诉前妻:我还是爱你的。
阅读全文
[实践OK]PHP强制浏览器不缓存的方法
Php/Js/Shell/Go jack 2010-2-1 14:39
对于PHP页面,以下是代码片段,实践OK:
解释:
PHP页面强制浏览器不缓存的方法:
(1)告诉客户端浏览器不使用缓存,HTTP 1.1 协议。
header("Cache-Control: no-cache, must-revalidate");
(2)告诉客户端浏览器不使用缓存,兼容HTTP 1.0 协议。
header("Pragma: no-cache");
(3)设置此页面的过期时间(用格林威治时间表示),只要是已经过去的日期即可。
header("Expires: Mon, 26 Jul 1970 05:00:00 GMT");
(4)设置此页面的最后更新日期(用格林威治时间表示)为当天,可以强迫浏览器获取最新资料。
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
参考:http://blog.sina.com.cn/s/blog_8002308e0100xrmv.html
解释:
PHP页面强制浏览器不缓存的方法:
(1)告诉客户端浏览器不使用缓存,HTTP 1.1 协议。
header("Cache-Control: no-cache, must-revalidate");
(2)告诉客户端浏览器不使用缓存,兼容HTTP 1.0 协议。
header("Pragma: no-cache");
(3)设置此页面的过期时间(用格林威治时间表示),只要是已经过去的日期即可。
header("Expires: Mon, 26 Jul 1970 05:00:00 GMT");
(4)设置此页面的最后更新日期(用格林威治时间表示)为当天,可以强迫浏览器获取最新资料。
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
参考:http://blog.sina.com.cn/s/blog_8002308e0100xrmv.html
ctrl + gf (跳转到文件)相对路径
ctrl + o 回到当前的文件
shift+ * 选择文本中的所有词
ctrl + N 补全单词
ctrl + o 回到当前的文件
shift+ * 选择文本中的所有词
ctrl + N 补全单词
echo '<script language="javascript" type="text/javascript">';
echo 'window.location.href="/con/activity/act/area"';
echo '</script>';
“陶朱公理财致富十二则”:
1、能识人,知人善恶,账目不负
2、能接纳,礼文接待,交关者众
3、能安业,厌故喜新,商贾大病
4、能整顿,货物整齐,夺人心目
5、能敏捷,犹豫不决,终归无成
6、能讨账,勤谨不怠,取讨自多
7、能用人,因才器使,任事有赖
8、能辩论,坐财有道,阐发愚蒙
9、能办货,置货不苛,添本便经
10、能知机,售贮随时,可称名称
11、能倡率,躬行以律,亲感自生
12、能远数,多寡宽紧,酌中而行
1、能识人,知人善恶,账目不负
2、能接纳,礼文接待,交关者众
3、能安业,厌故喜新,商贾大病
4、能整顿,货物整齐,夺人心目
5、能敏捷,犹豫不决,终归无成
6、能讨账,勤谨不怠,取讨自多
7、能用人,因才器使,任事有赖
8、能辩论,坐财有道,阐发愚蒙
9、能办货,置货不苛,添本便经
10、能知机,售贮随时,可称名称
11、能倡率,躬行以律,亲感自生
12、能远数,多寡宽紧,酌中而行
新版本的php 降低错误级别:
配置php.ini
打开php.ini,把display_errors = Off 改成 display_errors = On
然后找到 error_reporting 最好设置成
error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE
然后保存,重启apache
service php-fpm restart
Gracefully shutting down php-fpm . done
写到日志里面去的配置:
log_errors = On
error_log = /data/logs/php/php-cli-error.log
光是:Error_reporting(E_ALL);还不行,还得:ini_set('display_errors','On');
例子:
提示:
Warning: readfile(/tmp/up.php): failed to open stream: No such file or directory in /data/www/XXXX/up.php on line 54
于是整理好后:
下面是一个哥们写的博客:http://blog.linuxphp.org/archives/221/
php错误日志,适合异步调试和线上调试
ini_set("error_reporting",E_ALL ^ E_NOTICE);
ini_set("display_errors",off);
ini_set("log_errors",On);
ini_set("error_log","d:/c");
------------------附加两句解决错误的语句----------------------
@ini_set('memory_limit','500M');
@ini_set('max_execution_time', '180');
特别注意以下顺序才行,否则仍然不会报错的,哈哈:
如果是在linux terminal下运行,可以指定一个php.ini的配置文件,如下示例:
-c <path>|<file> Look for php.ini file in this directory
特别注意:
如果是包含关系的程序,包含好几个程序文件,如果再下级文件出现错误,而你仅仅在上级加入上面的两行,下级是不会报错的,于是还得在下级加入上面的两行才行,呵呵。真是麻烦,不过没办法,有时间线上故障,搬移线上服务,直接在线上调试的时候不得不这样,否则不会出现错误,很是郁闷,不知如何下手,有了这个麻烦事麻烦点,但是已经很好了!
小知识:获取ini里面的变量:
$_ENV['SERVER_TYPE'] = ini_get("phplib.servertype");
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
这个是写在PHP.ini配置文件里的是:
display_errors = On
vi /usr/local/stow/php-5.2.5/lib/php.ini
error_get_last 救人老命,php就是高,哈哈 ,值得在线上调试的时候使用!
来自:来自:http://blog.csdn.net/shaobaojie/article/details/26934809
配置php.ini
打开php.ini,把display_errors = Off 改成 display_errors = On
然后找到 error_reporting 最好设置成
error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE
然后保存,重启apache
service php-fpm restart
Gracefully shutting down php-fpm . done
写到日志里面去的配置:
log_errors = On
error_log = /data/logs/php/php-cli-error.log
光是:Error_reporting(E_ALL);还不行,还得:ini_set('display_errors','On');
error_reporting(E_ALL ^ E_NOTICE);ini_set('display_errors','On');
例子:
提示:
Warning: readfile(/tmp/up.php): failed to open stream: No such file or directory in /data/www/XXXX/up.php on line 54
于是整理好后:
下面是一个哥们写的博客:http://blog.linuxphp.org/archives/221/
php错误日志,适合异步调试和线上调试
ini_set("error_reporting",E_ALL ^ E_NOTICE);
ini_set("display_errors",off);
ini_set("log_errors",On);
ini_set("error_log","d:/c");
------------------附加两句解决错误的语句----------------------
@ini_set('memory_limit','500M');
@ini_set('max_execution_time', '180');
特别注意以下顺序才行,否则仍然不会报错的,哈哈:
如果是在linux terminal下运行,可以指定一个php.ini的配置文件,如下示例:
-c <path>|<file> Look for php.ini file in this directory
特别注意:
如果是包含关系的程序,包含好几个程序文件,如果再下级文件出现错误,而你仅仅在上级加入上面的两行,下级是不会报错的,于是还得在下级加入上面的两行才行,呵呵。真是麻烦,不过没办法,有时间线上故障,搬移线上服务,直接在线上调试的时候不得不这样,否则不会出现错误,很是郁闷,不知如何下手,有了这个麻烦事麻烦点,但是已经很好了!
小知识:获取ini里面的变量:
$_ENV['SERVER_TYPE'] = ini_get("phplib.servertype");
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
这个是写在PHP.ini配置文件里的是:
display_errors = On
vi /usr/local/stow/php-5.2.5/lib/php.ini
error_get_last 救人老命,php就是高,哈哈 ,值得在线上调试的时候使用!
来自:来自:http://blog.csdn.net/shaobaojie/article/details/26934809
vi 中 shift + * 跳转到函数的实现处
检讨一下自己,数据结构白学了,自己楞没做出来,晕!~今天想从两个数组里选出不同的来,自己倒腾了半天也不行,找了半天发现一个函数,真真的好用,(真是该挨打了,这个函数是从一篇06年的帖子里找到的,到现在还对很多函数不熟悉,真该找个时间好好看看),array_diff($q,$s),返回值是一个数组,是两个数组中不同的那些!
curl之CURLOPT_HTTPHEADER
单个
我们在不设置host的时候提交到虚拟主机后,会出现:
Tencent:/usr/local/tads/htdocs/mhxy2010hn.act/crontab # curl "http://172.23.129.11*/user_v3/freere*g.php?act_id=109353"
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /user_v3/freereg.php was not found on this server.</p>
</body></html>
设置host后就能找到了。
curl为我们用了CURLOPT_HTTPHEADER来做host的工作:
相当于:
这样一折腾,就ok了,呵呵!
其实这个主要是解决,在线上有host指向了,但是其他的需哟又需要这个host的域名,而ip不同的情况。
—————————————————————————————————————————————————
用Curl直接模拟Host如下:
以上摘录自:http://jackxiang.com/post/4022/
单个
<?php
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Range: Bytes=0-50\n"));
?>
多个curl_setopt($ch, CURLOPT_HTTPHEADER, array("Range: Bytes=0-50\n"));
?>
<?php
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Range: Bytes=0-50\nOtherheader: stuff\n"));
?>
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Range: Bytes=0-50\nOtherheader: stuff\n"));
?>
我们在不设置host的时候提交到虚拟主机后,会出现:
Tencent:/usr/local/tads/htdocs/mhxy2010hn.act/crontab # curl "http://172.23.129.11*/user_v3/freere*g.php?act_id=109353"
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /user_v3/freereg.php was not found on this server.</p>
</body></html>
设置host后就能找到了。
curl为我们用了CURLOPT_HTTPHEADER来做host的工作:
function curl_post($host, $data)
{
$ch = curl_init();
$res= curl_setopt ($ch, CURLOPT_URL,$host);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_HTTPHEADER,array("Host: act.*.qq.com"));
$xyz = curl_exec ($ch);
//echo $xyz;
if ($xyz == NULL) {
return 0;
}
return $xyz;
}
{
$ch = curl_init();
$res= curl_setopt ($ch, CURLOPT_URL,$host);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_HTTPHEADER,array("Host: act.*.qq.com"));
$xyz = curl_exec ($ch);
//echo $xyz;
if ($xyz == NULL) {
return 0;
}
return $xyz;
}
相当于:
172.23.129.* act.*.qq.com
这样一折腾,就ok了,呵呵!
其实这个主要是解决,在线上有host指向了,但是其他的需哟又需要这个host的域名,而ip不同的情况。
—————————————————————————————————————————————————
用Curl直接模拟Host如下:
以上摘录自:http://jackxiang.com/post/4022/
在php中,抓取https的网站,会出现错误:
Warning: file_get_contents(https://localhost/myphp/a.asp) [function.file-get-contents]: failed to open stream: Invalid argument in I:\Web\myphp\a.php on line 16
打开php.ini找到 ;extension=php_openssl.dll ,去掉双引号";" ,重启web服务器即可。
apache的可以同时启用mod_ssl模块测试
Warning: file_get_contents(https://localhost/myphp/a.asp) [function.file-get-contents]: failed to open stream: Invalid argument in I:\Web\myphp\a.php on line 16
打开php.ini找到 ;extension=php_openssl.dll ,去掉双引号";" ,重启web服务器即可。
apache的可以同时启用mod_ssl模块测试
最近在写PHP程序时,需要使浏览器在https和http之间转化,上网搜索相关信息,无奈只有最近在写PHP程序时,需要使浏览器在https和http之间转化,上网搜索相关信息,无奈只有一篇介绍用ASP实现“在http和https之间转化”的文章,于是只好行写了用PHP实现http与https转化的代码。
如果网页使用https访问,在网页开头加入以下代码:
view plainprint?
1. <?php
2. //http转化为https
3. if ($_SERVER["HTTPS"]<>"on")
4. {
5. $xredir="https://".$_SERVER["SERVER_NAME"].
6. $_SERVER["REQUEST_URI"];
7. header("Location: ".$xredir);
8. }
9. ?>
<?php //http转化为https if ($_SERVER["HTTPS"]<>"on") { $xredir="https://".$_SERVER["SERVER_NAME"]. $_SERVER["REQUEST_URI"]; header("Location: ".$xredir); } ?>
如果网页使用http访问,在网页开头加入以下代码:
view plainprint?
1. <?php
2. //https转化为http
3. if ($_SERVER["HTTPS"]=="on")
4. {
5. $xredir="http://".$_SERVER["SERVER_NAME"].
6. $_SERVER["REQUEST_URI"];
7. header("Location: ".$xredir);
8. }
9. ?>
如果网页使用https访问,在网页开头加入以下代码:
view plainprint?
1. <?php
2. //http转化为https
3. if ($_SERVER["HTTPS"]<>"on")
4. {
5. $xredir="https://".$_SERVER["SERVER_NAME"].
6. $_SERVER["REQUEST_URI"];
7. header("Location: ".$xredir);
8. }
9. ?>
<?php //http转化为https if ($_SERVER["HTTPS"]<>"on") { $xredir="https://".$_SERVER["SERVER_NAME"]. $_SERVER["REQUEST_URI"]; header("Location: ".$xredir); } ?>
如果网页使用http访问,在网页开头加入以下代码:
view plainprint?
1. <?php
2. //https转化为http
3. if ($_SERVER["HTTPS"]=="on")
4. {
5. $xredir="http://".$_SERVER["SERVER_NAME"].
6. $_SERVER["REQUEST_URI"];
7. header("Location: ".$xredir);
8. }
9. ?>
直接用file_get_contents,会报错;
程序代码$url = (https://xxx.com");
file_get_contents($url);
错误:
程序代码Warning: file_get_contents(https://xxx.com) [function.file-get-contents]: failed to open stream: No such file or directory in D:wampwwwgrabber_clientindex.php on line 3
用curl的方式是可以的:
程序代码$url = (https://xxx.com);
重点是以下两句:
=============================================================
今天项目上线,使用php的curl模块通过https访问某个文件时出错:
这是我日志里记录的信息:
2009-05-11 11:10:23 请求音频列表,错误号:60--错误描述:SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
哎,项目上线急阿,请教同事得知修改如下代码即可,添加黑体字部分就好了。
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, $this->timeout);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->timeout);
虽然有些简单,但是还是写下来吧,以后好作参考。
// 对HTTPS网站的访问,用到了扩展库curl
要在PHP.ini中对curl的extension前面的分号去掉,可能还要把openssl的扩展同样打开
请问如何配置curl才能支持获取https网站内容或者向https的网站提交数据 ?
Linux下编译php的时候,把openssl支持一块编译进去
--with-openssl[=DIR] Include OpenSSL support (requires OpenSSL >= 0.9.6)
--with-openssl-dir[=DIR] FTP: openssl install prefix
--with-imap-ssl[=DIR] IMAP: Include SSL support. DIR is the OpenSSL install prefix
--with-openssl-dir[=DIR] SNMP: openssl install prefix
我一般自己编译,如果你的Linux发行版带有php5-openssl包,安装好就行了
如果是通过OpenSSL加密的https协议传输的网页,curl可以直接访问:
curl https://that.secure.server.com
window下的https 通过curl访问的配置:
http://618119.com/archives/2007/10/26/16.html
http://hi.baidu.com/kkwtre/blog/item/3d20fbfb9a90da204e4aea01.html
http://www.enet.com.cn/article/2011/0617/A20110617874334.shtml
=-----------------------------------------------------------------------------------------=
PHP CURL HTTPS POST:
程序代码$url = (https://xxx.com");
file_get_contents($url);
错误:
程序代码Warning: file_get_contents(https://xxx.com) [function.file-get-contents]: failed to open stream: No such file or directory in D:wampwwwgrabber_clientindex.php on line 3
用curl的方式是可以的:
程序代码$url = (https://xxx.com);
重点是以下两句:
=============================================================
今天项目上线,使用php的curl模块通过https访问某个文件时出错:
这是我日志里记录的信息:
2009-05-11 11:10:23 请求音频列表,错误号:60--错误描述:SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
哎,项目上线急阿,请教同事得知修改如下代码即可,添加黑体字部分就好了。
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, $this->timeout);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->timeout);
虽然有些简单,但是还是写下来吧,以后好作参考。
// 对HTTPS网站的访问,用到了扩展库curl
要在PHP.ini中对curl的extension前面的分号去掉,可能还要把openssl的扩展同样打开
请问如何配置curl才能支持获取https网站内容或者向https的网站提交数据 ?
Linux下编译php的时候,把openssl支持一块编译进去
--with-openssl[=DIR] Include OpenSSL support (requires OpenSSL >= 0.9.6)
--with-openssl-dir[=DIR] FTP: openssl install prefix
--with-imap-ssl[=DIR] IMAP: Include SSL support. DIR is the OpenSSL install prefix
--with-openssl-dir[=DIR] SNMP: openssl install prefix
我一般自己编译,如果你的Linux发行版带有php5-openssl包,安装好就行了
如果是通过OpenSSL加密的https协议传输的网页,curl可以直接访问:
curl https://that.secure.server.com
window下的https 通过curl访问的配置:
http://618119.com/archives/2007/10/26/16.html
http://hi.baidu.com/kkwtre/blog/item/3d20fbfb9a90da204e4aea01.html
http://www.enet.com.cn/article/2011/0617/A20110617874334.shtml
=-----------------------------------------------------------------------------------------=
PHP CURL HTTPS POST:




