PHP获取HTPPS获取网页源码app没有内容怎么回事

Access denied | 3i3c.cn used Cloudflare to restrict access
Please enable cookies.
What happened?
The owner of this website (3i3c.cn) has banned your access based on your browser's signature (44da692b8e7322fa-ua98).php获取网页源码内容有哪些办法_百度知道
php获取网页源码内容有哪些办法
我知道file_get_contents可以直接把源码读取fopen($url,'r')是以对话的方式fsockopen也是还有curl,fsockopen和curl好像能做更多的请求,不知道怎么用,它发的每个请求都是什么目的呢...
我知道file_get_contents可以直接把源码读取fopen($url,'r')是以对话的方式fsockopen也是还有curl,fsockopen和curl好像能做更多的请求,不知道怎么用,它发的每个请求都是什么目的呢,为什么就能达到模拟浏览器请求的目的,http头起什么作用,上面的哪种方式通用性强,各自有什么优缺点,在哪种情况时更适合用这些方式呢,谢谢1.还有怎么不乱码,为什么会乱码,程序文件的编码和获取的字符的编码不一样,就会乱码吗2:incov可以编码转换,可怎么用,要知道获取的字符的编码才能对应转换把3:有函数可以知道当前字符的编码吗4:字符编码是怎么回事5:gb2312,utf-8这些编码适用哪些字符的网页呢6:为什么有些中文会乱码,utf-8是中文吗7:/如果出现中文乱码使用下面代码 //$getcontent = iconv(&gb2312&, &utf-8&,$contents); //路过我总在获取源码后加这句,会保证不乱码吗,在任何字符的情况下问的很多,都是平时遇到的疑问,我菜鸟,麻烦说详细点,谢谢大家
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
采纳数:141
获赞数:146
php已提供相关函数。file_get_contents() 函数把整个文件读入一个字符串中。$ret&=&file_get_contents('要采集的网页URL');//&若需要从页面中获取内容,可以用正则匹配$begin=change_match_string('匹配开头的字符串');$end=change_match_string('匹配结尾的字符串');$p&=&&{$begin}(.*){$end}&;//&使用正则进行匹配if&(eregi($p,$ret,$rs))&return&$rs[1];else&&&&&&&&&&&&&&&&&&&&return&
wenrenwulei
wenrenwulei
采纳数:351
获赞数:1179
以下就是几种常用的用php抓取网页中的内容的方法。1.file_get_contents PHP代码 代码如下:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&?php $url = &&; $contents = file_get_contents($url); //如果出现中文乱码使用下面代码 //$getcontent = iconv(&gb2312&, &utf-8&,$contents); echo $ ?& 2.curl PHP代码 代码如下:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&?php $url = &&; $ch = curl_init(); $timeout = 5; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); //在需要用户检测的网页里需要增加下面两行 //curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); //curl_setopt($ch, CURLOPT_USERPWD, US_NAME.&:&.US_PWD); $contents = curl_exec($ch); curl_close($ch); echo $ ?& 3.fopen-&fread-&fclose PHP代码 代码如下:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&?php $handle = fopen (&&, &rb&); $contents = &&; do { $data = fread($handle, 1024); if (strlen($data) == 0) {
} $contents .= $ } while(true); fclose ($handle); echo $ ?& 注意: 1.使用file_get_contents和fopen必须空间开启allow_url_fopen。方法:编辑php.ini,设置allow_url_fopen = On,allow_url_fopen关闭时fopen和file_get_contents都不能打开远程文件。 2.使用curl必须空间开启curl。方法:windows下修改php.ini,将extension=php_curl.dll前面的分号去掉,而且需要拷贝ssleay32.dll和libeay32.dll到C:\WINDOWS\system32下;Linux下要安装curl扩展。##############至于说哪种方法好,这个不好说,看你要完成的任务有多难来定吧,我一般用CURL比较多....自己去网上搜搜,有很多博客里有教程,感兴趣的事加上聪明的人,一下下就学会了哦..祝你好运.
本回答被提问者和网友采纳
为你推荐:
其他类似问题
您可能关注的内容
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。Access denied | 3i3c.cn used Cloudflare to restrict access
Please enable cookies.
What happened?
The owner of this website (3i3c.cn) has banned your access based on your browser's signature (44da-ua98).随笔分类 - PHP
摘要: 最终效果图。 一步一步完全按照步骤,轻松在微信公众号自定义菜单中添加图标。 第一步:打开PHP网页列表 http://code.iamcal.com/php/emoji/第二步:选择代码表中softbank列代码,复制,例如U+E536 第三步:代码复制到记事本里,并在记事本中修改代码为“\ue53
幻星宇 阅读(12968) |
摘要: 经测试,Android拍照的 Orientation 属性都是1,判断不出是否被旋转了。
幻星宇 阅读(371) |
摘要: appid = $ $this-&secrect = $ $this-&accessToken = $this-&getToken($appid, $secrect); } /** * 发送post请求 * @pa...
幻星宇 阅读(1335) |
摘要: 装了wampserver64位,里面的php是5.5,apache是2.41.配置虚拟主机时碰到问题:apache AH01630: client denied by server configuration解决方案如下:apache2.2的写法: ServerName fdipzone.demo....
幻星宇 阅读(88) |
摘要: 1.下载:http://pecl.php.net/package/redis/2.2.7/windows2.下载后由于里面有两个模块分别是vc6,vc9编译的,我们需要知道我们的Php是vc6还是vc9的:新建一个reids.php点击(此处)折叠或打开3.安装模块把php_redis.dll模块放...
幻星宇 阅读(68) |
摘要: 步骤:1.创建一个Hello World模块2.为这个模块配置路由3.为这个模块创建执行控制器创建Hello World模块创建模块的结构目录:app/core/local/Sjolzy/HelloWorld/Blockapp/core/local/Sjolzy/HelloWorld/control...
幻星宇 阅读(65) |
摘要: _init();}protected function _init(){$this-&_store=Mage::app()-&getStore();$this-&_baseUrl=Mage::getBaseUrl();}public function getAllCategory(){$parent...
幻星宇 阅读(59) |
摘要: 1.加载某个attribute: $attributeCode=Mage::getModel('catalog/resource_eav_attribute') -&load($attrbuteId) -&getData(&attribute_code&)...
幻星宇 阅读(75) |
摘要: 对于命名空间,官方文档已经说得很详细[查看],我在这里做了一下实践和总结。命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误。这种情况下只要避免命名重复就可以解决,最常见的一种做法是约定一个前缀。例:项目中有两个模块:article和mes...
幻星宇 阅读(61) |
摘要: http://www.bubuko.com/infodetail-1062014.html要完成手机APP跳转到微信的APP进行微信支付,需要进行如下操作:1、先去微信的开放平台(http://open.weixin.qq.com)进行开发者账号的注册。2、新建一个APP应用,然后填写必填信息提交审...
幻星宇 阅读(368) |
摘要: 1. 地址保存 $_custom_address = array ( 'firstname' =& 'Branko', 'lastname' =& 'Ajzele', 'street' =& array ( '0' =& 'Sample address part1',...
幻星宇 阅读(73) |
摘要: magento判断用户登录Magento 登陆之后返回登录之前的页面magento 在登陆后一般会自动跳转到 My Account 页面但是经常会有需求 就是登陆自动跳转到 之前的页面里面工具/原料php+mysql+apache方法/步骤只要加代码Mage::getSingleton('custo...
幻星宇 阅读(110) |
摘要: 上次做项目的时候,遇到 查询结果为 数组。因为条件原因,需要用$where['_string'] 去组合查询。进而用到把数组变成单引号的字符串。举例:查询返回的数组为:$projectcode_array = [&&,&&,&&];通过function...
幻星宇 阅读(78) |
摘要: jsapi中跳转到微信支付中触发的方法是js中的getBrandWCPayRequest方法。改方法中的返回结果msg提示信息如下:err_msg:get_brand_wcpay_request:ok 支付成功 get_brand_wcpay_request:cancel 支付过程中用户取消 ge...
幻星宇 阅读(327) |
摘要: 在CentOS 6.x 的系统中,是集成xdebug 的,yum install php-pecl-xdebug如果是CentOS.5 也可能通过安装安装 epel 来安装rpm -ivhhttp://dl.fedoraproject.org/pub/epel/5/x86_64/epel-relea...
幻星宇 阅读(58) |
摘要: 1.下载对应的接口demo,注意退款有无密和有密2.根据接口代码编写,要注意notify_url和return_url不能带有额外参数,并且notify_url中途不能含有跳转,否则post数据会丢失3.密钥的配置,根据openssl生成密钥和私钥,同时在账号里面根据要求配置好。alipay公钥是固...
幻星宇 阅读(66) |
摘要: 错误描述:#yum install libmcrypt libmcrypt-devel mcrypt mhashSetting up Install ProcessNo package php-mcrypt available.Error: Nothing to do我们会看到centos yum从...
幻星宇 阅读(1308) |
摘要: 最近做一个关于价格的程序时,碰到了一个很奇怪的问题。我把问题给抓出来了。请看如下代码: 你会发现,echo出来的结果居然不是0,而是5.E-15。思索了半天,也没找到是什么原因。用了C语言试了一下,结果正常。同事说他以前也遇到过,估计是超出了PHP的实数范围。 解决方法,由于...
幻星宇 阅读(183) |
摘要: 手册地址:https://phpunit.de/manual/current/zh_cn/phpunit-book.html#test-doubles.mock-objects
幻星宇 阅读(30) |
摘要: Security.class.php文件 1 ', '', 6 &'&, '&', '&', '$', '#', 7 '{', '}', '[', ']', '=', 8 ';', '?', '%20', '%22', 9 '...
幻星宇 阅读(104) |
摘要: Mobile.class.php 1 12 * Nick Ilyin 13 * 14 * Original author: Victor Stanciu 15 * 16 * @lice...
幻星宇 阅读(693) |
摘要: &;echo &今天:&,date(&Y-m-d&,strtotime(&18 june2008&)),&&;echo &昨天:&,date(&Y-m-d&,strtotime(&-1 day&)),&&;echo &明天:&,date(&Y-m-d&,strtotime(&+1 day&)),&&...
幻星宇 阅读(331) |
摘要: 在PHP中,strlen与mb_strlen是求字符串长度的函数,但是对于一些初学者来说,如果不看手册,也许不太清楚其中的区别。下面通过例子,讲解这两者之间的区别。先看例子:';//14 echomb_strlen($str,'utf8').'';//6 echomb_strlen($str,'gb...
幻星宇 阅读(56) |
摘要: 使用 mb_detect_encoding() 函数来判断字符串是什么编码的。当在php中使用mb_detect_encoding函数进行编码识别时,很多人都碰到过识别编码有误的问题,例如对与GB2312和UTF- 8,或者UTF-8和GBK(这里主要是对于cp936的判断),网上说是由于字符短是,...
幻星宇 阅读(498) |
摘要: 服务器配置命令开始(蓝色为输入命令,灰色为反馈内容):Yum updateRyum -y install mysql mysql-server mysql-devel php php-devel php-commonphp-gd php-curl php-prec php-xml php...
幻星宇 阅读(72) |
摘要: ServerAdmin m.koobird.com DocumentRoot &/var/www/html/xinyou& ServerName m.romy.com ErrorLog &logs/romy-m.koobird.com-error.log& CustomLog &logs/romy...
幻星宇 阅读(36) |
摘要: ttpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName解决办法非常简单:#vim /web/apache/conf/httpd.conf (...
幻星宇 阅读(166) |
摘要: /** * 每天定时执行的sphinx索引增量更新 * @author guo.jing *
* @param $indexerArr(执行要更新的索引) */ public function updateCoreseekIndex...
幻星宇 阅读(62) |
摘要: 1.在线安装mod_sslyum -y install mod_ssl查看openssl是否安装成功rpm -qa |grep openssl2.建立服务器密钥openssl genrsa -out server.key 10243.建立服务器公钥openssl req -new -key serv...
幻星宇 阅读(99) |
摘要: 1 $z * sin($t) + 0.006,15 'lng' =& $z * cos($t) + 0.0065 16 );17 }18 19 //使用方法 20 $lat = 40.09974;21 $lng = 116.24847;22 $coordinate =...
幻星宇 阅读(135) |
摘要: 现在有很多朋友在使用安装ImageMagick imagick for php了,今天自己也想做但是不知道如何操作,下面我来给大家介绍Centos 安装ImageMagick imagick for php步骤,各位同学可参考。关于什么是ImageMagickImageMagick是一套软件系列,主...
幻星宇 阅读(2267) |
摘要: 系统默认的缓存方式是采用File方式缓存,我们可以在项目配置文件里面定义其他的缓存方式,例如,修改默认的缓存方式为Xcache(当然,你的环境需要支持Xcache)对于File方式缓存下的缓存目录下面因为缓存数据过多而导致存在大量的文件问题,ThinkPHP也给出了解决方案,可以启用哈希子目录缓存的...
幻星宇 阅读(81) |
摘要: time = $this-&microtime_float();require_once(&config.db.php&);$this-&connect($db_config[&hostname&], $db_config[&username&], $db_config[&password&], $...
幻星宇 阅读(35) |
摘要: 例如你的原路径是 http://localhost/test/index.php/index/add那么现在的地址是 http://localhost/test/index/add如何去掉index.php呢?1、httpd.conf配置文件中加载了mod_rewrite.so模块 //在APACH...
幻星宇 阅读(48) |
摘要: js文件中的内容(ajax.operate.js);(function ($, window) { var _ajaxOperate = window.ajaxOperate || {}; _ajaxOperate.callback = _ajaxOperate.de...
幻星宇 阅读(109) |
摘要: Sphinx--强大的开源全文检索引擎,Coreseek--免费开源的中文全文检索引擎软件版本:coreseek-4.1mmseg-3.2.14autoconf-2.64老版本的coreseek-3.2和mmseg-3.2.13安装过程一样。一、安装前准备编译环境1.1yum安装编译环境和mysql...
幻星宇 阅读(315) |
摘要: 一个文档包含了安装、增量备份、扩展、api调用示例,省去了查找大量文章的时间。搭建coreseek(sphinx+mmseg3)安装[第一步] 先安装mmseg3cd /var/installwget http://www.coreseek.cn/uploads/csft/4.0/coreseek-...
幻星宇 阅读(375) |
摘要: 我得是centos 6.3,如果直接用yum安装redis,报错,如下:[root@CentOS6 etc]# yum install redisLoaded plugins: fastestmirrorLoading mirror speeds from cached hostfile* base...
幻星宇 阅读(167) |
摘要: 一、封装weixin.class.php由于微信公众平台的通信使用的是特定格式的XML数据,每次接受和回复都要去做一大堆的数据处理。我们就考虑在这个基础上做一次封装,weixin.class.php,代码如下:token = $$this-&debug = $} //...
幻星宇 阅读(655) |
摘要: 一个常见的PHP安全细则发布时间: 10:18:50来源:51cto评论:0点击:9次 【字号:大中小】 PHP本身再老版本有一些问题,比如在 php4.3.10和php5.0.3以前有一些比较严重的bug,所以推荐使用新版。另外,目前闹的轰轰烈烈的SQL Injection也...
幻星宇 阅读(33) |
摘要: PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。它可以比 CGI或者Perl更快速的执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多。下面介绍了42个程序的优化准则。 1...
幻星宇 阅读(31) |
摘要: 我们在编写程序时,总是想要使自己的程序占用资源最小,运行速度更快,代码量更少。往往我们在追求这些的同时却失去了很多东西。下面我想讲讲我对PHP优化的理解。优化的目的是花最少的代价换来最快的运行速度与最容易维护的代码。 进行大范围的优化,而不是死啃某些程序代码 我这里所说的优化,基本上都是从服务器...
幻星宇 阅读(68) |
摘要: PHP:我这里说到的权限管理办法是一个普遍采用的方法,主要是使用到&位运行符&操作,& 位与运算符、| 位或运行符。参与运算的如果是10进制数,则会被转换至2进制数参与运算,然后计算结果会再转换为10进制数输出。它的权限值是这样的2^0=1,相应2进数为&0001&(在这里^我表示成&次方&,即:2...
幻星宇 阅读(166) |
摘要: 例子名称结果$a & $bAnd(按位与)将在 $a 和 $b 中都为 1 的位设为 1。$a | $bOr(按位或)将在 $a 或者 $b 中为 1 的位设为 1。$a ^ $bXor(按位异或)将在 $a 和 $b 中不同的位设为 1。~ $aNot(按位非)将 $a 中为 0 的位设为 1,反...
幻星宇 阅读(40) |
摘要: [转载]最完整PHP.INI中文版http://www.21andy.com/blog/4.html最完整PHP.INI中文版适用于 php-5.2 的 php.ini 中文版作者:金步国;;;;;;;;;;;;;;;;;;;关于php.;;;;;;;;;;;;;;;...
幻星宇 阅读(45) |
摘要: php开发环境里,安装了xdebug模块后,var_dump()输出的结果将比较易于查看,但默认情况下,var_dump() 输出的结果将有所变化:过多的数组元素不再显示,字符串变量将只显示前N个字符,较深的数组元素也被显示成省略号。这点会带来一些不便,我们修改配置文件,设置这些。在php.ini里...
幻星宇 阅读(183) |
摘要: 当页面代码没有任何问题,也没有报错。但是页面的循环很多,请求导致开销很大的时候,有可能要改php.ini中的pcre部分。[Pcre]pcre.recursion_limit=-1pcre.backtrack_limit=-1
幻星宇 阅读(41) |
摘要: [导读] 一、简介微信公众平台是腾讯公司在微信的基础上新增的功能模块,通过这一平台,个人和企业都可以打造一个微信的公众号,并实现和特定群体的文字、图片、语音的全方位沟通、互动。二、通讯机制三、注册微信平台公一、简介微信公众平台是腾讯公司在微信的基础上新增的功能模块,通过这一平台,个人和企业都可以打造...
幻星宇 阅读(96) |
摘要: 配置虚拟主机的时候,里面加上如下: Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all
幻星宇 阅读(50) |
摘要: //获取当前访问的完整url地址function getCurUrl() { $url = 'http://'; if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') { $url = 'https://'; } if ($_SERVER['SERVER_PORT'] != '80') { $url .= $_SERVER['SERVER_NAME'] . ':' . $_
幻星宇 阅读(35) |
摘要: 1 function dateToTimestamp(date) { 2 //方法一 3 var newDate = new Date(); 4 newDate.setFullYear(date.substring(0,4)); 5 newDate.setMonth(date.substring(5,7)-1); 6 console.log('3--' + date.substring(8,10)); 7 newDate.setDate(date.substring(8,10)); ...
幻星宇 阅读(110) |
摘要: header的用法header()函数的作用是:发送一个原始 HTTP 标头[Http Header]到客户端。标头 (header) 是服务器以 HTTP 协义传 HTML 资料到浏览器前所送出的字串,在标头与 HTML 文件之间尚需空一行分隔。有关 HTTP 的详细说明,可以参 RFC 2068 官方文件(http://www.w3.org/Protocols/rfc2068/rfc2068)。在 PHP 中送回 HTML 资料前,需先 传完所有的标头。使用范例范例一: 本例使浏览器重定向到 PHP 的官方网站。三秒后自动跳转~~~');header重定向 就等价于替用户在地址栏输
幻星宇 阅读(62) |
摘要: 针对自己的不足与加深php的认识,选择用php来研究各种设计模式。今天就看了设计模式的介绍,并学习了工厂模式,因为工厂模式比较简单,也比较常用。工厂模式的最主要作用就是对象创建的封装、简化创建对象操作。下面是一个简单例子: 1 arrParent[] = new $parent();29 }30 public function show()31 {32 foreach($this-&arrParent as $par)33 {34 $par-&show();35 }36 }37 }38 39 $factory = new Factory();40 $factory-&crea
幻星宇 阅读(68) |
摘要: 详细出处参考:http://www.jb51.net/article/29624.htm又是框架冲突导致__autoload()失效,用spl_autoload_register()重构一下,问题解决__autoload()的用法就不再说了,以前已经在我的WEB开发笔记中说过。PHP __autoload函数(自动载入类文件)的使用方法, 原文地址:http://www.jb51.net/article/29625.htm 。 说一说,spl_autoload_register()的用法吧,很简单,可以这样理解,就是声明一个自定义__autoload(),你可以是A函数,也可以是B函数,想怎么
幻星宇 阅读(202) |
摘要: 详细出处参考:http://www.jb51.net/article/29625.htm在使用PHP的OO模式开发系统时,通常大家习惯上将每个类的实现都存放在一个单独的文件里,这样会很容易实现对类进行复用,同时将来维护时也很便利这也是OO设计的基本思想之一。在PHP5之前,如果需要使用一个类,只需要直接使用include/require将其包含进来即可。下面是一个实际的例子:53637 class ClassA{public function __construct()...
幻星宇 阅读(164) |
摘要: 之前知道php—cli模式是一种类似shell命令式的执行php程序,不过一直以为这个是一种落后的方式,应该没有什么意义,因为从没有遇到过使用这个cli模式编程的。不过今天遇到了使用cli模式的应用。php_cli模式简介php-cli是php Command Line Interface的简称,如同它名字的意思,就是php在命令行运行的接口,区别于在Web服务器上运行的php环境(php-cgi, isapi等) 也就是说,php不单可以写前台网页,它还可以用来写后台的程序。 PHP的CLI shell脚本适用于所有的PHP优势,使创建要么支持脚本或系统甚至与GUI应用程序的服务端!——注:
幻星宇 阅读(84) |
摘要: PHP CLI模式开发不需要任何一种Web服务器(包括Apache或MS IIS等),这样,CLI可以运行在各种场合。 有两种方法可以运行PHP CLI脚本。第一种方法是使用php -f /path/to/yourfile.php。调用PHP CLI解释器,并给脚本传递参数。这种方法首先要设置php解释器的路径,Windows平台在运行CLI之前,需设置类似path c:\php的命令,也失去了CLI脚本第一行的意义,因此不建议使用该方法。第二种方法是首先运行chmod+x (UNIX/Linux环境),将该PHP文件置为可执行权限,然后在CLI脚本头部第一行加入声明(类似于#! /usr/b
幻星宇 阅读(128) |
摘要: ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去$interval=60*30;// 每隔半小时运行 do{ //这里是你要执行的代码 sleep($interval);// 等待5分钟}while(true);
幻星宇 阅读(48) |
摘要: Stream是PHP开发里最容易被忽视的函数系列(SPL系列,Stream系列,pack函数,封装协议)之一,但其是个很有用也很重要的函数。Stream可以翻译为“流”,在Java里,流是一个很重要的概念。流(stream)的概念源于UNIX中管道(pipe)的概念。在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备、外部文件等。根据流的方向又可以分为输入流和输出流,同时可以在其外围再套上其它流,比如缓冲流,这样就可以得到更多流处理方法。PHP里的流和Java里的流实际上是同一个概念,只是简单了一点。由于PHP主要用于Web开发,所以“流”这块的概念被提到的较少
幻星宇 阅读(154) |
摘要: SPL提供了多个迭代器类,分别提供了迭代访问、过滤数据、缓存结果、控制分页等功能。,因为php总是在不断壮大,我尽可能列出SPL中所有的迭代类。下面其中一些迭代器类是需要php5.4,另外一些如SearhIteratoer类在最新的php版本中已经去除1.ArrayIteratoer从PHP数组创建一个迭代器,当其和IteratorAggregate类一起使用时,免去了直接实现Iterator接口的方法的工作。 1 $b = array( 2 'name'=& 'mengzhi', 3 'age' =& '12', 4
幻星宇 阅读(182) |
摘要: 本人所了解的webservice有以下几种:PHP本身的SOAP,开源的NUSOAP,商业版的PHPRPC,以及使用二进制传输数据流的 HessianPHP,那么一下就简单的介绍下这几种webservice在php中的使用,虽然网上也有很多这方面的资料,但是这是我个人实践所得,当 然也是从网上找的资料,在此简单的做个笔记。一:PHP本身的SOAP所有的webservice都包括服务端(server)和客户端(client)。要使用php本身的soap首先要把该拓展安装好并且启用。下面看具体的code首先这是服务端实现: 1 setClass('test'); 16 //$s..
幻星宇 阅读(95) |
摘要: 通过WEB服务器来实现PHP多线程功能。当然,对多线程有深入理解的人都知道通过WEB服务器实现的多线程只能模仿多线程的一些效果,并不是真正意义上的多线程。 但不管怎么样,它还是能满足我们的一些需要的,在需要类似多线程的功能方面还是可以采用这个类。 1 /** 2 * @title: PHP多线程类(Thread) 3 * @version: 1.0 4 * @author: phper.org.cn 5 * @published:
幻星宇 阅读(79) |
摘要: http://example.com/index.php/控制器/方法名/页面的偏移值页面的偏移值必须是方法名后第一个参数,否者分页类不能判断当前是哪一页,而用ci的分页类进行页面跳转时他是把偏移值加在base_url的最后面。这时如果我在点击页面跳转按钮进行页面跳转时还想带参数呢,像下面这样的话分页类就不能正常工作了。http://example.com/index.php/控制器/方法名/其它参数1/其它参数2/页面的偏移值解决方法,在config.php配置文件中把 $config['enable_query_strings'] 设置为 TRUE,传给分页类的config
幻星宇 阅读(1233) |
摘要: 众所周知,缓存数据库查询的结果可以显著缩短脚本执行时间,并最大限度地减少数据库服务器上的负载。如果要处理的数据基本上是静态的,则该技术将非常有效。这是因为对远程数据库的许多数据请求最终可以从本地缓存得到满足,从而不必连接到数据库、执行查询以及获取结果。 但当您使用的数据库与 Web 服务器位于不同的计算机上时,缓存数据库结果集通常是一个不错的方法。不过,根据您的情况确定最佳的缓存策略却是一个难题。例如,对于使用最新数据库结果集比较重要的应用程序而言,时间触发的缓存方法(缓存系统常用的方法,它假设每次到达失效时间戳记时就重新生成缓存)可能并不是一个令人满意的解决方案。这种情况下,您需要采用一种.
幻星宇 阅读(48) |
摘要: 1、OAuthOAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码)2、SCA服务组件框架(SCA)提供了一套可构建基于面向服务的应用系统的编程模型。它的核心概念是服务及其相关实现。服务由接口定义,而接口包含一组操作。服务实现可以引用其他服务,称为引用。服务可以有一个或多个属性,这些属性是可以在外部配置的数据值。3.SOAP简单对象访问协议(Simple Object Access Protocol,SOAP),是一种轻量的、简单的、基于XML的协议,它被设计成在WEB上交换结构化的和固化
幻星宇 阅读(51) |
摘要: 导读:大多数网站的性能瓶颈不在PHP服务器上,因为它可以简单地通过横向增加服务器或CPU核数来轻松应对(对于各种云主机,增加VPS或CPU核数就更方便了,直接以备份镜像增加VPS,连操作系统、环境都不用安装配置),而是在于MySQL数据库。如果用 NoSQL 数据库,也许需要十次查询,才能处理完同样地业务逻辑。此时PHP多线程的作用非常明显,它可以同时执行NoSQL查询大大的提升效率。PHP 5.3 以上版本,使用pthreads PHP扩展,可以使PHP真正地支持多线程。多线程在处理重复性的循环任务,能够大大缩短程序执行时间。 PHP扩展下载:https://github.com/krak.
幻星宇 阅读(70) |
摘要: 导读:有时候我们需要对收集的数据做统计,并在页面提供显示以及下载。除了对传统的excel存取之外,对CSV文件的存取也很重要。本文列出了这两种操作的详细代码。代码: 在实际工作中,很多时候需要把网站上的一些数据下载到CSV文件里,方便以后查看。亦或者是用CSV进行一些批量的上传工作。这个时候我们就需要对CSV进行读写操作。php CSV的读取操作代码:CSV的写入操作代码:输出CSV(下载功能)代码:输出excel(下载功能)header(&Content-type:application/vnd.ms-excel&);header(&Content-Dispos
幻星宇 阅读(55) |
摘要: 导读:在二维码广泛应用化的今天,在web站点中自动生成对应的二维码是最基础的需求。文章介绍了使用PHP自动生成二维码的三种方式。get方法实现方式一:$urlToEncode=&163.com&; generateQRfromGoogle($urlToEncode); function generateQRfromGoogle($chl,$widhtHeight ='150',$EC_level='L',$margin='0') { $url = urlencode($url); return ''; } po
幻星宇 阅读(45) |
摘要: 导读:在设计博客类站点时,有时会需要在发布文章时同步发布在微博上。本文阐述了实现该功能的基本方式。准备工作作为新浪微博的开发者,需要有身份验证;个人身份认证的审核,一般一个工作日;接着是提交网站的审核,境内的就是提交备案号。境外的提交所在网站的境外证明即可;也是一个工作日左右;通过个人身份审核之后,就可以创建应用、调用接口了,这时得到的权限相对低点;网站不提交审核或未通过审核,对发微博没有影响;只是在发的微博下面会显示&未审核应用&;审核之后显示的为网站应用名称:image调用接口微博开放平台提供了测试工具;在开发接入之前,首先得保证通过这个测试工具能将测试微博发出去;ht
幻星宇 阅读(93) |
摘要: 导读:PHP在生成静态文件的时候,有时候会因为一些混编问题让HTML标签不完整或混乱而导致页面混乱。作者分享下面这段小代码可以非常方便解决问题。 如果你的网页内容的html标签显示不全,有些表格标签不完整而导致页面混乱,或者把你的内容之外的局部html页面给包含进去了,我们可以写个函数方法来补全html标签以及过滤掉无用的html标签.php使HTML标签自动补全闭合函数方法如下:function closetags($html) { preg_match_all('#&(?!meta|img|br|hr|input\b)\b([a-z]+)(?: .*)?(? #iU'
幻星宇 阅读(96) |
摘要: 1.获取远程文件大小及信息的函数function getFileSize($url){ $url = parse_url($url); if($fp = @fsockopen($url[’host’],empty($url[’port’])?80:$url[’port’],$error)){ fputs($fp,&GET &.(empty($url[’path’])?’/’:$url[’path’]).& HTTP/1.1\r\n&); fputs($fp,&Host:$url[host]\r\n\r\n&); while(!feof
幻星宇 阅读(333) |
摘要: 使用php有一段时间了,之前一直用fwrite写入文件,不过当我知道file_put_contents这个函数之后,fwrite就比较少用了,file_put_contents比fwrite代码更简洁。具体来说,fwrite至少要3行代码完成一次写入时间,而file_put_contents只需要一行代码即可!如下为file_put_contents的实例代码:同样的功能使用fwrite的实例代码:从以上两个例子看出,其实file_put_contents是fopen、fwrite、fclose三合一的简化写法,这对程序代码的优化是有好处的,一方面在代码量上有所减少,另一方面不会出现fclos
幻星宇 阅读(156) |
摘要: 今天看到有人说,在做字符串长度判断的时候,有个比strlen效率更高的方法。即:$str = ‘aaaaaa’;if(strlen($str) & 6)VSif(!isset($str{6})晚上自己用例子简单测试下,情况基本属实,特此记录下。后者效率几乎是前者的3倍。具体原因是,在PHP中,所有的变量都是用一个结构-zval来保存的,strlen虽然是直接获取其中的len,但是仍然有一次函数调用,而isset是PHP的语法结构,所以更快!示例:1 6){6 // echo 1;7 }8 9 echo microtime(1) - $sT输出:0....
幻星宇 阅读(51) |
摘要: 参考网址:php对csv文件的常用操作集合http://blog.xhbin.com/archives/7481,下载CSV格式文档唯一需要特别注意的是编码。 1 2,生成.csv文件(不下载) 1 $action = $_GET['action']; 2 if ($action=='make'){ 3 $fp = fopen(&csv.csv&,&a&); //打开csv文件,如果不存在则创建 4 $data_arr1 = array(&10001&,&10002&,&1
幻星宇 阅读(5024) |
摘要: 常用的配置: ServerAdmin
DocumentRoot &D:/var/www/user_admin/& ServerName user_admin.redidai.com ErrorLog &logs/romy-redidai.com-error.log& CustomLog &logs/romy-redidai.com-access.log& common allow from all order allow,deny AllowOverride All Di...
幻星宇 阅读(46) |
摘要: 1.post提交数据$postData = array( 'paramCity' =& array(array('id' =& $city_id, 'day' =& $city_days, 'name' =& $city_name)), 'paramAttr' =& $paramAttr, 'paramBiqu' =& $must_go ? $must_go['param_value'] : 4, //必去控制 'paramPlayRhyt
幻星宇 阅读(104) |
摘要: 假设数组有1000个元素,键值为小于1000000的无序的正整数,且不连续,如下$arr=array(1=&'sadas',20=&'aasd',5002=&'fghfg',190023=&'rty',248=&'kj',76=&'sddd'...);现在要获取数组$arr中键的值大于500小于600的元素,不用foreach完全循环一遍的话是否有更高效的算法? 1 'sadas',20=&'aasd',5002=&&#
幻星宇 阅读(74) |
摘要: 此前,研发频道曾发布《直接拿来用,10个PHP代码片段》,得到了网友们的一致好评。本文,笔者将继续分享九个超级有用的PHP代码片段。当你在开发网站、应用或者博客时,利用这些代码能为你节省大量的时间。一、查看邮件是否已被阅读当你在发送邮件时,你或许很想知道该邮件是否被对方已阅读。这里有段非常有趣的代码片段能够显示对方IP地址记录阅读的实际日期和时间。 1 二、从网页中提取关键字一段伟大的代码片段能够轻松的从网页中提取关键字。$meta = get_meta_tags('http://www.emoticode.net/');$keywords = $meta['keywo
幻星宇 阅读(96) |
摘要: php中数组自定义排序方法有很多,现在只提usort();不会保留原有键名。unsort调用方法就是unsrot($arr,func);注意:如果func是写在当前类中的话,那么调用的方式是unsort($arr, array($this, func));
幻星宇 阅读(68) |
摘要: 当rand($number)或者mt_rand($number)的时候,$number太大,超过pow(2,31) - 1;即整型最大值的时候,会出现负数。如果只是单纯转换成整数而已的话,可以采用sprintf('%u', $number)来处理,如果是概率统计,过滤一定的范围的话,可以看看如下解决方案: 1 public function my_mt_rand($randMaxValue) { 2 $intMaxValue = pow(2,31) - 1; //rand函数最大值 3 $maxValueLen = strlen($randMaxValue...
幻星宇 阅读(645) |
幻星宇 阅读(27) |
摘要: 简单的程序:Red ball:' . $blueB
幻星宇 阅读(33) |
摘要: 1 code=='1'){1112 }13 $data = (array)$ip-&14 return $ 15 }
幻星宇 阅读(118) |
摘要: 做网站类的有时会弄个活动什么的,来让用户参加,既吸引用户注册,又提高网站的用户活跃度。同时参加的用户会获得一定的奖品,有100%中奖的,也有按一定概率中奖的,大的比如中个ipad、iphone5,小的中个Q币什么的。那么我们在程序里必然会设计到算法,即按照一定的概率让用户获得奖品。先来看两个概率算法函数。算法一/** * 全概率计算 * * @param array $p array('a'=&0.5,'b'=&0.2,'c'=&0.4) * @return string 返回上面数组的key */function random
幻星宇 阅读(358) |
摘要: php修改头部状态码: 比如503: header('HTTP/1.1 503 Service Unavailable');header('Status: 503 Service Unavailable');
幻星宇 阅读(42) |
摘要: 1.过滤字符串为空的一些记录的话,可以在sql_query中直接加上where来限制,如:sql_query= \SELECT a.location_id as id,a.location_id,a.location_name as `location_name`,a.location_name as `name`,a.location_bname,a.attach_id,a.showstatus,CRC32(a.showstatus) as crc32_showstatus,a.is_del,a.status,b.area_name as city_name FROM `ts_rdd_loc
幻星宇 阅读(92) |
摘要: 1. sys_getloadavg()sys_getloadavt()可以获得系统负载情况。该函数返回一个包含三个元素的数组,每个元素分别代表系统再过去的1、5和15分钟内的平均负载。与其让服务器因高负载宕掉,不如在系统负载很高时主动die掉一个脚本,sys_getloadavg()就是用来帮你实现这个功能的。不过很遗憾,该函数在windows下无效。2. pack()Pack()能将md5()返回的32位16进制字符串转换为16位的二进制字符串,可以节省存储空间。3. cal_days_in_month()cal_days_in_month()能够返回指定月份共有多少天。4. _()Word
幻星宇 阅读(72) |
摘要: sphinx.conf中的配置: 1 source indexLocation 2 { 3 type = mysql 4 5 sql_host = 192.168.1.113 6 sql_user = root 7 sql_pass = redidai@@2013 8 sql_db = redidai 9 sql_port = 3306 # optional, default is
sql_query_p...
幻星宇 阅读(107) |
摘要: 基础数据结构: CREATE TABLE email (emailid mediumint(8) unsigned NOT NULL auto_increment COMMENT '邮件id',fromid int(10) unsigned NOT NULL default '0' COMMENT '发送人ID',toid int(10) unsigned NOT NULL default '0' COMMENT '收件人ID',content text unsigned NOT NULL COMMENT &#39
幻星宇 阅读(133) |
摘要: 我用php ,curl主要是抓取数据,当然我们可以用其他的方法来抓取,比如fsockopen,file_get_contents等。但是只能抓那些能直接访问的页面,如果要抓取有页面访问控制的页面,或者是登录以后的页面就比较困难了。1,抓取无访问控制文件1 2,使用代理进行抓取为什么要使用代理进行抓取呢?以google为例吧,如果去抓google的数据,短时间内抓的很频繁的话,你就抓取不到了。google对你的ip地址做限制这个时候,你可以换代理重新抓。 1 3,post数据后,抓取数据单独说一下数据提交数据,因为用 curl的时候,很多时候会有数据交互的,所以比较重要的。 1 serializ
幻星宇 阅读(143) |
摘要: 1.wget http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm rpm -ivh epel-release-6-8.noarch.rpm yum install redis php-redis 在CentOS下有时候用rpm安装软件是会出现下面则中错误 1、安装时提示:warning: *.rpm: Header V3 RSA/SHA256 Signature, keykey ID c105b9de: NOKEY 解决的方法就是在rpm 语句后面加上 --forc...
幻星宇 阅读(10055) |
摘要: php中数组用户自定义排序函数有usort和uasort,前者键值重新排列,后者保持原数组的键值。举例usrot:usort($filterArr, 'sortArr');function sortArr($a, $b) { $aa = explode(',', $a); $bb = explode(',', $b); if ($aa[0] == $bb[0]) return 0; return ($aa[0] & $bb[0]) ? -1 : 1;}如果是类中调用usrot的话,比如方法放在当前类中,则调用方式如下:usort($filt
幻星宇 阅读(76) |
摘要: 自动搜索中用的插件是jqury中ui插件:先引入:jquery-ui-1.9.0.custom.min.css和jquery-ui-1.9.0.custom.min.js然后js中的代码调用是: 1 var list = []; 2 var $seachText = $('#search-node-input'); 3 $seachText.bind(&keydown&,function (event) { 4 if (event.keyCode === $.ui.keyCode.TAB && $(this).data(&autoc
幻星宇 阅读(65) |
摘要: 1 //生成缩略图 2 public function wgetimg($topath, $w, $h, $url, $picname, $type) { 3 $sRealPath = realpath('./'); 4 $sSelfPath = $_SERVER['PHP_SELF']; 5 $sSelfPath = substr($sSelfPath, 0, strrpos($sSelfPath, '/')); 6 $sSelfPath = substr($sRealPath, 0, strlen($sRealPat...
幻星宇 阅读(500) |
摘要:world';echo $str.'';$str = preg_replace(&/&[a-z]+\;/i&,'',$str);echo strip_tags($str); 1 //替换字符 2 function replaceFilterHtml($str, $filterStr = '') { 3 $str=preg_replace(&/\s+/&, & &, $str); //过滤多余回车 4 $str=preg_replace(&//si&qu
幻星宇 阅读(946) |
摘要: /*** 获取远程图片的宽高和体积大小** @param string $url 远程图片的链接* @param string $type 获取远程图片资源的方式, 默认为 curl 可选 fread* @param boolean $isGetFilesize 是
幻星宇 阅读(141) |
摘要: test ';echo $tmp_name.'';
幻星宇 阅读(149) |
摘要: 今晚在写框架的表单验证类时,需要判断某个字符串长度是否在指定区间内,很自然地,想到了PHP中的strlen函数。$str='Hello world!';echo strlen($str);// 输出12然而在PHP自带的函数中,strlen及mb_strlen都是通过计算字符串所占字节数来计算长度的,在不同的编码情况下,中文所占的字节数是不同的。在GBK/GB2312下,中文字符占2个字节,而在UTF-8下,中文字符占3个字节。$str='你好,世界!';echo strlen($str);// GBK或GB2312下输出12,UTF-8下输出18而我们在判断字
幻星宇 阅读(226) |
摘要: php中setcookie函数用法详解: php手册中对setcookie函数讲解的不是很清楚,下面是我做的一些整理,欢迎提出意见。 语法: bool setcookie(string name[,string value[,int expirel[,string path[,string domain[,int secure]]]]]. 参数介绍: 第一个:name,必选参数,这个是cookie的变量名,可以通过$_COOKIE['user']调用变量名为user的cookie. 第二:value,可选参数,这个cookie变量的值,比如说setcookie(“user”,“
幻星宇 阅读(166) |
摘要: 要用到短信平台的缘故,短信每条又有字数的限制,而短信平台的服务端又不会自己分析。 短信平台的后台会自己分割,但api却有没这个功能。在网上找了一点时间,发现都不怎样。 后来就自己想了个办法,算是原创吧。 只是用截取加替换的功能。functionsmssubstr($string,$length){if(strlen($string)127?$string[$i].$string[++$i]:$string[$i];}return$}for($i=1;$i&=$$i++){${'smscontent'.$i}=smssubstr($message
幻星宇 阅读(51) |
摘要: 1 /** 2 +---------------------------------------------------------- 3 * 字符串截取,支持中文和其他编码 4 +---------------------------------------------------------- 5 * @static 6 * @access public 7 +---------------------------------------------------------- 8 * @param string $st...
幻星宇 阅读(207) |
摘要: 安装pixel1.安装node.js wget http://nodejs.org/dist/v0.6.1/node-v0.6.1.tar.gz 本地测试下载的是这个版本,如果要高版本的话可以找高版本的地址 tar zxvf node-v0.6.1.tar.gz ./configure 如果出现以下情况: Checking for program g++ or c++ : not found Checking for program icpc : not found ...
幻星宇 阅读(125) |
摘要: 1.获取IP地址的API新浪的IP地址查询接口:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js新浪多地域测试方法:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=218.192.3.42搜狐IP地址查询接口(默认GBK):http://pv.sohu.com/cityjson搜狐IP地址查询接口(可设置编码):http://pv.sohu.com/cityjson?ie=utf-8有道xmlhttp://www.youdao.com/
幻星宇 阅读(1016) |
摘要: 设计蜂巢IP地址查询接口:http://www.hujuntao.com/api/ip/ip.php腾讯IP地址查询接口:http://fw.qq.com/ipaddress新浪IP地址查询接口:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js搜狐IP地址查询接口:http://pv.sohu.com/cityjson谷歌IP地址查询接口:http://j.maxmind.com/app/geoip.js有道IP地址查询接口:http://www.youdao.com/smartresult-xml/search.s161
幻星宇 阅读(215) |
摘要: 为了让程序自动执行目录下的某个文件,可以配置虚拟主机中的directoryindex如: DocumentRoot &D:/var/www/& DirectoryIndex Test/index.php ServerName test.com
幻星宇 阅读(219) |
摘要: 系统默认的缓存方式是采用File方式缓存,我们可以在项目配置文件里面定义其他的缓存方式,例如,修改默认的缓存方式为Xcache(当然,你的环境需要支持Xcache)对于File方式缓存下的缓存目录下面因为缓存数据过多而导致存在大量的文件问题,ThinkPHP也给出了解决方案,可以启用哈希子目录缓存的方式。'DATA_CACHE_SUBDIR'=&true还可以设置哈希目录的层次,例如'DATA_PATH_LEVEL'=&2就可以根据缓存标识的哈希自动创建多层子目录来缓存。S方法支持缓存有效期,在很多情况下,可能我们并不需要有效期的概念,或者使用文件方
幻星宇 阅读(293) |
摘要: prefork模式这个多路处理模块(MPM)实现了一个非线程型的、预派生的web服务器,它的工作方式类似于Apache 1.3。它适合于没有线程安全库,需要避免线程兼容性问题的系统。它是要求将每个请求相互独立的情况下最好的MPM,这样若一个请求出现问题就不会影响到其他请求。这个MPM具有很强的自我调节能力,只需要很少的配置指令调整。最重要的是将MaxClients设置为一个足够大的数值以处理潜在的请求高峰,同时又不能太大,以致需要使用的内存超出物理内存的大小。worker模式此多路处理模块(MPM)使网络服务器支持混合的多线程多进程。由于使用线程来处理请求,所以可以处理海量请求,而系统资源的开
幻星宇 阅读(65) |
摘要: 首先要知道error_reporting()函数是用来设置错误级别并返回当前级别的。它有14个错误级别,如下:1 E_ERROR致命的运行时错误。错误无法恢复过来。脚本的执行被暂停2 E_WARNING非致命的运行时错误。脚本的执行不会停止4 E_PARSE编译时解析错误。解析错误应该只由分析器生成8 E_NOTICE运行时间的通知。16 E_CORE_ERROR在PHP启动时的致命错误。这就好比一个在PHP核心的E_ERROR32 E_CORE_WARNING在PHP启动时的非致命的错误。这就好比一个在PHP核心E_WARNING警告64 E_COMPILE_ERROR致命的编译时错误。这就
幻星宇 阅读(223) |
摘要: 1 /** 2 * 获取客户端IP地址 3 * @return string 4 */ 5 function get_client_ip() { 6 if(getenv('HTTP_CLIENT_IP')){ 7 $client_ip = getenv('HTTP_CLIENT_IP'); 8 } elseif(getenv('HTTP_X_FORWARDED_FOR')) { 9 $client_ip = getenv('HTTP_X_FORWARDED_FOR'); 10 } elseif(getenv('REMOT.
幻星宇 阅读(86) |
摘要: 要提取google搜索的部分数据,发现google对于软件抓取它的数据屏蔽的厉害,以前伪造下 USER-AGENT就可以抓数据,但是现在却不行了。利用抓包数据发现,Google判断了cookies,当你没有cookies的时候,直接返回302跳转,而且是连续几十个302跳转,根本抓不了数据。因此,在发送搜索命令时,需要先提取cookies并保存,然后利用保存下来的这个cookies再次发送搜索命令即可正常抓数据了。这其实和论坛的模拟登录一个道理,先POST登录,获取cookies并保存,然后利用这个cookies访问就可以了。一、定义Cookie存储路径必须使用绝对路径$cookie_jar
幻星宇 阅读(205) |
摘要: 终于能够通过phpmailer使用gmail账号发送邮件了phpmailer(现在的版本是1.73)是一个很好用的工具,可以很方便的使用php语言发送邮件,支持smtp及验证,我们一直都用它。但是,由于gmail的smtp采用了ssl连接:Outgoing Mail (SMTP) Server – requires TLS: smtp.gmail.com (use authentication)Use Authentication: YesUse STARTTLS: Yes (some clients call this SSL)Port: 465 or 587使用phpmailer就无法正常
幻星宇 阅读(277) |
摘要: 一,用phpmailer发送邮件查看复制打印?IsSMTP(); // 经smtp发送 $mail-&Host = &smtp.163.com&; // SMTP 服务器 $mail-&SMTPAuth = // 打开SMTP 认证 $mail-&Username = &&; // 用户名 $mail-&Password = &**********&; // 密码 $mail-&From = $ // 发信人 $mail-&From
幻星宇 阅读(779) |
摘要: 当返回json格式的数据时,不想自己组织结果集,可以利用类的call方法。json类: 1 _data = array(); 8 } 9 10 public function __call($method, $args) {11 if (!isset($args[0]))12 13 $this-&_data[$method] = $args[0];14 15 return $16 }17 18 function __set($pro...
幻星宇 阅读(68) |
摘要: 之前的博文已经对PHPExcel导出excel文件做了简单的总结,现对他读取excel做以下总结。(对数据量不会很大的建可以采用web直接用此方法读取,如果数据量会很大的话,还是建议web只做上传功能,读取、处理还是放后台吧。PHPExcel还是比较耗费时间、内存的。)实例代码: 1 //首先导入PHPExcel 2 require_once 'PHPExcel.php'; 3 4 $filePath = &test.xlsx&; 5 6 //建立reader对象 7 $PHPReader = new PHPExcel_Reader_Excel2007();
幻星宇 阅读(4908) |
摘要: ---恢复内容开始---$_POST:通过 HTTP POST 方法传递的变量组成的数组。是自动全局变量。$GLOBALS['HTTP_RAW_POST_DATA'] :总是产生$HTTP_RAW_POST_DATA变量包含有原始的 POST 数据。此变量仅在碰到未识别 MIME 类型的数据时产生。$HTTP_RAW_POST_DATA对于enctype=&multipart/form-data&表单数据不可用。也就是说基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是一样的。但是如果post过来的数据不是
幻星宇 阅读(153) |
摘要: 1.安装oracle客户端,不管是32位还是64位;当系统是32位的时候,要装32位的客户端,PL/SQL才能给连上数据库2.php.ini中对应的oracle相关扩展打开。php_openssl.dll,php_oci8.dll,如果装的是11g的话,不打开php_oci8.dll,而是php_oci8_11g.dll。如果有php_oracle.dll的话,就打开。3.写个测试代码进行连接测试,如下:&?php$dbconn = oci_connect('test','test',&(DESCRIPTION=(ADDRESS=(PROTOCO
幻星宇 阅读(430) |
摘要: php源码:/root/soft/php-5.3.4php安装: /usr/local/php[root@ns root]# phpizeCannot find config.m4.Make sure that you run '/usr/local/php/bin/phpize' in the top level source directory of the module[root@ns root]# phpizeCannot find config.m4.Make sure that you run '/usr/local/php/bin/phpize'
幻星宇 阅读(347) |
摘要: php连接访问Oracle是用过oci函数,以下是整理的文档1.安装Apache和php包yum install -y httpd php*2.下载Oracle组件oracle-instantclient-basic-10.2.0.4-1.i386.rpmoracle-instantclient-sqlplus-10.2.0.4-1.i386.rpmoracle-instantclient-devel-10.2.0.4-1.i386.rpmoracle-instantclient-odbc-10.2.0.4-1.i386.rpm#rpm -ivh oracle-instantclient*(四
幻星宇 阅读(220) |
摘要: 在实际应用中可以做用户权限的应用我这里说到的权限管理办法是一个普遍采用的方法,主要是使用到”位运行符”操作,& 位与运算符、| 位或运行符。参与运算的如果是10进制数,则会被转换至2进制数参与运算,然后计算结果会再转换为10进制数输出。它的权限值是这样的2^0=1,相应2进数为”0001″(在这里...
幻星宇 阅读(70) |
摘要: 最近需要用到发送邮件的功能,原本是用PHP自带的mail()函数发送的。php mail()这个方法非常简单、方便、易用,但是除了网易邮箱、QQ邮箱、GMAIL邮箱等常用的邮箱可以收到之外,经测试HOTMAIL、TOM、LIVE等邮箱是收不到此类邮件的。所以就转而使用PHPMailer这个强大的邮件发送类。使用官方自带的一些例子,有些会报 Mailer Error: Could not instantiate mail function. 这个错误。参考了一些资料之后,还是自己写了一个方法。代码很简单,就不多解释了。 1 function mailto($nickname, $address,
幻星宇 阅读(84) |
摘要: park,unpark,ord这3个函数,在我们工作中,用到它们的估计不多。 我在最近一个工作中,因为通讯需要用到二进制流,然后接口用php接收。当时在处理时候,查阅不少资料。因为它们使用确实比较少,也很少朋友工作中会用到 它们。 在工作中,我也逐渐了解到park,unpark,ord对于二进制字节处理的强大。 下面我逐一介绍它们。park,unpark,ord函数使用介绍 park函数说明:本函数用来将资料压缩打包到位的字符串之中。语法:pack(format,args+)参数描述format必需。规定在包装数据时所使用的格式。args+可选。规定被包装的一个或多个参数。字符说明a将字符串空
幻星宇 阅读(191) |
摘要: 在做web应用时候,通过web扩展名判断上存文件类型,这个是我们常使用的。有时候我们这样做还不完善。可能有些人上存一些文件,但是他通过修改 扩展名,让在我们的文件类型之内。 单实际访问时候又不能展示(因为扩展名与文件内容不符)。下面这个php类,可能能够给我们带来帮助。注意: 当然首先要对上传的文件进行第一步的简单检测,如文件大小,后缀格式,名字乱码限制等;然后才是后面一步对内容的检测。一、php检测类首先说明下,上面文件头与文件类型映射关系来自网上,如果你有新的文件需要检查,只需要将映射加入即可。 如果你需要知道文件头信息,可以通过工具:winhex打开标准文件查找。如:代码: 1 http
幻星宇 阅读(80) |
摘要: 1. Accept:告诉WEB服务器自己接受什么介质类型,*/* 表示任何类型,type/* 表示该类型下的所有子类型,type/sub-type。 2. Accept-Charset: 浏览器申明自己接收的字符集 Accept-Encoding: 浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate) Accept-Language::浏览器申明自己接收的语言语言跟字符集的区别:中文是语言,中文有多种字符集,比如big5,gb2312,gbk等等。 3. Accept-Ranges:WEB服务器表明自己是否接受获取其某个实体的一部分...
幻星宇 阅读(66) |
摘要: 首先导入类库:require_once 'PHPExcel.php'; require_once 'PHPExcel\IOFactory.php'; require_once 'PHPExcel\Reader\Excel5.php';然后创建读取对象$objReader = PHPExcel_IOFactory::createReader('Excel5');//use excel2007 for 2007 format $objPHPExcel = $objReader-&load($uploadfile);//加载读取的
幻星宇 阅读(215) |
摘要: Win下apache出现问题:“No services installed”安装完apache之后(不是按照默认路径安装的,我的是 D:\ )右下方那个小羽毛图标是没有启动的,左键不好使,而且提示“No services installed”,提示服务器没有被安装。解决办法是:我的安装路径是:D:\Program Files\ApacheSoftware Foundation\Apache2.21、打开cmd定位到:D:\Program Files\ApacheSoftware Foundation\Apache2.2\bin,bin 目录 有个apache.exe 文件2、键入: httpd
幻星宇 阅读(92) |
摘要: 首先还是下载 nginx:http://nginx.org/en/download.html php:http://windows.php.net/download/ mysql:http://dev.mysql.com/downloads/ nginx 选择zip的压缩包,如果你下了gz的压缩包你会发现你找不到一个能执行的东西,gz对应的linux系统的版本,需要编译后才能安装的 对路径要求比较严格的只有nginx,因为这东西最开始就是为了linux下部署用的 mysql这个数据库比较简易,随便下载一个exe的就可以下一步下一步的安装了,这里我用的是很久以前下的一个版本 mysql-noin
幻星宇 阅读(57) |
摘要: 配置文件中://Oracle 测试环境 'DB_TYPE' =& 'Oracle', // 数据库类型 'DB_HOST' =& '172.0.0.0', // 服务器地址 'DB_NAME' =& '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.0.0.0)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = vasd) ) )', // 数据
幻星宇 阅读(84) |
摘要: php.ini中output_buffering = off 关闭php的缓存implicit_flush = Off php不会立即输出到浏览器。如果是ON,相当于每次ECHO 立刻执行一个FLUSHoutput_buffering 相当于一层缓冲。还有一层缓冲是php与浏览器之间的。ob_flush函数相当于把php缓冲写入php如浏览器输出层那个缓冲,当然如果 output_buffering=off的话,也就是相当于没有php缓冲,直接就写入了php与浏览器缓冲。flush函数是把php输出层缓冲立即 给浏览器,输出在浏览器上。output_buffering=off 相当于每次ech
幻星宇 阅读(40) |
摘要: 有25幅作品拿去投票,一次投票需要选16幅,单个作品一次投票只能选择一次。前面有个程序员捅了漏子,忘了把投票入库,有200个用户产生的投票序列为空。那么你会如何填补这个漏子?当然向上级反映情况。但是我们这里讨论的是技术,就是需要生成1-25之间的16个不重复的随机数,去填补。具体怎么设计函数呢?将随机数存入数组,再在数组中去除重复的值,即可生成一定数量的不重复随机数。程序如下:01程序运行如下:12,3,4,6,7,8,9,10,11,12,13,16,20,21,22,24补充几点说明:生成随机数时用了mt_rand()函数。这个函数生成随机数的平均速度要比rand()快四倍。去除数组中的重
幻星宇 阅读(198) |
摘要: M方法和D方法的区别ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类。使用M方法如果是如下情况,请考虑使用 M方法:对数据表进行简单的 CURD 操作而无复杂的业务逻辑时只有个别的表有较为复杂的业务逻辑时,将 M方法 与实例化 CommonModel 类进行结合使用M方法 甚至可以简单看着就是对参数表名对应的数据表的操作:$User = M('User');使用D方法如果是如下情况,请考虑使用 D方法:需要使用 ThinkPHP 模型中一些高级功能如自动验证功能(create()方法中实现)
幻星宇 阅读(77) |
摘要: 先说前端使用 jQuery 时怎么区分: jQuery发出 ajax 请求时,会在请求头部添加一个名为X-Requested-With的信息,信息内容为:XMLHttpRequest 在后端可以使用 $_SERVER[&HTTP_X_REQUESTED_WITH&]来获取。(注意:中划线换成了下划线,不区分大小写) 由此,我们可以这样来判断是否为 ajax 请求://php判断是否为ajax请求if(isset($_SERVER[&HTTP_X_REQUESTED_WITH&])&&strtolower($_SERVER[&HT
幻星宇 阅读(80) |
摘要: 你还在用浪费时间又浪费内存的递归遍历无限极分类吗,看了该篇文章,我觉得你应该换换了。这是我在OSChina上看到的一段非常精简的PHP无限极分类生成树方法,巧在引用,整理分享了。function generateTree($items){ $tree = array();foreach($items as $item){if(isset($items[$item['pid']])){ $items[$item['pid']]['son'][]=&$items[$item['id']];}else{ $tree[]=&amp
幻星宇 阅读(505) |
摘要: 在httpd.cong中LoadModule php5_module modules/libphp5.so #这一行php5安装的时候就已经自动添加上了AddType application/x-httpd-php .php .phtml AddType application/x-httpd-php-source .phps
幻星宇 阅读(88) |
摘要: 1.安装必要的软件 引用 我用的是apahce2.0.61版,可以直接官方提供的绑定openssl的apache. 文件名是:apache_2.0.61-win32-x86-openssl-0.9.7m.msi 否则单独安装windows下的openssl比较麻烦,要么找到一个第三方的编译结果,要么自己编译 2. 生成服务器证书 引用 安装好在bin目录下有一个 openssl.exe文件,用来生成证书和密钥。 1). 生成服务器用的私钥文件server.key 进入conf目录,执行命令行 openssl genrsa -out server.key 1024 有文档指出使用 openssl
幻星宇 阅读(87) |
摘要: 没有安装apache的情况:首先安装SSL,再编译安装Apache,再配置证书即可1.下载apache和openssl网址:http://www.apache.org http://www.openssl.org2.解压(先进入到安装包的位置,和你解压的文件名字是不是和这个一样)#tar zxvf httpd-2.0.54.tar.gz#tar zxvf openssl-0.9.7g.tar.gz3.编译安装openssl,这个软件主要是用来生成证书:#cd openssl-0.9.7g#./config#make#make test#make install把openssl放进内核目录下,使
幻星宇 阅读(125) |
摘要: 看到此标题或许你会说是否是多此一举,直接判断扩展名不就知道文件类型了吗,但是扩展名很容易伪造,这样就绕过了判断。大部分的文件都会将一个特殊的数字或字符存放在文件的特定位置里(开始处的2个字节)/** * @author Mckee * @link http://www.phpddt.com *///使用 'b' 来强制使用二进制模式$fp = fopen('qq.jpg','rb');//只读二进制文件,前2个字节就可以判断文件类型$bin = fread($fp,2);fclose($fp);//将二进制的字符串转化为格式化的字符串,这里转化为
幻星宇 阅读(114) |
摘要: PHPMailer是一个用于发送电子邮件的PHP函数包。它提供的功能包括:*.在发送邮时指定多个收件人,抄送地址,暗送地址和回复地址*.支持多种邮件编码包括:8bit,base64,binary和quoted-printable*.支持SMTP验证*.支持冗余SMTP服务器*.支持带附件的邮件和Html格式的邮件*.自定义邮件头*.支持在邮件中嵌入图片*.调试灵活*.经测试兼容的SMTP服务器包括:Sendmail,qmail,Postfix,Imail,Exchange等*.可运行在任何平台之上调用方法:view sourceprint?01.require(&class.phpm
幻星宇 阅读(128) |
摘要: PHP有如下几个拦截器:1、__get($property)功能:访问未定义的属性是被调用2、__set($property, $value)功能:给未定义的属性设置值时被调用3、__isset($property)功能:对未定义的属性调用isset()时被调用4、__unset($property)功能:对未定义的属性调用unset()时被调用5、__call($method, $arg_array)功能:调用未定义的方法时被调用拦截器,顾名思义,它就“拦截”未定义的属性和方法,有点类似__autoload和__construct等方法,应用案例如下(摘自网络):// 若访问一个未定义的属性
幻星宇 阅读(177) |
摘要: 第一步:查看一下/etc/httpd/conf/httpd.conf中下面两个模块是否开启:LoadModule deflate_module modules/mod_deflate.soLoadModule headers_module modules/mod_headers.so查看方法:cat /etc/httpd/conf/httpd.conf | grep mod_deflatecat /etc/httpd/conf/httpd.conf | grep mod_headers如果前面有#则需要你开启,删除即可!开启gzip会消耗额外cpu资源第二步:在apache配置文件最后添加:S
幻星宇 阅读(32) |
摘要: PHP在这方面应该说是比较弱,如果只用php去实现可以如下:但是当我执行脚本的时候,即使我关闭了浏览器,我根本就没法去停止这段程序了,所以你需要一个执行脚本的开关,你可以用外部文件引入的方法来实现,在while循环的时候,include开关变量即可。那么就可以这样实现:建立外部引入变量文件 switch.php 内容如下:改良脚本如下:这个脚本只是测试可行,具体效率应该不高,对于lamp,你完全可以使用crontab来实现
幻星宇 阅读(55) |
摘要: function rand_array($n){ $array=range(1,$n); shuffle($array); return $}
幻星宇 阅读(46) |
摘要: 定义和用法shuffle() 函数把数组中的元素按随机顺序重新排列。若成功,则返回 TRUE,否则返回 FALSE。注释:本函数为数组中的单元赋予新的键名。这将删除原有的键名而不仅是重新排序。注释:自 PHP 4.2.0 起,不再需要用 srand() 或 mt_srand() 函数给随机数发生器播种,现已被自动完成。语法shuffle(array)参数描述array必需。规定要使用的数组。例子 &Dog&, &b& =& &Cat&, &c& =& &Horse&);shuffle
幻星宇 阅读(41) |
摘要: 语法range(first,second,step)参数描述first必需。规定数组元素的最小值。second必需。规定数组元素的最大值。step可选。规定元素之间的步进制。默认是 1。注释:该参数是 PHP 5 中加入的。说明该函数创建一个数组,包含从 first 到 second (包含 first 和 second)之间的整数或字符。如果 second 比 first 小,则返回反序的数组。例子 1输出:Array([0] =& 0[1] =& 1[2] =& 2[3] =& 3[4] =& 4[5] =& 5)例子 2输出:Array([0] =&g
幻星宇 阅读(40) |
摘要: echochunk_split(base64_encode(file_get_contents('base64.txt'))); 例子 1本例分隔每个字符,并添加 &.&:输出:H.e.l.l.o. .w.o.r.l.d.!.例子 2本例将在六个字符之后分割一次字符串,并添加 &...&:输出:Hello ...world!...
幻星宇 阅读(95) |
摘要: 针对apache,支持mode_rewrite可以通过在目录先建立.htaccess去掉url中index.php.htaccess内容如下:RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-f #这个重要,保证css,js正常加载RewriteCond $1 !^(index\\.php|images|robots\\.txt)RewriteRule ^(.*)$ /index.php/$1 [L]然后找到application/config/config.php文件:将$config['index_page']=&
幻星宇 阅读(55) |
摘要: $http_type=((isset($_SERVER['HTTPS'])&&$_SERVER['HTTPS']=='on')||(isset($_SERVER['HTTP_X_FORWARDED_PROTO'])&&$_SERVER['HTTP_X_FORWARDED_PROTO']=='https'))?'https://':'http://';
幻星宇 阅读(1299) |
摘要: 函数说明:array glob ( string $pattern [, int $flags ] )功能:寻找与模式匹配的文件路径,返回包含匹配文件(目录)的数组(注:被检查的文件必须是服务器系统的,不能用于远程文件)参数说明:第一个参数:匹配模式;第二个可选参数:GLOB_MARK - 在每个返回的项目中加一个斜线GLOB_NOSORT - 按照文件在目录中出现的原始顺序返回(不排序)GLOB_NOCHECK - 如果没有文件匹配则返回用于搜索的模式GLOB_NOESCAPE - 反斜线不转义元字符GLOB_BRACE - 扩充 {a,b,c} 来匹配 'a','b
幻星宇 阅读(113) |
摘要: 之前写了一篇文章关于linux下apache虚拟主机配置,配置那是相当简单:ServerAdmin DocumentRoot /var/www/html/blogServerName blog.phpddt.comErrorLog /var/log/httpd/bl...
幻星宇 阅读(45) |
摘要: 收集php利用正则过滤各种标签,空格,换行符的代码:查看代码打印01$str=preg_replace(&/\s+/&,& &,$str);//过滤多余回车02$str=preg_replace(&//si&,&&,$str);//注释04$str=preg_replace(&//si&,&&,$str);//过滤DOCTYPE05$str=preg_replace(&//si&,&&,$str);//过滤html标签06$str=pr
幻星宇 阅读(389) |
摘要: PHP中的有个非常好的函数:nl2br(),将文本框中的换行转换为HTML页面的,但是如何实现将html中的换行符转换为文本框中的换行符呢?下面这几个方法将能够帮你解决这个问题。PHP版将html中的换行符转换为文本框中的换行符:查看代码打印1functionbr2nl($text){2returnpreg_replace('//i','',$text);3}或者:查看代码打印1functionbr2nl($text){2$text=preg_replace('//i',chr(13),$text);3returnpreg_replace(&#3
幻星宇 阅读(206) |
摘要: php header()函数的具体作用是向客户端发送一个原始 HTTP 标头[Http Header]到客户端。标头 (header) 是服务器以 HTTP 协义传 HTML 资料到浏览器前所送出的字串,在标头与 HTML 文件之间尚需空一行分隔。在任何实际的输出被发送之前调用 header() 函数(在 PHP 4 以及更高的版本中,您可以使用输出缓存来解决此问题)。下面举一些比较常见的header用法示例:(1)使用header实现重定向(等价于代替用户在地址栏输入url)。查看代码打印1查看代码打印01三秒后自动跳转';08/*09说明:若等待时间为0,则与header(&quo
幻星宇 阅读(31) |
摘要: 抽象类的应用就是典型的模版模式抽象类的应用就是典型的模版模式,先声明一个不能被实例化的模版,在子类中去依照模版实现具体的应用。我们写这样一个应用:银行计算利息,都是利率乘以本金和存款时间,但各种存款方式计算利率的方式不同,所以,在账户这个类的相关方法里,只搭出算法的骨架,但不具体实现。具体实现由各个子类来完成。01interest = getInterestRate();10//用于计算利息的算法:本金*利率,但是利率的算法实现并没有在这个类中实现11$this-&interest =$this-&getFund() *$this-&getInterestRate();12r
幻星宇 阅读(47) |
摘要: 可以理解为对抽象类的扩展抽象类继承另外一个抽象类时,不用重写其中的抽象方法。抽象类中,不能重写抽象父类的抽象方法。这样的用法,可以理解为对抽象类的扩展。下面的例子,演示了一个抽象类继承自另外一个抽象类时,不需要重写其中的抽象方法。01抽象类在被继承后,其中的抽象方法不能被重写。如果发生重写,系统会报错。01程序运行结果:1Fatal error: Can't inheritabstractfunctionUser::setSal() (previously declaredabstractin VipUser) in E:\PHPProjects\test.php on line 14
幻星宇 阅读(53) |
摘要: 平台描述:Windows下,使用PHP套件 xampp,因为是测试玩,所以没在服务器 Linux 环境中配置。1. 首先,将 nginx.conf 中的PHP配置注释去掉。01# pass the PHP scripts to FastCGI server listening on 127.0.0.1:#location ~ \.php$ {04#05# fastcgi_pass 127.0.0.1:9000;06# fastcgi_index index.07# fastcgi_param SCRIPT_FILENAME /scripts$fa
幻星宇 阅读(77) |
摘要: 1. 文件访问控制利用 httpd.conf 中的 Order、Files 及 FilesMatch 命令实现的访问控制可以满足大部分要求,但是当用户被拒绝时,他们看到的是硕大的“403 Forbidden”,如果你不想伤害用户的感情,就需要显示一些别的东西,通过Rewrite就可以实现这个特性:1RewriteEngine On2RewriteCond %{REQUEST_FILENAME} !^(.+)\.css$3RewriteCond %{REQUEST_FILENAME} !^(.+)\.js$4RewriteCond %{REQUEST_FILENAME} !special.zip
幻星宇 阅读(67) |
摘要: 1. 将 .htm 页面映射到 .php1Options +FollowSymlinks2RewriteEngine on3RewriteRule ^(.*)\.htm$ $1.php [NC]如果正则不是很熟悉,可以参考下《正则表达式入门》。一些注意事项:该RewriteRule能够将.htm静态页面映射到.php动态页面。如果通过.htm进入,浏览器地址栏显示的是.htm扩展名,但服务器上实际执行的是.php。必须保证服务器上有对应的.php,否则会404。浏览器和搜索引擎可以同时通过.htm和.php访问网页。如果该目录上存在.htm,将被忽略。[NC]表示“不区分大小写”。2. 临时重
幻星宇 阅读(1160) |
摘要: Rewirte主要的功能就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范。平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等。本文将针对mod_rewrite和URL匹配的技术细节,以及RewriteCond与RewriteRule 指令格式进行探讨。Rewirte模块内部处理Rewirte模块的内部处理极为复杂,但是为了使一般用户避免犯低级错误,也让管理员能充分利用其功能,在此仍然做一下说明。Rewirte模块API阶段首先,你必须了解Apache是分若干阶段来处理HTTP请求的。Apache API对每个阶段都提供了一个hook程序。mod_rewrite使用两个ho
幻星宇 阅读(64) |
摘要: Apache的Mode Rewrite模块提供了一个基于正则表达式分析器的重写引擎来实时重写URL请求。在大多数情况下,它和.htaccess文件配合使用。就是说,.htaccess文件的一个主要功能是用来重写URL请求,那么在本小节里,我们来看看如何实现重写。mod_rewrite实现所有这些神奇功能的模块叫做mod_rewrite,请确保你的服务器安装并启用了该模块:1sudo a2enmod rewrite我们一般会把所有涉及URL重写或者重定向的代码这样放置:12# Turn on rewrite engine3Options +FollowSymlinks4RewriteEngine
幻星宇 阅读(329) |
摘要: require('./db.class.php');$DB = new db();$DB-&connect();//数据库链接header(&Content-Type: text/csv&);header(&Content-Disposition:filename=php100.csv&);$sql = &select order_sn,consignee,address,tel,mobile,email,order_amount,add_time from order_info&;//查询数据$order =
幻星宇 阅读(102) |
摘要: 很多时候我们会看到这样的代码(出自 CI 框架源码):1$class=& load_class('a','b');我们都知道其中的'&'是指引用,但是它的作用是什么呢?它能够解决什么样的问题呢?带着这些问题,我们开始了解下“引用返回”。引用返回手册里是这么写的:引用返回用在当想用函数找到引用应该被绑定在哪一个变量上面时。不要用返回引用来增加性能,引擎足够聪明来自己进行优化。仅在有合理的技术原因时才返回引用!要返回引用,使用此语法:0$obj=11// $myValue is a re
幻星宇 阅读(76) |
摘要: 从一道面试题开始在开始本节内容前,我们先来看看一道还算比较常见的PHP面试题:1$arr=array('1','2','3');23foreach($arras&$v){4}56foreach($arras$v){7}89var_dump($arr);猜一下,运行的结果会是什么呢?熟悉PHP的同学可能已经知道结果了:1array20 =& string'1'(length=1)31 =& string'2'(length=1)42 =& &string'2'(len
幻星宇 阅读(50) |
摘要: $val) { if (isset($array_2[$val])) { unset($array_1[$key]); } } return $array_1;}function runtime($mode = 0) { static $t; if (!$mode) { $t = microtime(); } $t1 = microtime(); list($m0, $s0) = explode(& &, $t); list($m1, $s1) = explode(& &, $t1); return sprintf(&%.3f&
幻星宇 阅读(83) |
摘要: $data) { $refer[$data[$pk]] = &$list[$key]; } foreach ($list as $key =& $data) { //判断是否存在parent $parantId = $data[$pid]; if ($root == $parantId) { $tree[] = &$list[$key]; } else { if (isset($refer[$parantId])) { $parent = &$refer[$parantId]; $parent[$child][] = &$list[$k...
幻星宇 阅读(758) |
摘要: $item ) { if ($item [$pid]) { if (! isset ( $t [$item [$pid]] ['parent'] [$item [$pid]] )) $t [$item [$id]] ['parent'] [$item [$pid]] = & $t [$item [$pid]]; } } return $t;}/** * * 创建子节点树形数组 * 参数 * $ar 数组,邻接列表方式组织的数据 * $id 数组中作为主键的下标或关联键名 * $pid * 数组中作为父键的下标或关联键名 * 返回 多维数组 * */fun
幻星宇 阅读(98) |
摘要: array('id'=&1,'pid'=&0,'name'=&'News_1'),2=&array('id'=&2,'pid'=&1,'name'=&'News_12'),7=&array('id'=&7,'pid'=&1,'name'=&'News_17'),3=&array('id'=&3,'pid&
幻星宇 阅读(62) |
摘要: // @param array $list 查询结果//@param string $field 排序的字段名//@param array $sortby 排序类型//asc正向排序 desc逆向排序 nat自然排序function list_sort_by($list,$field, $sortby='asc') {if(is_array($list)){$refer = $resultSet = array();foreach ($list as $i =& $data){$refer[$i] = &$data[$field];switch ($sortby)
幻星宇 阅读(76) |
摘要: ==过滤输入/输出转义过滤是Web应用安全的基础。它是你验证数据合法性的过程。通过在输入时确认对所有的数据进行过滤,你可以避免被污染(未过滤)数据在你的程序中被误信及误用。大多数流行的PHP应用的漏洞最终都是因为没有对输入进行恰当过滤造成的。有很多种方法过滤数据,其中有一些安全性较高。最好的方法是把过滤看成是一个检查的过程。请不要试图好心地去纠正非法数据,要让你的用户按你的规则去做,历史证明了试图纠正非法数据往往会导致安全漏洞。另外一个Web应用安全的基础是对输出进行转义或对特殊字符进行编码,以保证原意不变。例如,O’Reilly在传送给MySQL数据库前需要转义成O\’Reilly。单引号前
幻星宇 阅读(51) |
摘要: & /&
幻星宇 阅读(113) |
摘要: 使用系统命令是一项危险的操作,尤其在你试图使用远程数据来构造要执行的命令时更是如此。如果使用了被污染数据,命令注入漏洞就产生了。exec()是用于执行shell命令的函数。它返回执行并返回命令输出的最后一行,但你可以指定一个数组作为第二个参数,这样输出的每一行都会作为一个元素存入数组。使用方式如下:1假设ls命令在shell中手工运行时会产生如下输出:1$ ls2total 03-rw-rw-r-- 1 chris chris 0 May 21 12:34 php-security4-rw-rw-r-- 1 chris chris 0 May 21 12:34 chris-shiflett当通
幻星宇 阅读(77) |
摘要: 关于包含的一个重要问题是源代码的暴露。产生这个问题主要原因是下面的常见情况:对包含文件使用.inc的扩展名包含文件保存在网站主目录下Apache未设定.inc文件的类型Apache的默认文件类型是text/plain上面情况造成了可以通过URL直接访问包含文件。更糟的是,它们会被作为普通文本处理而不会被PHP所解析,这样你的源代码就会显示在用户的浏览器上。避免这种情况很容易。只能重组你的应用,把所有的包含文件放在网站主目录之外就可以了,最好的方法是只把需要公开发布的文件放置在网站主目录下。虽然这听起来有些疯狂,很多情形下能导致源码的暴露。我曾经看到过Apache的配置文件被误写(并且在下次启动
幻星宇 阅读(60) |
摘要: 一个比欺骗表单更高级和复杂的攻击方式是HTTP请求欺骗。这给了攻击者完全的控制权与灵活性,它进一步证明了不能盲目信任用户提交的任何数据。为了演示这是如何进行的,请看下面位于http://example.org/form.php的表单:12Please select a color:389如果用户选择了Red并点击了Select按钮后,浏览器会发出下面的HTTP请求:1POST /process.php HTTP/1.12Host: example.org3User-Agent: Mozilla/5.0 (X11; U; Linux i686)4Referer: http://example.o
幻星宇 阅读(57) |
摘要: 跨站请求伪造(CSRF)是一种允许攻击者通过受害者发送任意HTTP请求的一类攻击方法。此处所指的受害者是一个不知情的同谋,所有的伪造请求都由他发起,而不是攻击者。这样,很你就很难确定哪些请求是属于跨站请求伪造攻击。事实上,如果没有对跨站请求伪造攻击进行特意防范的话,你的应用很有可能是有漏洞的。请看下面一个简单的应用,它允许用户购买钢笔或铅笔。界面上包含下面的表单:010203Item:0408Quantity: 091011一个攻击者会首先使用你的应用以收集一些基本信息。例如,攻击者首先访问表单并发现两个表单元素item及quantity,他也同时知道了item的值会是铅笔或是钢笔。下面的bu
幻星宇 阅读(65) |
摘要: Ctype函数是PHP内置的字符串体测函数。主要有以下几种ctype_alnum-- Check for alphanumeric character(s)检测是否是只包含[A-Za-z0-9]ctype_alpha-- Check for alphabetic character(s)检测是否是只包含[A-Za-z]ctype_cntrl-- Check for control character(s)检查是否是只包含类是“\n\r\t”之类的字 符控制字符ctype_digit-- Check for numeric character(s)检查时候是只包含数字字符的字符串(0-9)cty
幻星宇 阅读(50) |
摘要: 深度防范深度防范原则是安全专业人员人人皆知的原则,它说明了冗余安全措施的价值,这是被历史所证明的。深度防范原则可以延伸到其它领域,不仅仅是局限于编程领域。使用过备份伞的跳伞队员可以证明有冗余安全措施是多么的有价值,尽管大家永远不希望主伞失效。一个冗余的安全措施可以在主安全措施失效的潜在的起到重大作用。回到编程领域,坚持深度防范原则要求您时刻有一个备份方案。如果一个安全措施失效了,必须有另外一个提供一些保护。例如,在用户进行重要操作前进行重新用户认证就是一个很好的习惯,尽管你的用户认证逻辑里面没有已知缺陷。如果一个未认证用户通过某种方法伪装成另一个用户,提示录入密码可以潜在地避免未认证(未验证)
幻星宇 阅读(63) |
摘要: 没有不会犯错的开发者,PHP的错误报告功能可以协助你确认和定位这些错误,可以提供的这些错误的详细描述,但如果被恶意攻击者看到,这就不妙了。不能让大众看到报错信息,这一点很重要。做到这一点很容易,只要关闭display_errors,当然如果您希望得到出错信息,可以打开log_errors选项,并在error_log选项中设置出错日志文件的保存路径。由于出错报告的级别设定可以导致有些错误无法发现,您至少需要把error_reporting设为E_ALL。E_ALL | E_STRICT 是最高的设置,提供向下兼容的建议,如不建议使用的提示。所有的出错报告级别可以在任意级别进行修改,所以您如果使用
幻星宇 阅读(35) |
摘要: 除了能在共享服务器上读取任意文件之外,攻击者还能建立一个可以浏览文件系统的脚本。由于你的大多数敏感文件不会保存在网站主目录下,此类脚本一般用于找到你的源文件的所在位置。请看下例:01read())26{27$size=filesize(&$dir$filename&);2829if(is_dir(&$dir$filename&))30{31$type='dir';32$filename.='/';33}34else35{36$type='file';37}3839if(is_readable(&$
幻星宇 阅读(73) |
摘要: 绝不要信任外部数据或输入关于 Web 应用程序安全性,必须认识到的第一件事是不应该信任外部数据。外部数据(outside data) 包括不是由程序员在 PHP 代码中直接输入的任何数据。在采取措施确保安全之前,来自任何其他来源(比如 GET 变量、表单 POST、数据库、配置文件、会话变量或 cookie)的任何数据都是不可信任的。例如,下面的数据元素可以被认为是安全的,因为它们是在 PHP 中设置的。1但是,下面的数据元素都是有瑕疵的。1为什么第一个变量 $myUsername 是有瑕疵的?因为它直接来自表单 POST。用户可以在这个输入域中输入任何字符串,包括用来清除文件或运行以前上传的
幻星宇 阅读(41) |
摘要: 跨站脚本攻击是众所周知的攻击方式之一。所有平台上的Web应用都深受其扰,PHP应用也不例外。所有有输入的应用都面临着风险。Webmail,论坛,留言本,甚至是Blog。事实上,大多数Web应用提供输入是出于更吸引人气的目的,但同时这也会把自己置于危险之中。如果输入没有

我要回帖

更多关于 安卓获取网页源码 的文章

 

随机推荐