1.找到未定义变量进行处理
代码如下 | 复制代码 |
addslashes(htmlspecialchars(isset($_POST[$str])?$_POST[$str]:'')); |
2.把错误给过滤掉
代码如下 | 复制代码 |
@$page=$_GET["page"]; |
3.修改php.ini配置文件进行所有错误过滤
代码如下 | 复制代码 |
error_reporting = E_ALL & ~E_NOTICE 或者 ini_set( ‘display_errors’, ’0′ ); |
4.在程序中直接加一个处理
代码如下 | 复制代码 |
if (!$cfg['debug']) { |
5.在php文件最开始处加如下一句代码
代码如下 | 复制代码 |
error_reporting(0); |
总结:
上面所有方法中最好的方法是方法一,这样在对程序性能上是有很好的帮助,如果你页面错误过多直接过滤掉会影响性能的哦,我以前介绍过一篇这样的文章大家可在本地搜索。
php页面空白我们从几个方法入手,一个是php把错误提醒功能给关闭了,另一个是程序没有返回结果,当然如果是使用了php操作数据库我们可以数据库报错未进行判断处理,下面我们从这三个方法来给大家分析php页面空白不报错解决办法。1.php程序不报错
windows系统,我们在找到apache安装目录下的php.ini
display_errors = Off 改成 display_errors = On
linux系统 PHP配置文件路径:/uer/local/php/etc/php.ini
display_errors = Off 改成 display_errors = On
还有程序中是不是加有
error_reporting = E_ALL; /* 最严格的错误报告级别, 开发阶段可开启 */
error_reporting = E_ALL &~ E_NOTICE /* 除了notice以外的错误 */
error_reporting = E_ERROR | E_PARSE | e_CORE_ERROR /* 只考虑致命的运行时错误,新解析错误
如果有我们把它们取消掉
2.php程序执行没有结果返回
例子
function abc()
{
echo 'http://www.111cn.net';
}
你直接执行页面就是空白页面了,我们需要执行调用函数
echo abc();才会有输出
3.数据库sql错误,但没有给出错误报告提示
例子
$sql ="select * from a where aaaaf=ccc ";
mysql_query( $sql );
这样执行sql有错误但也没有错误提示我们只要在后在加上mysql_error();即可
$sql ="select * from a where aaaaf=ccc ";
mysql_query( $sql ) or die(mysql_error());
友情提示
有些时间我们是页面编码错误也有可能是页面空白哦,不过开启了错误提醒功能还是会显示出来哦。
curl乱码有两个方面的原因一个是因为我们采集页面的php页面编码与远程文档编码不致导致的,另一种可能是页面进入了gzip压缩传输导致的,那么我们要如何解决这些问题呢?gzip压缩传输导致乱码
今天在采集京东的时候发现返回的数据是乱码,网上说可能和压缩有关,看了一下京东的头信息的确进行gzip加密,好吧,那就解压吧
代码如下 | 复制代码 |
$return = gzdecode($return); //将return的字符进行解码 另一种解决办法 curl_setopt($ch, CURLOPT_ENCODING, 'gzip'); |
页面编码问题
代码如下 | 复制代码 |
mb_convert_encoding($str, 'utf-8', 'GBK,UTF-8,ASCII');就行了 |
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及以上版本时,以上设置才生效。
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查询磁盘到数据结果的编码 |
这样页面问题也就解决了