php知识框架总结
篇一:php基础知识点总结
PHP语言基础简单整理
①开始结束标记的格式只有在没有判断语句时才能使用.
对表单传递的变量进行编码和解码:PHP中实现对查询字符串进行URL编码可以通过函数urlencode()实现,该函数的使用格式如下:string urlencode(string str);对URL编码后的查询字符串进行解码,可以通过urldecode()函数实现,该函数的使用格式如下:string urldecode(string str);
步骤: 第一段:建立连接------mssql_connect(server,uid,pwd);
第二段:指定database-------mssql_select_db(databasename);
第三段:执行sql------mssql_query($sql,$link);
第四段:处理记录集-------资源类型数据,格式:bof---数据---eof
第五段:以特定格式读取数据-----mssql_fetch_array()....
第六段:释放相关资源、关闭连接------mssql_free_result($result);mssql_close();
定义:$array = array("键值"="value","键值"="value","键值"="value");如果不给键值赋值,默认从0开始的int值
相关函数:(1)in_array("值",数组名); 返回bool型-----查看数组中是否存在某value值
(10)prev(数组名);----将指针向前挪动一位
(11)foreach(数组名 as $key=$value)
{
$key是键值,$value是value值,实现数组遍历
}
Cookie是在HTTP协议下,服务器或脚本可以维护客户工作站上信息的一种方式.Cookie是由Web服务器保存在客户机上的小文本文件,它可以包含有关用户的信息.无论何时用户链接到服务器,Web站点都可以访问Cookie信息.
存在server端的是session,存在client端的是cookie,它们用来存储全局变量. 设定Cookie值:setcookie("名","值");
通过Cookie数组取值:$_cookie["名"];
在PHP中可以通过$_COOKIE预定义变量访问Cookie的值.如果设置了php.ini中的register_long_arrays,那么就能够应用$_COOKIE和$HTTP_COOKIE_VARS;如果在php.ini中还设置了register_globals,那么就可以在PHP中作为全局变量使用各个Cookie值.但是,更改php.ini中的两个文件设置,容易对PHP的安全构成威胁,不推荐使用该方法,建议使用更新的$_COOKIE.
会话ID的传送
会话ID的传送有两种方式,一种是Cookie方式,另一种是URL方式.
Cookie传送方式:
这是最简单的会话方式,但是有些客户可能限制使用Cookie,如果客户限制使用Cookie的条件下,仍要继续工作,那就要通过其他方式来实现了.
URL传送方式:
在该方式中,URL本身用来传送会话,会话标志被简单地附加到URL的尾部,或者作为窗体中的一个变量来传递.例:
肯定乱码的啊
把编码都统一才行
这里改成
header("Content-Type: text/html; charset=gbk");
现在大部分具有国际化特征的软件核心字符处理都是以Unicode为基础的,在软件运行时根据当时的ocale/Lang /Codepage设置确定相应的本地字符编码设置,并依此处理本地字符.在处理过程中需要实现Unicode和本地字符集的相互转换,甚或以 Unicode为中间的两个不同本地字符集的相互转换.这种方式在网络环境下被进一步延伸,任何网络两端的字符信息也需要根据字符集的设置转换成可接受的内容.
数据库中的字符集编码问题
定位问题时常用的技巧
定位中文编码问题通常采用最笨的也是最有效的办法―在你认为有嫌疑的程序处理后打印字符串的内码.通过打印字符串的内码,你可以发现什么时候中文字符被转换成Unicode,什么时候Unicode被转回中文内码,什么时候一个中文字成了两个Unicode字符,什么时候中文字符串被转成了一串问号,什么时候中文字符串的高位被截掉了......
取用合适的样本字符串也有助于区分问题的类型.如:"aa啊aa?@aa"等中英相间,GB、GBK特征字符均有的字符串.一般来说,英文字符无论怎么转换或处理,都不会失真(如果遇到了,可以尝试着增加连续的英文字母长度).
解决各种应用的乱码问题
①.)使用标签设置页面编码
请注意,是属于HTML信息的,仅仅是一个声明,仅表明服务器已经把HTML信息传到了浏览器.
这个函数header()的作用是把括号里面的信息发到http标头.如果括号里面的内容为文中所说那样,那作用和标签基本相同,大家对照第一个看发现字符都差不多的.但是不同的是如果有这段函数,浏览器就会永远采用你所要求的xxx编码,绝对不会不听话,所以呢这个函数是很有用的.为什么会这样呢?那就得说说http标头和HTML信息的差别了:
http标头是服务器以http协议传送HTML信息到浏览器前所送出的字串.而标签是属于 HTML信息的,所以header()发送的内容先到达浏览器,通俗点就是header()的优先级高于(不知道可不可以这样讲).假如一个php页面既有header("content-type:text/html;charset=xxx"),又有,浏览器就只认前者http标头而不认meta了.当然这个函数只能在php页面内使用.
同样也留有一个问题,为什么前者就绝对起作用,而后者有时候就不行呢?这就是此时此刻呢要谈的Apache的原因了.
Apache根目录的conf文件夹里,有整个Apache的配置文档httpd.conf.
如果网页里有header("content-type:text/html;charset=xxx"),就把默认的字符集改为你设置的字符集,所以这个函数永远有用.如果把AddDefaultCharsetxxx前面加个"#",注释掉这句,而且页面里不含header("content- type..."),那这个时候就轮到meta标签起作用了.
下面列出以上的优先顺序:
..header("content-type:text/html;charset=xxx")
..AddDefaultCharsetxxx
..
如果你是web程序员,建议给你的每个页面都加个header("content-type:text/html;charset=xxx"),这样就可以保证它在任何服务器都能正确显示,可移植性也比较强.
结束语 参考:
其实php开发中的中文编码并没有想像的那么复杂,虽然定位和解决问题没有定规,各种运行环境也各不尽然,但后面的原理是一样的.了解字符集的知识是解决字符问题的基础.不过,随着中文字符集的变化,不仅仅是php编程,中文信息处理中的问题还是会存在一段时间的.