防止纯PHP页面中文乱码技巧
出现乱码大部分是由于编码方式的不一致导致的,其中主要有四个地方不一致就可能存在这个可能:
1、页面文件的编码方式(.html,.php等)
2、html.head中指定浏览器的编码方式
3、MySql数据库传输的编码方式
4、Apache字符集
在只有PHP代码的页面,做JS弹窗的时候,如果弹窗内容含有中文,可能会出现乱码的问题,
解决办法,一行代码:
页面中文乱码
代码如下 | 复制代码 |
header(“Content-Type: text/html; charset=utf-8"); |
数据库是文乱码
代码如下 | 复制代码 |
|
注意:
1、此代码必须放在文件最上面, ‘<?php’之后;
2、charset值要看整个网站编码,如果是gb2312,则填gb2312。
错误提示
提示信息:Warning: Failed to write session data (files).
Please verify that the current setting of
session.save_path is correct () in Unknown on line 0
解决办法
代码如下 | 复制代码 |
session.save_path = "D:/phprun/tmp" |
这个为自定义文件夹 指向错误导致,系统默认不会出现,提示有时还有可能是目录没有写的权限哦,所以大家给权限就可以了。
由于PHP的工作机制,它并没有一个daemon线程来定期的扫描Session信息并判断其是否失效,当一个有效的请求发生时,PHP 会根据全局变量 session.gc_probability和session.gc_divisor的值,来决定是否启用一个GC, 在默认情况下,session.gc_probability=1, session.gc_divisor =100也就是说有1%的可能性启动GC(也就是说100个请求中只有一个gc会伴随100个中的某个请求而启动).
PHP垃圾回收机制的工作就是扫描所有的Session信息,用当前时间减去session最后修改的时间,同session.gc_maxlifetime参数进行比较,如果生存时间超过gc_maxlifetime(默认24分钟),就将该session删除。
但是,如果你Web服务器有多个站点,多个站点时,GC处理session可能会出现意想不到的结果,原因就是:GC在工作时,并不会区分不同站点的session.
为了服务器安全考虑很多主机商禁用了php的fsockopen函数,昨天进博客,使用cos-html-cache生成静态文件,尼玛提示:
Warning: fsockopen() has been disabled for security reasons in D:...cos-html-cachecos-html-cache.php on line 35
换了其他版本的cos-html-cache,还是不行。后来找到下面的方法。 = =、(结果不行,因为函数都被禁用了。)
大家试下,很少有我这样的情况的,用其他替代函数。
一、如何禁用fsockopen()
下面是两种常用的禁用fsockopen的方法。
1、修改php.ini,将 disable_functions = 后加入 fsockopen
2、修改php.ini,将 allow_url_fopen = On 改为 allow_url_fopen = Off
二、如何解决fsockopen函数被禁用
1、如果服务器没有同时禁用pfsockopen,那么直接将fsockopen函数替换为pfsockopen。
具体操作:搜索程序中的字符串 fsockopen( 替换为 pfsockopen( 。示例如下
修改前:
代码如下 | 复制代码 |
$fp = fsockopen($host, 80, $errno, $errstr, 30); 修改后: $fp = pfsockopen($host, 80, $errno, $errstr, 30); |
2、如果服务器同时禁用了pfsockopen,那么用其他函数代替,如stream_socket_client()。注意:stream_socket_client()和fsockopen()的参数不同。
具体操作:搜索程序中的字符串 fsockopen( 替换为 stream_socket_client( ,然后,将原fsockopen函数中的端口参数“80”删掉,并加到$host。示例如下
修改前:
代码如下 | 复制代码 |
$fp = fsockopen($host, 80, $errno, $errstr, 30); 修改后 $fp = stream_socket_client($host."80", $errno, $errstr, 30); |
3、如果PHP版本低于5.0,fsockopen被禁用,又没有stream_socket_client()怎么办呢?自己写一个函数实现fsockopen的功能,参考代码:
代码如下 | 复制代码 |
function b_fsockopen($host, $port, &$errno, &$errstr, $timeout) { $ip = gethostbyname($host); $s = socket_create(AF_INET, SOCK_STREAM, 0); if (socket_set_nonblock($s)) { $r = @socket_connect($s, $ip, $port); if ($r || socket_last_error() == EINPROGRESS) { $errno = EINPROGRESS; return $s; } } $errno = socket_last_error($s); $errstr = socket_strerror($errno); socket_close($s); return false; } |
具体操作:
1.首先找到使用fsockopen函数的代码段,将上面代码加至其上端,搜索该代码段中的字符串 fsockopen( 替换为 b_fsockopen(
。
2.因为fsockopen函数返回文件指针所以可以被文件函数操作,但是这个b_fsockopen函数没能返回文件指针,需要继续修改代码段:用socket_read( 替换掉 fread( ,用socket_write( 替换掉fwrite( ,用socket_close( 替换掉fclose( 。
解决方案二:
fsockopen大多数应用是的获取远程页面数据,对于获取远程页面这种应用,PHP还有其他函数可以完美替代:
方法1:
代码如下 | 复制代码 |
<?php $str = file("http://www.111cn.net"); $count = count($str); for ($i=0;$i<$count;$i++){ $file .= $str[$i]; } echo $file; ?> |
方法2:
代码如下 | 复制代码 |
<?php $str = file_get_contents("http://www.111cn.net"); echo $str; ?> |
你打开phpmyadmin就会提示 :无法载入 mcrypt 扩展,请检查 PHP 配置错误
出现以下几种情况后可能会造成运行phpmyadmin程序 提示“无法载入 mcrypt 扩展,<br />请检查 PHP 配置”的 错误提示
windows解决办法
1、没有正确安装Mysql数据库,在系统服务中Mysql相关的服务没有启动 (请查看正确安装Mysql的方法)
2、在系统的 system32(C:windowssystem32) 目录下缺少 libmcrypt.dll文件,解决方法是找到php目录下的libmcrypt.dll,并将libmcrypt.dll复制到C:windows system32目录中,然后重新启动Web服务。
3、在C:windows目录下的php.ini文件中,没有将“;extension=php_mcrypt.dll”中的前面一个“;”去 掉,所以不能使用相应功能,解决方法是打开php.ini文件
代码如下 | 复制代码 |
找到 ;extension=php_mcrypt.dll 改成 extension=php_mcrypt.dll //去掉前面的;使之生效 |
linux系统下解决办法
一:无法加载 mcrypt扩展,请检查您的 PHP 配置
代码如下 | 复制代码 |
|
二:配置文件现在需要一个短语密码
1、用编辑器打开目录phpmyadmin/libraries中的config.default.php文件
2、查找下面这行:$cfg['blowfish_secret'] = ‘这里就是需要的短语密码’;(短语密码请随意填写)
会出现这个问题,是在配置phpmyadmin填写认证方法时,即下面这行:
$cfg['Servers'][$i]['auth_type'] = ‘cookie’;
在此有四种模式可供选择,cookie,http,HTTP,config
config方式即输入phpmyadmin的访问网址即可直接进入,无需输入用户名和密码,是不安全的,不推荐使用。
当该项设置为cookie,http或HTTP时,登录phpmyadmin需要数据用户名和密码进行验证,,具体如下:
PHP安装模式为Apache,可以使用http和cookie;
PHP安装模式为CGI,可以使用cookie
本文章来给大家介绍关于无法启动此程序,因为计算机丢失php_mbstring.dll的解决办法,希望此方法对各位同学有所帮助。在使用命令行创建Zend FrameWork项目的时候,计算机提醒“无法启动此程序,因为计算机丢失php_mbstring.dll。尝试重新安装该程序以解决问题。”解决这个问题的方法是:
sublime text2 保存php文件提示“无法启动此程序,因为计算机中丢失php_pdo.dll 尝试重新安装该程序以解决此问题”
请教大神这是什么原因
装的插件有
首先,你要确定你的PHP已经包含php_mbstring.dll文件,可以查看php安装目录下的ext文件下是否有此文件,没有请根据php版本下载合适的php_mbstring.dll文件,并放进ext目录下。
然后,修改php.ini配置。去掉“;extension=php_mbstring.dll”和“;
extension=php_exif.dll”前的分号,并保证php_mbstring.dll在php_exif.dll之前加载,因为加载php_exif.dll需要用到php_mbstring.dll。然后保存php.ini,并重启web服务器。
相关文章
- 最近做了个扫描二维码得到vcard的项目,遇到一个问题,有一部分生成完的二维码,用android系统手机扫描后得到的vcard中的中文姓名是乱码,经过比对发现,这部分vcard中ORG这个...2016-11-25
- 今天在写一个vbs的时候,发现中文乱码,后来写好代码正常运行的代码压缩一下给了同事,发现报无效字符,经过验证后发现原来是编码的问题导致,这里就为大家分享一下...2020-06-30
关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)
最近两天做项目总是被乱码问题困扰着,这不刚把mysql中文乱码问题解决了,下面小编把我的解决方案分享给大家,供大家参考,也方便以后自己查阅。首先:用show variables like “%colla%”;show varables like “%char%”;这两条...2015-11-24- 在 php 中使用 json_encode() 内置函数(php > 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它。这个函数的功能是将数值转换成json数据存储格式。<?php$arr = array ( 'Name'=>'希亚', 'Age'...2015-11-08
- 对于乱码这个问题php开发者几乎都会有碰到过,我们下面主要是介绍了php文件乱码和页面乱码。PHP页面转UTF-8编码问题 1.在代码开始出加入一行: header("Content-Type: text/html;charset=utf-8"); 2.PHP文件编码问题...2015-10-21
解决HttpPost+json请求---服务器中文乱码及其他问题
这篇文章主要介绍了解决HttpPost+json请求---服务器中文乱码及其他问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-22- 用到iconv函数把抓取来过的utf-8编码的页面转成gb2312, 发现只有用iconv函数把抓取过来的数据一转码数据就会无缘无故的少一些 代码如下 复制代码 ...2016-11-25
- 本文章来给大家介绍php mail发邮件标题中文乱码的问题解决办法,希望到此类问题的朋友可进入参考。 当使用下面的PHP语句发送电子邮件的时候,如果编码和接收邮箱编码...2016-11-25
- PHPWord是一个可以把相关文件生成word文档的插件了,但由于是老外开发的对于gbk支持不好,所以我们在导出带有中文的word时会出现乱码问题,下面本文就PHPWord中文乱码问题...2016-11-25
- 如果ASCii码大于0xa0就是半个汉字;了解substr()、mb_substr()、ord()。 现在常用的编码格式是UTF8,GBK,GBK2312,BIG5。GBK是GBK2312的升级。现在我开发中遇到的基本都...2016-11-25
- 这篇文章主要介绍了iis伪静态中文url出现乱码的解决办法,需要的朋友可以参考下...2017-07-06
- 这篇文章主要介绍了.Net获取URL中文参数值的乱码问题解决方法,总结分析了针对URL参数传递中出现的乱码问题与相应的解决方法,具有一定参考借鉴价值,需要的朋友可以参考下...2021-09-22
php move_uploaded_file 中文乱码问题或上传失败问题
php是外国人做的,在中文支持上有些地方做得不完美,就在我们文件上传时就发现了,上传中文竟然不成功, 下面我们来看看实例与解决方法吧。 */ $filepath ='upfile/'; if (...2016-11-25- 本文简单介绍如何防止外部恶意调用ajax接口,以达到节省流量,减轻服务器压力的目的。...2016-04-15
- PHP程序设计中中文编码问题曾经困扰很多人,导致这个问题的原因其实很简单,每个国家(或区域)都规定了计算机信息交换用的字符编码集,如美国的扩展 ASCII 码,中国的 GB2312-...2016-11-25
- php 图片水印中文乱码解决方法是要转入一款中文字体摩洛哥 以了,如果你在生成水印有中文时,又没载入相关的字体的话,那中文肯定会是乱码的,如果是英语字母那载不载入都没...2016-11-25
解决idea开发遇到javascript动态添加html元素时中文乱码的问题
这篇文章主要介绍了解决idea开发遇到javascript动态添加html元素时中文乱码的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-09-29- 这篇文章主要介绍了AndroidStudio4.0日志中文乱码问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-14
- 导入php中文乱码问题一般就是字符集编码问题了,只有字符集编码问题才会导致中文乱码了,这是我总结了所有在php开发中看到中文乱码问题的根本原因了,下面我整理了一些关于...2016-11-25
- 用C#操作mysql时, 插入数据中文都是乱码,只显示问号,数据库本身使用的是utf-8字符...2020-06-25