努力思考 + 实践, 眼高手低是不行的. 注册 | 登陆
浏览模式: 标准 | 列表分类:转载丨Web相关

利用Curl、socket、file_get_contents POST数据

PHP代码
  1. <?php   
  2. /**  
  3. * Socket版本  
  4. * 使用方法:  
  5. * $post_string = "app=socket&version=beta";  
  6. * request_by_socket('facebook.cn','/restServer.php',$post_string);  
  7. */  
  8. function request_by_socket($remote_server,$remote_path,$post_string,$port = 80,$timeout = 30){   
  9.     $socket = fsockopen($remote_server,$port,$errno,$errstr,$timeout);   
  10.     if (!$socketdie("$errstr($errno)");   
  11.       
  12.     fwrite($socket,"POST $remote_path HTTP/1.0");   
  13.     fwrite($socket,"User-Agent: Socket Example");   
  14.     fwrite($socket,"HOST: $remote_server");   
  15.     fwrite($socket,"Content-type: application/x-www-form-urlencoded");   
  16.     fwrite($socket,"Content-length: ".strlen($post_string)+8."");   
  17.     fwrite($socket,"Accept:*/*");   
  18.     fwrite($socket,"");   
  19.     fwrite($socket,"mypost=$post_string");   
  20.     fwrite($socket,"");   
  21.       
  22.     $header = "";   
  23.     while ($str = trim(fgets($socket,4096))) {   
  24.         $header.=$str;   
  25.     }   
  26.       
  27.     $data = "";   
  28.     while (!feof($socket)) {   
  29.         $data .= fgets($socket,4096);   
  30.     }   
  31.       
  32.     return $data;   
  33. }   
  34.   
  35.   
  36. /**   
  37. * Curl版本   
  38. * 使用方法:   
  39. $post_string = "app=request&version=beta";   
  40. * request_by_curl('http://facebook.cn/restServer.php',$post_string);   
  41. */   
  42. function request_by_curl($remote_server,$post_string){   
  43.     $ch = curl_init();   
  44.     curl_setopt($ch,CURLOPT_URL,$remote_server);   
  45.     curl_setopt($ch,CURLOPT_POSTFIELDS,'mypost='.$post_string);   
  46.     curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);   
  47.     curl_setopt($ch,CURLOPT_USERAGENT,"Jimmy's CURL Example beta");   
  48.     $data = curl_exec($ch);   
  49.     curl_close($ch);   
  50.     return $data;   
  51. }   
  52. /**  
  53. * 其它版本  
  54. * 使用方法:  
  55. * $post_string = "app=request&version=beta";  
  56. * request_by_other('http://facebook.cn/restServer.php',$post_string);  
  57. */  
  58. function request_by_other($remote_server,$post_string){   
  59.     $context = array(   
  60.         'http'=>array(  
  61.             'method'=>'POST',  
  62.             'header'=>'Content-type: application/x-www-form-urlencoded'."".  
  63.                       'User-Agent : Jimmy's POST Example beta'."".   
  64.                       'Content-length: '.strlen($post_string)+8,   
  65.             'content'=>'mypost='.$post_string)   
  66.         );   
  67.     $stream_context = stream_context_create($context);   
  68.     $data = file_get_contents($remote_server,FALSE,$stream_context);   
  69.     return $data;   
  70. }   
  71.   
  72. ?>  

Tags: curl, socket

Apache访问权限控制

转载自仲子说 [ http://www.wangzhongyuan.com/ ]
原文链接:

今天下午做一个WISA2007的论文库,专门存放WISA2007收到的论文,但是这些论文又不能让任何人都访问到,因此需要做一个访问权限的控 制。原来打算使用 Order Deny,Allow 这套机制,结果发现不好使,而且即使允许了一些ip,安全性仍然不高。但是查了一些这方面的资料,觉得还比较有用,所以以下也稍微介绍一下:

今天又被这两个参数小小的耍了一把,痛下决心整理一下,免得再被耽误时间。

[详见全文]

» 阅读全文

Tags: apache

设计模式原则 详解(转)

  这篇文章,不需要你一次就看懂,如果你真的能一次都看懂,我想设计模式对于你来说已经没什么难度了..因为设计模式就是要体现这些原则的,你可以把设 计原则看做是一门语言,设计模式是由这些语言编码的程序..你既然已经明白,精通了语言,剩下的编码自然是很简单的事情,编码的越多则经验越多,经验越多 则对原则的理解就越深...这是一个学习领悟的过程..

  我希望这篇文章能帮助新人感受到设计模式的乐趣,避免重复编码....减少劳动量..如果你能在用心静静的体会文章的每个字,每段话的意思,这样可以 避免走很多弯路...我以前学习设计模式的时候,就是因为忽略了原则,凭着感觉,看着书来学习设计模式,结果就是知其然而不知其所以然....如果你是初 学设计模式,再了解了OOP的三大原则(封套,继承,多态)之后,请反复的结合原则,来学习设计模式..这样可以达到事半功倍的效果...

详见全文

» 阅读全文

Tags: 设计模式

中文字符编码备忘(GB2312、GBK、GB18030)

From: http://www.ibm.com/developerworks/cn/java/jsp_dbcsz/

GB2312-80 是在国内计算机汉字信息技术发展初始阶段制定的,其中包含了大部分常用的一、二级汉字,和 9 区的符号。该字符集是几乎所有的中文系统和国际化的软件都支持的中文字符集,这也是最基本的中文字符集。其编码范围是高位0xa1-0xfe,低位也是 0xa1-0xfe;汉字从 0xb0a1 开始,结束于 0xf7fe;

GBK 是 GB2312-80 的扩展,是向上兼容的。它包含了 20902 个汉字,其编码范围是 0x8140-0xfefe,剔除高位 0x80 的字位。其所有字符都可以一对一映射到 Unicode 2.0,也就是说 JAVA 实际上提供了 GBK 字符集的支持。这是现阶段 Windows 和其它一些中文操作系统的缺省字符集,但并不是所有的国际化软件都支持该字符集,感觉是他们并不完全知道 GBK 是怎么回事。值得注意的是它不是国家标准,而只是规范。随着 GB18030-2000国标的发布,它将在不久的将来完成它的历史使命。

GB18030-2000(GBK2K) 在 GBK 的基础上进一步扩展了汉字,增加了藏、蒙等少数民族的字形。GBK2K 从根本上解决了字位不够,字形不足的问题。它有几个特点,

  • 它并没有确定所有的字形,只是规定了编码范围,留待以后扩充。
  • 编码是变长的,其二字节部分与 GBK 兼容;四字节部分是扩充的字形、字位,其编码范围是首字节 0x81-0xfe、二字节0x30-0x39、三字节 0x81-0xfe、四字节0x30-0x39。
  • 它的推广是分阶段的,首先要求实现的是能够完全映射到 Unicode 3.0 标准的所有字形。
  • 它是国家标准,是强制性的。

Tags: 编码, gb2312, gbk, gb18030

Php ini_set ini_get可操作配置参数列表

为了使自己的程序在不同的平台中拥有更好的兼容性,很多时候我们都要获取当前Php的运行环境参数。比如我们常用到的:获取 magic_quotes_gpc状态,来决定当表单提交时我们是否转义(addslashes)数据;设定max_execution_time来延长 程序的执行时间;设定error_reporting使自己的项目在开发与运营阶段切换;设定memory_limit加大内存等等…

详见全文

» 阅读全文

Tags: php, php扫盲

CSS hack:区分IE6,IE7,firefox

区别IE6FF

       background:orange;*background:blue;

区别IE6IE7
       background:green !important;background:blue;

区别IE7与FF:
        background:orange*background:green;

区别FFIE7IE6
        background:orange;*background:green !important;*background:blue;

注:IE都能识别*;标准浏览器(如FF)不能识别*; IE6能识别*,但不能识别 !important, IE7能识别*,也能识别!important; FF不能识别*,但能识别!important

  IE6 IE7 FF
* ×
!important ×

另外再补充一个,下划线"_",
IE6支持下划线,IE7和firefox均不支持下划线。(推荐)

于是大家还可以这样来区分IE6IE7firefox
: background:orange;*background:green;_background:blue;

注:不管是什么方法,书写的顺序都是firefox的写在前面,IE7的写在中间,IE6的写在最后面。

Tags: css, hack, ie6, ie7, firefox

Javascript 获取页面高度(多种浏览器)

在我本地测试当中:
在IE、FireFox、Opera下都可以使用
document.body.clientWidth
document.body.clientHeight
即可获得,很简单,很方便。
而在公司项目当中:
Opera仍然使用
document.body.clientWidth
document.body.clientHeight
可是IE和FireFox则使用
document.documentElement.clientWidth
document.documentElement.clientHeight
原来是W3C的标准在作怪啊
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd

定义标准
IE:
document.body.clientWidth ==> BODY对象宽度
document.body.clientHeight ==> BODY对象高度
document.documentElement.clientWidth ==> 可见区域宽度
document.documentElement.clientHeight ==> 可见区域高度

FireFox:
document.body.clientWidth ==> BODY对象宽度
document.body.clientHeight ==> BODY对象高度
document.documentElement.clientWidth ==> 可见区域宽度
document.documentElement.clientHeight ==> 可见区域高度

Opera:
document.body.clientWidth ==> 可见区域宽度
document.body.clientHeight ==> 可见区域高度
document.documentElement.clientWidth ==> 页面对象宽度(即BODY对象宽度加上Margin宽)
document.documentElement.clientHeight ==> 页面对象高度(即BODY对象高度加上Margin高)

未定义标准
IE:
document.documentElement.clientWidth ==> 0
document.documentElement.clientHeight ==> 0

FireFox:
document.documentElement.clientWidth ==> 页面对象宽度(即BODY对象宽度加上Margin宽)
document.documentElement.clientHeight ==> 页面对象高度(即BODY对象高度加上Margin高)

Opera:
document.documentElement.clientWidth ==> 页面对象宽度(即BODY对象宽度加上Margin宽)
document.documentElement.clientHeight ==> 页面对象高度(即BODY对象高度加上Margin高)

真是一件麻烦事情,其实就开发来看,宁可少一些对象和方法,不使用最新的标准要方便许多啊。

Tags: javascript, 标准

40个迹象表明你还是PHP菜鸟

From:http://reinholdweber.com/?p=19
英文版权归Reinhold    Weber所有,中译文作者yangyang(aka    davidkoree)。双语版可用于非商业传播,但须注明英文版作者、版权信息,以及中译文作者。翻译水平有限,请广大PHPer指正。

你是PHP菜鸟,如果你:

1. 不会利用如phpDoc这样的工具来恰当地注释你的代码
2. 对优秀的集成开发环境如Zend StudioEclipse PDT视而不见
3. 从未用过任何形式的版本控制系统,如Subclipse
4. 不采用某种编码与命名标准,以及通用约定,不能在项目开发周期里贯彻落实
5. 不使用统一开发方式
6. 不转换(或)也不验证某些输入或SQL查询串(译注:参考PHP相关函数
7. 不在编码之前彻底规划你的程序
8. 不使用测试驱动开发
9. 不在错误开启状态下进行编码和测试(译注:参考PHP函数error_reporting
10. 对调试器的好处视而不见
11. 不重构你的代码
12. 不使用类似MVC模式把程序的不同层次划分开
13. 不知道这些概念:KISS, DRY, MVC, OOP, REST
14. 不用return而是直接在你的函数或类中输出(echo/print)内容
15. 对单元测试或通用测试的优点视而不见
16. 总是返回硬编码的HTML,却不返回纯粹的数据,字符串,或对象
17. 总是对“消息”和“配置参数”进行硬编码
18. 不对SQL查询语句做优化
19. 不使用__autoload(译注:参考PHP手册相关描述
20. 不允许智能错误处理(译注:参考PEAR的ErrorStack
21. 使用$_GET替代$_POST来做具有破坏性的传递操作
22. 不知道怎么利用正则表达式
23. 从未听说过SQL注入或跨站脚本
24. 不允许简易配置,也不允许类的构造函数接受参数传递而后执行set/get方法,或运行时的常量定义
25. 不理解面向对象编程(OOP)的优势和劣势
26. 不视情形大小而滥用OOP
27. 自认为实现可复用的软件一定等于/需要让你的代码遵循OOP
28. 不利用智能缺省值
29. 没有单一的配置文件
30. 不想暴露文件源码,却用.inc后缀名取代了.php
31. 不使用数据库抽象层
32. 不能保持DRY作风,即不重复自己,如果你总是在复制粘贴一些东西,说明你设计得很差劲
33. 没有实现让一个函数/类/方法只做一件事,也不能组合利用它们
34. 没能尝试OOP的特长,如抽象类、接口、多态、继承,访问控制修饰符(译注:如public, private, protected)
35. 不用现有的设计模式优化你的程序体系设计
36. 不允许你的用户在你拥有很多文件或目录的情况下定义基础目录
37. 污染了名称空间,比如用常见字符串命名你的库函数
38. 使用数据库表时不使用表前缀
39. 不使用统一的模板引擎
40. 不关注已有的PHP开发框架,懒于探索;其实先进的开发理念和美妙代码就蕴含其中。

译注:另有马永占翻译版本《PHP程序员的40点陋习》,简洁并配有译者注释。

Tags: php, 菜鸟

Records:291234