多数大学生出来选择的工作和专业无关
首页 > 专业知识

PHP网站程序乱码问题解决方法

时间:2018-09-06 18:06:57 [来源]:郑州PHP培训学校

   PHP网站程序乱码问题解决方法

  乱码一直是困扰PHP初学者的一个非常大的问题,现在总结下造成乱码的原因及解决方法:
  一、HTML页面编码:meta. http-equiv=content-type content=text/html; charset=utf-8 这里的编码要和数据库编码,及连接数据库编码;二、文件在存储编码:比如文件inde.php,改变其存储编码为所需编码。只需用EditPlus等文本编辑软件 文件另存为,在编码中选择正确的编码(这点很多人都会忽略);三、数据库编码:比如用的是phpmyadmin 选择数据库后,选择操作选项。下面有一个整理,这里面也要设置成统一的编码;四、表编码:操作和第三点类似。这里就不重复了;五、字段编码:在建表的建字段的时候,有个整理。如果内容有汉字,就一定要改成统一的编码;六、连接数据库时mysql_select_db()后面,要加一句 mysql_query( set names utf8 );七、 (刚遇到的)本地测试成功后的网站,传到网上去,会有乱码。可能会是在本地导出数据时没有选择正确的编码,所以才会在导入到web上后有乱码问题。
  其实只要细心点,就能完全解决php乱码问题,难的不是技术,而是细心。
  PHP面向对象分析设计的13条军规
  (1)所有数据都应该隐藏在所在的类的内部。
  (2)类的使用者必须依赖类的共有接口,但类不能依赖它的使用者。
  (3)尽量减少类的协议中的消息。
  (4)实现所有类都理解的最基本公有接口[例如,拷贝操作(深拷贝和浅拷贝)、相等性判断、正确输出内容、从ASCII描述解析等等]。
  (5)不要把实现细节(例如放置共用代码的私有函数)放到类的公有接口中。
  如果类的两个方法有一段公共代码,那么就可以创建一个防止这些公共代码的私有函数。
  (6)不要以用户无法使用或不感兴趣的东西扰乱类的公有接口。
  (7)类之间应该零耦合,或者只有导出耦合关系。也即,一个类要么同另一个类毫无关系,要么只使用另一个类的公有接口中的操作。
  (8)类应该只表示一个关键抽象。
  包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包影响,则将对包中的所有类产生影响,而对其他的包不 造成任何影响 .
  (9)把相关的数据和行为集中放置。
  设计者应当留意那些通过get之类操作从别的对象中获取数据的对象。这种类型的行为暗示着这条经验原则被违反了。
  (10)把不相关的信息放在另一个类中(也即:互不沟通的行为)。
  朝着稳定的方向进行依赖.
  (11)确保你为之建模的抽象概念是类,而不只是对象扮演的角色。
  (12)在水平方向上尽可能统一地分布系统功能,也即:按照设计,顶层类应当统一地共享工作。
  (13)在你的系统中不要创建全能类/对象。对名字包含Driver、Manager、System、Susystem的类要特别多加小心。
  规划一个接口而不是实现一个接口。
  PHP开发中文件操作疑难问答
  前言:
  PHP中对各类数据库的操作有着支持,对文件的操作也同样有着很丰富的操作方法,很多朋友现在的操作还是基于文件操作可是有的时候在操作文件的时候还存在不少的困惑和疑点,以下是我在日常编写过程中碰到的以及坛上朋友所碰到的关于文件操作的一些问题收藏吧。
  问:如何新建一个文件?
  答:
  1、使用fopen("要建立的文件名","参数"),参数可选w,w+,a,a+2、使用exec("echo '' > 要建立的文件名");这样是使用系统方式建立这个文件,你还可以使用touch这个Linux命令来建立问:为什么我无法建立文件?
  答:
  1、如果你使用了fopen建立文件,是否正确的使用了参数2、系统权限问题,请询问你的WebMASTER你的FTP目录是否有写的权限3、FTP权限问题,你要确认你的PHP文件所要写文件所在目录要有写的权限,也就是你的FTP软件登陆后other组要有写这个权限,如果没有请修改权限后尝试
  问:如何将文件读入数组?
  答:使用file函数
  问:如何将文件全部读出?
  答:
  1、使用fread($fp);
  2、如果你的PHP版本>=4.3.0的话可以使用file_get_contents();问:如何判断文件是否存在?
  答:使用file_exists();
  再问:为什么不使用fopen()来判断呢?
  答:原因是有时候是因为权限问题导致fopen返回的数据引导我们错误的判断问:为什么当我读取一个WEB页面的时候出错?
  答:
  1、可能是你的传递参数错,当读取WEB页面的时候你只可以使用r方式读取页面2、确保你要读取的WEB页面可以访问
  问:我如何才能获得文件的相关属性?
  答:PHP提供了一组获得文件属性的方法,例如 filemtime(),fileowner(),filegroup(),filectime(),fileatime()...详细的使用请参阅手册。
  问:PHP打开文件后是否可以象C一样进行文件“游标”的定位呢?
  答:可以的,使用fseek();
  问:我想在访问文件的时候不允许其他人也访问此文件,怎么办?
  答:
  1、你可以采用其他方面程序限制用户接入文件操作的页面2、使用flock();详细的参数以及使用方法请参阅手册问:如何删除文件内第一行,或指定一行数据?
  答:
  PHP并没有提供这样的操作方法,不过我们可以通过组合使用,以下代码演示我们将删除文件"test.dat"中的第三行数据(test.dat 文件中数据不止三行)<?php
  $filename="test.dat";//定义操作文件
  $delline=3; //要删除的行数
  if(!file_exsits($filename)){
  die("指定文件未发现!操作中断!");
  }
  $farray=file($filename);//读取文件数据到数组中for($tmpa=0;$Tmpa
  if(strcmp($Tmpa+1,$delline)==0){
  //判断删除的行
  continue;
  }
  //重新整理后的数据
  $newfp.=$farray[$Tmpa]."\r\n";
  }
  $fp=@fopen($filename,"a") or die("写方式打开文件 $filename 失败");//我们以写的方式打开文件@fputs($fp,$newfp) or die("文件写入失败");@fclose($fp);
  ?>
  以上代码演示的是删除一行文件,不过你如果仔细的看的话,其实也给你提供了其他的文件操作的相关提醒~问:当我试图打开一个不存在的文件的时候,我如何不让错误显示出来以避免我的路径泄露!!
  答:在你要打开文件的方法前增加@符号用来屏蔽错误,@是PHP提供的错误信息屏蔽的专用符号或您可以在这个要操作的步骤前增加(通常是在页首)error_reporting(0);用来屏蔽页面内所有错误信息的显示一个不推荐的方法就是去修改php.ini(ISP除外)。
  问:我使用的是虚拟主机,我如何防止其他用户窃取我的数据?
  答:建议ISP修改php.ini中的open_basedir进行限制,不推荐的ISP设置是将fopen,file等文件操作加入disable_function中。
  问:为什么我用PHP建立文件后我FTP登陆要删除这些文件无法删除??
  答:主要是因为PHP建立的文件归属WEB用户组,也就是建立的文件,并非是你FTP用户的!!!这个问题的解决就是,使用PHP程序的chmod,unlink等方式进行处理,建议用户在使用PHP建立文件的时候记得chmod文件权限,建议为777问:如何使用文本文件作为数据仓库?有的留言本,论坛之类的都是使用这个的啊!
  答:其实这个主要还是使用了file,结合explode进行数据读取与分割的典型范例而已。
  问:如何更改文件名?
  答:rename();
  问:如何删除文件?
  答:unlink(); exec("del(rm -vf) filename");注:rm -vf为linux下使用
  问:如何清空文件?
  答:使用fopen(filename,"w");或exec("echo '' > filename");问:如何编辑文件内容?
  答:我记得我以前回答过一个删除文件内容的,其实编辑内容在删除内容的基础上,进行变量替换就可以了。希望你可以向上找找,将我上面的continue修改为替换变量数据就可以了。
 

上一篇: PHP实现超简单的SSL加密解密方法

下一篇:PHP函数fwrite安全用于二进制文件