开发
文章平均质量分 56
iteye_380
这个作者很懒,什么都没留下…
展开
-
curl 和 file_get_contents 抓取网页乱码的解决之道
今天用 curl_init 函数抓取搜狐的网页时,发现采集的网页时乱码,经过分析发现原来是服务器开启了gzip压缩功能。只要往函数 curl_setopt 添加多个选项 CURLOPT_ENCODING 解析 gzip 就可以正确解码了。 还有如果抓取的网页时 GBK 编码,但是脚本确是 utf-8 编码,还得把抓取的网页再用函数 mb_convert_encoding 转换下。 ...原创 2016-04-21 11:12:21 · 208 阅读 · 0 评论 -
PHP 中用 htmlspecialchars() 对特殊字符进行编码的弊端
当对表单传递过来的参数用 htmlspecialchars 对特殊字符(& ,' ," ,< ,> )进行编码时(由于插入数据库安全过滤的需要),会出现如下问题。 如果用户上传了一个文件是带有特殊字符的,如 ' ,文件名保存到数据库就会发生以下问题。 如果你服务器端的 PHP 代码是通过 $_GET['id'] 间...原创 2016-05-04 09:42:40 · 664 阅读 · 0 评论 -
PHP SQLite 简介
一、什么是 SQLite SQLite 是一款轻型的数据库,是遵守ACID标准,它占用资源非常的低,可能只需要几百K的内存就够了。它能够支持 Windows/Linux/Unix 等等主流的操作系统,同时能够支持很多程序语言,如C、PHP、Java等。 它适用于一些中小型的软件的数据库,如嵌入式开发、路由器、桌面程序。 二、特点 ...原创 2016-05-04 09:51:56 · 214 阅读 · 0 评论 -
PHP 调试工具Xdebug
1.Xdebug介绍 Xdebug是一个开放源代码的PHP程序调试器(即一个Debug工具),可以用来跟踪,调试和分析PHP程序的运行状况。 2.Xdebug安装及配置1、下载Xdebug组件到Xdebug官方网站 www.xdebug.org下载相对应的PHP版本的xdebug组件。如果你用的是 wamp ,则已经集成到里面了,可以用 phpinfo() 进...原创 2016-05-04 10:08:13 · 89 阅读 · 0 评论 -
PHP 调用 Oracle 存储过程出现 not all variables bound 原因
今天发现使用 PHP 调用 Oracle 存储过程总是出现这样的一个错误。 ORA-01008: not all variables bound 后来折腾了很久,发现是变量名写错了。 <?php$conn = oci_connect('SCOTT','TIGER') or die;// 建立连接 if (!$conn) { $e = oci_er...原创 2016-05-07 10:16:57 · 6648 阅读 · 0 评论 -
文件上传 PHP 总是获取空值的原因
前不久在为公司的项目瓜藤网(http://www.guaten.com/)的后台作一个扩展的时候,商品属性可以上传图片。 发现后台 PHP 获取的文件总是空值,花了很长时间才发现是这个原因: PHP 能否上传文件以及上传多少个文件,取决于两个值:file_uploads 和 max_file_uploads。 发现在 HTML 文档中 <inpu...原创 2016-05-07 10:44:51 · 831 阅读 · 0 评论 -
PHP 连接 Oracle 出现中文乱码问题
数据库用 oracle,当 PHP连接 Oracle 的时候,如果指定字符集,会出现中文乱码。 查PHP手册,oci_pconnect 的第四个参数为 charset,只需设置这参数即可。 首先获取 Oracle 的字符集,运行“SELECT * FROM V$NLS_PARAMETERS;”,变量NLS_CHARACTERSET对应的就是我们需要的字符集,比如我这里就是 “...原创 2016-05-10 09:40:24 · 1487 阅读 · 0 评论 -
ECSHOP 如何开发一个模块后台管理
就以在公司网站做的一个功能为例子:要与第三方平台进行积分迁移与兑换。此时需要增加一个后台管理功能:1)查看与搜索相关记录。2)添加与编辑相关记录。 当用 ECSHOP 添加一个后台功能时,会涉及到添加和修改一些文件。如下图, 说明:guatenghui 是系统 ECSHOP 的目录。rate_info_list.php,rate_list.htm,rate_info.htm 是新增主文件和模板...原创 2016-05-12 16:50:33 · 456 阅读 · 0 评论 -
JavaScript 与 PHP 进行 RSA 加密解密实例
RSA 即“非对称加密算法”。它有3个特征: 乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。甲方获取乙方的公钥,然后用它对信息加密。乙方得到加密后的信息,用私钥解密。在开发应用的时候,你可能会碰到这样的需求:密码不能够明文传输,又无法用 HTTPS 协议。这时就可以用到 RSA 来解决这个需求了。以下是 JAVASCRIPT 调...原创 2016-05-14 11:47:12 · 269 阅读 · 0 评论 -
Android 调用微信登录出现 错误提示:{"errcode":40029,"errmsg":"invalid code"} 原因
在开发安卓应用微信登录时,安卓应用发起微信授权登录请求,微信用户允许授权安卓应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数; 但是发现 https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=aut...原创 2016-05-18 10:46:46 · 8174 阅读 · 0 评论 -
PHP 设置动态网页在浏览器的缓存
很多人可能不知道,动态网页在浏览器也是可以缓存的。下面就以 PHP 脚本为例子,阐述如何设置动态网页在浏览器缓存 <?php//设置网页过期时间为1小时$duetime = 3600*24*30;//获取浏览器会向服务器传送 Last-Modified 报头$modify_time = $_SERVER['HTTP_IF_MODIFIED_SINCE'...原创 2016-05-30 14:47:31 · 405 阅读 · 0 评论 -
用 PHP 自带函数 fputcsv 和 fgetcsv 来导出报表和导入报表
PHP 自带函数 fputcsv 可以实现打印报表(Excel)功能。如果你的对报表格式要求不是很高,那么 fputcsv 是很好的选择。它执行效率高,不需要第三方库,用起来很方便。 一、用 fputcsv 导出报表 <?php$list = array("George,John,Thomas,USA","James,Adrew,Martin,USA",...原创 2016-05-30 18:04:46 · 535 阅读 · 0 评论 -
PHP 设置 HTTP 头信息导出 Excel 报表
不需要用到 fputcsv 函数来生成报表。只需设置相应的格式和HTTP头信息,就能够生成报表了。附上代码: <?phpheader("Content-type: application/vnd.ms-excel; charset=utf-8");header("Content-Disposition: attachment; filename=excel.xl...原创 2016-06-14 16:29:39 · 362 阅读 · 0 评论 -
微信公众平台redirect_uri 参数错误原因
发现原来是因为没有配置网页授权 ,设置如下: 图 1 图 2原创 2016-12-08 18:19:32 · 274 阅读 · 0 评论 -
PHP5中使用PDO连接数据库
1.什么是PDO? PDO(PHP Data Objects) 是 PHP 的一个扩展,定义了一系列轻量级的、通用性的、跨数据库的访问接口。 在以前,如果你用的是MySQL数据库,要打开 php_mysql.dll 的一个扩展,然后用 PHP 提供的 MySQL 函数来访问数据库;如果你用的是 MSSQL,就打开 php_mssql.dll 的扩展,用 PHP 提供的 MSSQL...原创 2017-02-25 21:20:12 · 154 阅读 · 0 评论 -
PHP 中的 Socket 函数
Socket 就是一种通信机制,类似于银行、电信这些部门的电话客服部门。打电话时,对方会分配一个坐席代表回答你的问题,客服部门就相当于 Socket 的服务器端,你就相当于客户端。在通话结束前,如果有人想找到和你通话的坐席代表是不可能的,因为你们正在通信,客服部门的电话交换机也不会重复分配。 Socket 函数的原型定义如下: SOCKET socket( int af, in...原创 2017-03-17 15:28:59 · 273 阅读 · 0 评论 -
PHP 超强分页类
分页这个功能一直在WEB应用中是经常遇到的,在服务器端处理不是什么大问题,麻烦的是在页面中处理是一件麻烦的事。有什么便捷的方法没有呢?今天就分享一个很强悍的分页类。 点击这里下载 page.class.php 源代码用法: <?php require_once 'page.class.php'; $page = new page(array(...原创 2016-04-29 09:51:05 · 153 阅读 · 0 评论 -
PHP 无法开启 OCI8 扩展原因
今天刚好有个需求,要用 PHP 把数据写入远程 Oracle 数据库,所以要用到 OCI8 扩展。但总是无法开启,查阅了大量资料才知道原来是因为本地机器没安装 Oracle 数据库, 系统缺少Oracle的几个关键DLL造成的,可以通过安装Oracle Instant Client 来添加这些DLL。 Oracle Instant Client下载地址如下:http://www.o...原创 2016-04-29 09:42:02 · 1645 阅读 · 1 评论 -
PHP 设置动态网页在浏览器的缓存
很多人可能不知道,动态网页在浏览器也是可以缓存的。下面就以 PHP 脚本为例子,阐述如何设置动态网页在浏览器缓存<?php//设置网页过期时间为1小时$duetime = 3600*24*30;//获取浏览器会向服务器传送 Last-Modified 报头$modify_time = $_SERVER['HTTP_IF_MODIFIED_SINCE'];//当浏...原创 2016-04-21 11:17:16 · 217 阅读 · 0 评论 -
PHP curl_init 设置HTTP服务器认证
使用 PHP 的 cURL 库去抓取网页时,有时会遇到 HTTP 服务器需要进行身份验证的情况,这时候该怎么设置呢? <?php $url = "http://192.168.0.100:8080/JM-PLATFORM/sms/MobsetSendSMS/sysId/oa/mobileNum/{$mobile_phone}/message/{$messag...原创 2016-04-26 09:59:00 · 248 阅读 · 0 评论 -
大文件上传解决方案
传统的HTML方式已经难已满足超大文件的上传。别说是100MB,50MB对服务器来说都是非常大的,服务不仅要专门开一个链接等待这个文件上传完毕,还要分配同等大小的内存来保存这个文件对服务器来讲压力相当的大。 在实际网络环境中一般10MB左右的文件都需要借助于控件来实现。一方面是因为国内的网络环境不太稳定,另一方面是从服务器的负载方面考虑。 像QQ邮箱中的超大附件上传功能,...原创 2016-04-26 10:07:04 · 222 阅读 · 0 评论 -
多台服务器实现Session的共享
我们知道,Session是针对HTTP协议的局限性而提出的一种保持客户端和服务器间保持会话连接状态的机制。 访问网站的来客会被分配一个唯一的标识符,即所谓的会话 ID。它要么存放在客户端的 cookie,要么经由 URL 传递。 Session 的存储方式默认是以文件的形式存放在本地的一个硬盘目录中,所以当Session比较多时,磁盘读取文件会比较慢。还有一点就是对于大...原创 2016-04-26 10:16:33 · 420 阅读 · 0 评论 -
Cookie 跨域与P3P协议
关于Cookie跨域一个比较形象的例子就是Google Adsense,Google 可以在你的域名设置Cookie,但是你无法访问到Google 设置的Cookie,它只供 Google 访问。 一个简单例子: 步骤1:编辑 hosts 文件,加入测试域名 127.0.0.1 www.atest.com 127.0.0.1 www.btest.com 步骤2:文档根目录下,新建 a...原创 2016-04-26 10:19:43 · 154 阅读 · 0 评论 -
CURL 模拟登陆并获取数据
在做采集程序时,有时我们要抓取一些登录才能访问的页面。但是有时即使我们登录成功了,却还是无法抓取相关页面,这是为什么呢? 嗯,最有可能的原因是没把登录成功后的 cookie 一并传递过去。 对于一些安全防范措施不是做得很高的网站,我们可以通过 PHP 的函数 curl_setopt 来登录的。<?php//在指定目录中建立一个具有唯一文件名的文件。如果该目录不存在,...原创 2016-04-26 10:22:04 · 182 阅读 · 0 评论 -
微信登录获取 openid 失败原因
今天再开发网站微信登录的时候,用 curl_init 无法获取 openid,代码如下 $code = isset($_GET['code']) ? trim($_GET['code']) : ''; $url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.WX_APPID.'&...原创 2016-04-27 09:27:02 · 14789 阅读 · 0 评论 -
PHP 5 文字图片混合水印与缩略图
一、水印制作 1.水印文字 PHP 中为图片打上水印文字主要是通过 GD 库提供的 imagettftext() 函数来实现的。 其过程为:载入图片 =》 调好水印文字的颜色 =》 打上水印 <?php$img = 'Desert.jpg';//图像的路径。这里以 Windows 7 自带的一幅沙漠的图片为例$img_info = geti...原创 2016-04-27 09:29:20 · 151 阅读 · 0 评论 -
PHP 5 中图片验证码的制作
一、应用场景 在 WEB 网站中,图片验证码经常被用来防止恶意地用户注册、发帖等场景。在 PHP 中,图片验证码主要是通过 GD 库提供的 API 来完成的。 二、实现的方法 验证码一般都是随机的数字和字母组合的,可以通过随机函数,十六进制函数 dechex 简单实现。最关键的问题还是怎样生成图片。 <?php//生成随机数-》创建图片-...原创 2016-04-27 09:32:54 · 113 阅读 · 0 评论 -
浏览器下载文件,PHP服务器端的处理
在做Web开发时,用户下载附件是经常遇到的一种情况。在HTML页面中,我们只要给个链接就可以了,但在服务器端要做怎样的处理呢? 以下的代码是用PHP语言写的,当用户用浏览器下载文件时,服务端所要做的处理。不管用Java还是.Net,基本原理是一样的,涉及的都是关于Http协议。$file_path = ROOT_PATH . '/uploads/acc...原创 2016-04-27 09:40:03 · 322 阅读 · 0 评论 -
PHP 获取远程图片(文件)并把它保存到本地
// 获取远程图片并把它保存到本地,确定您有把文件写入本地服务器的权限// 变量说明:// $url 是远程图片的完整URL地址,不能为空。// $filename 是可选变量: 如果为空,本地文件名将基于时间和日期// 自动生成.function grab_image($url,$filename='') { if($url=='') { r...原创 2016-04-27 09:49:10 · 520 阅读 · 0 评论 -
PHP 在服务器端用curl_init()上传文件
在客户端上传文件,这是Web开发经常碰到的情景。这里不再赘述。这里我们要详细阐述的是如何在服务端上传文件到别的服务器。 这种场景在要同步多台服务器的资源经常遇到,如要把用户上传的图片从一台服务器上传到其它服务器。 其实,在服务器端上传文件不是一件很难的事,只要用PHP的curl_init()就可以做到。 &l...原创 2016-04-28 09:28:16 · 431 阅读 · 0 评论 -
很强的 PHP 图片处理类
* 基本图片处理,用于完成图片缩入,水印添加* 当水印图超过目标图片尺寸时,水印图能自动适应目标图片而缩小* 水印图可以设置跟背景的合并度源代码在最后下载。例子: <?php//JPG格式require_once('lib/thumb.class.php');$t = new ThumbHandler();// 基本使用$t->setSrcImg(...原创 2016-04-28 09:37:27 · 283 阅读 · 0 评论 -
PHP XML 的 DOMDocument 读取功能
1、XML常识知识补充 XML(eXtensible Markup Language)即可扩展标记语言,它与HTML一样,都是属于SGML标准通用标记语言。XML是Internet环境中跨平台的,依赖于内容的技术,是独立于软件和硬件的信息传输工具。不同的应用程序都能够访问您的数据,不仅仅在 HTML 页中,也可以从 XML 数据源中进行访问。 XML与HTML的设计区...原创 2016-04-28 09:41:11 · 287 阅读 · 0 评论 -
PHP 服务端伪 Ajax 请求
有时候,你可能有这样的需求,我们的A程序在处理客户端的请求时,想要以用户的身份给我们的B程序发送一个请求,但是又不想等待它的请求结果,有什么样的方法来解决这样的情景呢? 这时候,我们必须以socket的方式来建立一个链接,然后把我们的请求数据以Get或者Post的方式传递过去,而无须等待它的响应结果。这个类似于Ajax请求,不会阻塞当前A程序的执行。 ...原创 2016-04-28 09:44:56 · 220 阅读 · 0 评论 -
使用 Socket 抓取数据
要在客户端操作 Socket ,可使用 fsockopen、socket_create、stream_socket_client 等函数实现。如果是PHP 5,建议使用 stream_socket。 fsockopen 实现长连接。Client 方与 Server 方先建立通信连接,连接建立后不断开,然后再进行报文发送和接收。 使用 Socket 获取数据的实现,GET 方法。...原创 2017-03-17 16:40:17 · 1438 阅读 · 0 评论