解决php curl获取网页内容提示405 method not allowed状态码
1.php curl ipv4使用例子
代码如下 | 复制代码 |
/** |
上面代码在ipv4是没有任何问题了,如果在了ipv6网站就会返回405 method not allowed状态码了,那么我们查看了php手册发现只要简单的修改一下即可。
以上为我编写的一个基本curl访问的方法,因为我这里需要通过使用IPv6的方式,所以加了相应的选项,相信大家能看的明白,平时经常用到的选项上面都有出现,大家根据需要摘取。
405/Method Not Allowed,表示不支持请求的方法,这个错误不常见。
导致403错误是要是由于curl默认是用post方式进行提交访问的,post方式在此域名下是没有权限的,如我在测试www.111cn.net的时候就出现了此问题,在我修改为get的方式,并且增加了header头后,即可正常访问,个人推测,或许是亚马逊那边基本上都是采用get的方式,才会被认为是人为的点击,对post做了相应屏蔽。
ipv6增加了如下代码:
代码如下 | 复制代码 |
//设置Header头 |
命令行的形式为:
curl -v www.111cn.net
IPV6下curl超时问题
代码如下 | 复制代码 |
<?php $ch = curl_init(); |
注:curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4) 只有在php版本5.3及以上版本,curl版本7.10.8及以上版本时,以上设置才生效。
gzip压缩传输导致乱码
今天在采集京东的时候发现返回的数据是乱码,网上说可能和压缩有关,看了一下京东的头信息的确进行gzip加密,好吧,那就解压吧
代码如下 | 复制代码 |
$return = gzdecode($return); //将return的字符进行解码 另一种解决办法 curl_setopt($ch, CURLOPT_ENCODING, 'gzip'); |
页面编码问题
代码如下 | 复制代码 |
mb_convert_encoding($str, 'utf-8', 'GBK,UTF-8,ASCII');就行了 |
phpmyadmin界面乱码
效果如我们的中文表都是乱码了(注意:我使用的是国外的linux空间了,使用国内的没问题)
出现这个问题我们一可以不使用国外主机现成的phpmyadmin了,我们自己下载一个phpmyadmin上传上去,这样一般可以解决问题,如果不行我们参考下面办法
phpmyadmin乱码解决
1. 因为MySQL的默认编码是latin1,所以首先我们需要修改一下PHPMyAdmin的编码转换。修改libraries目录下面的select_lang.lib.php文件,将
代码如下 | 复制代码 |
[indent] 'utf-8' => 'utf8', 修改成 'utf-8' => 'latin1', [/indent] |
2. 接下来还要修改一下页面的编码显示,将
代码如下 | 复制代码 |
[indent] 'zh-gb2312' => array('zh|chinese simplified', 'chinese_simplified-gb2312', 'zh'), 修改成 'zh-gb2312-utf-8' => array('zh|chinese simplified', 'chinese_simplified-gb2312', 'zh'), [/indent] |
也就是在zh-gb2312后面增加-utf-8,这样页面编码就支持UTF-8了。
3. 首先选择zh-gb2312-utf-8进入PHPMyAdmin,这个时候浏览GB2312编码的数据正常,但是浏览UTF-8的数据是乱码。如果浏览UTF-8的数据的话,进入首页,然后在Language里面选择zh-utf-8就可以了
php页面中文乱码
如果是程序页面错误我们可参考一面方法
数据库中,所有表和有中文的字段指定使用编码:utf8_unicode_ci,注意表和字段都需要指定!
:数据库连接的时候指定编码:
代码如下 | 复制代码 |
mysqli_query($db_conn, "SET NAMES utf8");//指定脚本到数据库的编码 mysqli_query($db_conn, "set character_set_client=utf8"); //指定mysql内部的数据到磁盘编码 mysqli_query($db_conn, "set character_set_connection=utf8");//指定mysql的连接层编码 mysqli_query($db_conn, "set character_set_results=utf8");//指定mysql查询磁盘到数据结果的编码 |
这样页面问题也就解决了
下面是一个朋友在使用yii时碰到PHP warning Illegal offset type错误问题的解决办法,有需要的朋友参考一下。一句话,错在用对象作为数组的键。比如说,以下代码就会引发这个warning:
代码如下 | 复制代码 |
$arr = array(); class a { } $o = new a; echo $arr[$o]; |
具体说来,我是在做Yii多语言站点的时候触发这个warning的,我写了一句:
代码如下 | 复制代码 |
Yii::app()->language = Yii::app()->request->cookies['lang']; |
在下面一句报错:
代码如下 | 复制代码 |
$this->_files[$category][$language]=$this->basePath.DIRECTORY_SEPARATOR.$language.DIRECTORY_SEPARATOR.$category.'.php'; 124 } Yii::app()->language = Yii::app()->request->cookies['lang']->value; |
代码如下
fsockopen函数是一个可以实现远程登录访问的一个函数了,当然也是一个相对来说比较危险的函数了,很多主机商都直接把fsockopen函数给禁用了,那么像有些cms会需要用到这个函数,像ecshop就需要使用fsockopen函数才可以与他的云中心连接了,下面我就来介绍fsockopen函数不能用的解决办法与替代函数吧。有服务器权限朋友操作非常的简单
php.ini文件,打开,查找allow_url_fopen
allow_url_fopen = On 改成 allow_url_fopen = Off
接着找disable_functions,找到
disable_functions = fsockopen 把这fsockopen删除掉。
如果你没有服务器权限,我们可以使用 pfsockopet代替了
代码如下 | 复制代码 |
$fp = fsockopen($host, 80, $errno, $errstr, 30); 修改后 $fp = pfsockopen($host, 80, $errno, $errstr, 30); |
还有些服务没就边pfsockopen函数也给干掉了,那么我们还有办法就是可以使用stream_socket_client()函数了,但stream_socket_client()参数与fsockopen有所区别了。
例子
代码如下 | 复制代码 |
$fp = fsockopen($host, 80, $errno, $errstr, 30); 改成stream_socket_client()函数后应该如下 |
哦,如果都没有就你没要想办法了估计其它办法他们也禁止了那些函数了,这样的空间商就应该换一换了哦
相关文章
- 下面本文章来给大家介绍在php中成员变量的一些对比了,文章举了四个例子在这例子中分别对不同成员变量进行测试与获取操作,下面一起来看看。 有如下4个代码示例,你认...2016-11-25
- php 获取用户IP与IE信息程序 function onlineip() { global $_SERVER; if(getenv('HTTP_CLIENT_IP')) { $onlineip = getenv('HTTP_CLIENT_IP');...2016-11-25
- php获取一个文件夹的mtime的程序了,这个就是时间问题了,对于这个问题我们来看小编整理的几个例子,具体的操作例子如下所示。 php很容易获取到一个文件夹的mtime,可以...2016-11-25
- 获取网站icon,常用最简单的方法就是通过website/favicon.ico来获取,不过由于很多网站都是在页面里面设置favicon,所以此方法很多情况都不可用。 更好的办法是通过google提供的服务来实现:http://www.google.com/s2/favi...2014-06-07
- 主要功能:获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 :$(window).width(); 获取页面的文档高度 $(document).height(); 获取页面的文档宽度 :$(document).width();...2015-10-21
- jquery中jquery.offset().top / left用于获取div距离窗口的距离,jquery.position().top / left 用于获取距离父级div的距离(必须是绝对定位的div)。 (1)先介绍jquery.offset().top / left css: 复制代码 代码如下: *{ mar...2013-10-13
- 1、先讲讲JQuery的概念,JQuery首先是由一个 America 的叫什么 John Resig的人创建的,后来又很多的JS高手也加入了这个团队。其实 JQuery是一个JavaScript的类库,这个类库集合了很多功能方法,利用类库你可以用简单的一些代...2014-05-31
- 当来访者浏览器语言是中文就进入中文版面,国外的用户默认浏览器不是中文的就跳转英文页面。 <?php $lan = substr( $HTTP_ACCEPT_LANGUAGE,0,5); if ($lan == "zh-cn") print("<meta http-equiv='refresh' c...2015-11-08
- 这篇文章主要介绍了C#获取字符串后几位数的方法,实例分析了C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 如果是为了取到tagName后再进行判断,那直接用下面的代码会更方便: $(element).is('input') 如果是要取到标签用作到别的地方,可以使用一下代码: $(element)[0].tagName 或: $(element).get(0).tagName...2014-05-31
- 复制代码 代码如下:$nodes = @$xpath->query("//*[@id='main_pr']/img/@src");$prurl = $nodes->item(0)->nodeValue;...2013-10-04
- 腾讯视频怎么放到自己的网页上?这个问题是一个基本的问题,要把腾讯视频放到自己的网页有许多的办法,当然一般情况就是直接使用它们的网页代码了,如果你要下载资源再放到...2016-09-20
- 本文为代码分享,也是在工作中看到一些“大牛”的代码,做做分享。 具体是这样的,如下一个二维数组,是从库中读取出来的。 代码清单: 复制代码 代码如下: $user = array( 0 => array( 'id' => 1, 'name' => '张三', 'ema...2014-06-07
- 现实中我们经常看到这样的说明,排名不分先后,按姓名首字母进行排序。这是中国人大多数使用的排序方法。那么在php程序中该如何操作呢?下面就分享一下在php程序中获取汉字拼音的首字母的方法,在网上搜到的大多数是有问题的...2015-10-23
- 本篇文章是对使用C#获取系统特殊文件夹路径的解决方法进行了详细的分析介绍,需要的朋友参考下...2020-06-25
- 网上也有很多类似的方法,不过都存在这样那样的不严谨的问题,本文就不一一分析了,这里只给出最正确的利用php 获取文件扩展名(文件后缀名)的方法。 function get_extension($filename){ return pathinfo($filename,PATHIN...2015-10-30
- 这篇文章主要介绍了基于JavaScript实现网页倒计时自动跳转代码 的相关资料,需要的朋友可以参考下...2015-12-29
- 这篇文章主要介绍了基于JavaScript获取鼠标位置的各种方法 ,需要的朋友可以参考下...2015-12-18
- 这篇文章主要介绍了C#获取变更过的DataTable记录的实现方法,对初学者很有学习借鉴价值,需要的朋友可以参考下...2020-06-25
- 大家用百度搜索的时候,可能会发现,结果链接用的还是百度的链接,点击之后才会跳转到另外一个页面,另外一个页面的真实链接如何获取到呢?? 通过分析发现: 可以看出,返回...2016-05-19