您的位置:首页 > 理论基础 > 计算机网络

【随时更新】http和php相关知识点积累

2014-12-14 11:03 309 查看
一、http session和cookie
可以看做是服务器端缓存数据的全局区域

1.客户端第一次请求网页,服务器端会生成一个session id,跟数据一起带给客户端,客户端下次再打开这个网页(浏览器未关闭),通过这个session id在服务器端查询到相关数据返回。加快速度。

2.多个php文件都可以访问的全局数据区

cookie作用类似,其中一个区别是session服务器端超时时间短,浏览器关闭后一小段时间就失效。cookie时间长,即使浏览器关闭也有效。

二、php中$_REQUEST、$_POST、$_GET的区别和联系

1. $_REQUEST

PHP 的 $_REQUEST 变量包含了 $_GET, $_POST 以及 $_COOKIE 的内容。

php中$_REQUEST可以获取以POST方法和GET方法提交的数据,但是速度比较慢

2. $_GET

用来获取由浏览器通过GET方法提交的数据。GET方法他是通过把参数数据加在提交表单的action属性所指的URL中,值和表单内每个字段一一对应,然后在URL中可以看到,但是有如下缺点:

1. 安全性不好,在URL中可以看得到

2. 传送数据量较小,不能大于2KB。

3. $_POST

用来获取由浏览器通过POST方法提交的数据。POST方法他是通过HTTP POST机制,将表单的各个字段放置在HTTP HEADER内一起传送到action属性所指的URL地址中,用户看不到这个过程。他提交的大小一般来说不受限制,但是具体根据服务器的不同,还是略有不同。相对于_GET方式安全性略高

4. $_REQUEST、$_POST、$_GET 的区别和联系

$_REQUEST["参数"]具用$_POST["参数"] $_GET["参数"]的功能,但是$_REQUEST["参数"]比较慢。通过post和get方法提交的所有数据都可以通过$_REQUEST数组["参数"]获得

ATTENTION:慎用$_REQUEST 如果get的一个变令名称和post的一个变量名称相同,则POST的值会覆盖GET的变量值 因为REQYEST先获取了get的值,然后获取了post的值,post的值会覆盖get值 我们可以来看php.ini中的配置 ; This directive describes the order in which PHP registers GET, POST, Cookie, ; Environment and
Built-in variables (G, P, C, E & S respectively, often ; referred to as EGPCS or GPC). Registration is done from left to right, newer ; values override older values. variables_order = "EGPCS" 这个EGPCS就是说明用$_REQUEST数组获取内容的优先级,其字母的含义分别代表为:E代表$_ENV,G代表$_GET,P代表$_POST,C代表$_COOKIE,S代表$_SESSION。后面出现的数据会覆盖前面写入的数据,其默认的数据写入方式就是EGPCS,所以POST包含的数据将覆盖GET中使用相同关键字的数据。
通过这个我们也可以看出PHP获取参数的步骤 环境变量=》GET=》POST=》COOKIE=>SESSION

 

三、php中mysqli_connect_errno和mysqli_connect_error .

mysqli_connect_errno() 返回一个整数,标识连接数据库是否成功和各种错误的数值。

mysqli_connect_error() 返回连接错误信息。

返回值以及错误信息:

mysqli_connect_errno     mysqli_connect_error

2002                     php_network_getaddresses: getaddrinfo failed: 不知道这样的主机。

1045                     Access denied for user 'wjj'@'localhost' (using password: YES)

1049                     Unknown database 'test'

0(连接成功)              null

 

$conn = new mysqli($dbhost,$username,$userpass,$dbdatabase);

if(mysqli_connect_errno()){

    exit('Connect failed:' . mysqli_connect_error());

}

$conn->set_charset("utf8");

四、@charset=iso-8859-1和@charset=utf-8有什么不同?

charset=iso-8859-1是西欧的编码,代表说明网站是采用的编码是英文;

charset=gb2312代表说明网站是采用的编码是简体中文;

charset=utf-8代表世界通用的语言编码;

charset=big5代表说明网站是采用的编码是繁体中文;

charset=euc-kr代表说明网站是采用的编码是韩文;

......等等有很多编码。

最常用到的是charset=gb2312、charset=iso-8859-1和charset=utf-8

charset=utf-8这个编码可以用到中文、韩文、日文等世界上所有语言编码上。

下面讲讲这几个的区别:

字符集与编码

各个国家和地区所制定的不同 ANSI 编码标准中,都只规定了各自语言所需的“字符”。比如:汉字标准(GB2312)中没有规定韩国语字符怎样存储。这些 ANSI 编码标准所规定的内容包含两层含义:

1. 使用哪些字符。也就是说哪些汉字,字母和符号会被收入标准中。所包含“字符”的集合就叫做“字符集”。

2. 规定每个“字符”分别用一个字节还是多个字节存储,用哪些字节来存储,这个规定就叫做“编码”。

各个国家和地区在制定编码标准的时候,“字符的集合”和“编码”一般都是同时制定的。因此,平常我们所说的“字符集”,比如:GB2312, GBK, JIS 等,除了有“字符的集合”这层含义外,同时也包含了“编码”的含义。

“UNICODE 字符集”包含了各种语言中使用到的所有“字符”。用来给 UNICODE 字符集编码的标准有很多种,比如:UTF-8, UTF-7, UTF-16, UnicodeLittle, UnicodeBig 等。

1、ISO-8859-1:

最简单的编码规则,每一个字节直接作为一个 UNICODE 字符。比如,[0xD6, 0xD0] 这两个字节,通过 iso-8859-1 转化为字符串时,将直接得到 [0x00D6, 0x00D0] 两个 UNICODE 字符,即 "ÖÐ"。

反之,将 UNICODE 字符串通过 iso-8859-1 转化为字节串时,只能正常转化 0~255 范围的字符。

2、GB2312,BIG5,Shift_JIS,ISO-8859-2

把 UNICODE 字符串通过 ANSI 编码转化为“字节串”时,根据各自编码的规定,一个 UNICODE 字符可能转化成一个字节或多个字节。

反之,将字节串转化成字符串时,也可能多个字节转化成一个字符。比如,[0xD6, 0xD0] 这两个字节,通过 GB2312 转化为字符串时,将得到 [0x4E2D] 一个字符,即 '中' 字。

“ANSI 编码”的特点:

1. 这些“ANSI 编码标准”都只能处理各自语言范围之内的 UNICODE 字符。

2. “UNICODE 字符”与“转换出来的字节”之间的关系是人为规定的。

3、UTF-8,UTF-16,UnicodeBig

与“ANSI 编码”类似的,把字符串通过 UNICODE 编码转化成“字节串”时,一个 UNICODE 字符可能转化成一个字节或多个字节。

与“ANSI 编码”不同的是:

1. 这些“UNICODE 编码”能够处理所有的 UNICODE 字符。

2. “UNICODE 字符”与“转换出来的字节”之间是可以通过计算得到的。

如何
4000
相互转换呢?

最好用记事本打开文件,修改字符编码为utf-8,然后另存为,选择编码为utf-8。

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: