yahoo的34条前端优化法则
减少HTTP请求、利用CDN技术、 设置头文件过期或者静态缓存、Gzip压缩、把CSS放顶部、 把JS放底部、避免CSS 表达式、将JS和CSS外链、减少DNS查找、减小JS和CSS的体积、 避免重定向、删除重复脚本、 配置ETags、缓存Ajax、尽早的释放缓冲、
用GET方式进行AJAX请求、延迟加载组件、 预加载组件、减少DOM元素数量、跨域分离组件、
减少iframe数量、不要出现404页面、减小Cookie、 对组件使用无Cookie的域名、减少DOM的访问次数、开发灵活的事件处理句柄、使用< link >而非@import、避免过滤器的使用、优化图片、优化CSS Sprites、 不要在HTML中缩放图片、缩小favicon. ico的大小并缓存它、保证组件在25K以下、将组件打煲进一个多部分的文档中
数据库缓存的基本理论,参考memcached
什么是Memcached?
memcached是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。
虽然memcached 使用了同样的“Key=>Value”方式组织数据,但是它和共享内存、APC等本地缓存有非常大的区别。Memcached是分布式的,也就是说 它不是本地的。它基于网络连接(当然它也可以使用localhost)方式完成服务,本身它是一个独立于应用的程序或守护进程(Daemon方式)
PHP与Memcached
Memcached使用libevent库实现网络连接服务,理论上可以处理无限多的连接,但是它和
基于反向代理的Web缓存;
基于反向代理的Web缓存
PHP安全模式
php安全模式:safe_mode=on|off
启用safe_mode指令将对在共享环境中使用PHP时可能有危险的语言特性有所限制。可以将safe_mode是指为布尔值on来启用,或者设置为off和脚本尝试访问的文件的UID,以此作为限制机制的基础。如果UID相同,则知性脚本;否则,脚本失败。
当启用安全模式时,一些限制将生效
1、 所有输入输出函数(例如fopen()、file()和require())的适用会受到限制,只能用于与调用这些函数的
脚本有相同拥有者的文件
2、 如果试图通过函数popen()、system()或exec()等执行脚本,只有当脚本位于safe_mode_exec_dir
配置指令指定的目录才可能
3、 3、HTTP验证得到进一步加强,因为验证脚本用于者的UID划入验证领域范围内。此外,当启用安
全模式时,不会设置PHP_AUTH。
4、 4、如果适用MySQL数据库服务器,链接MySQL服务器所用的用户名必须与调用mysql_connect()
的文件拥有者用户名相同。
以下是一些和安全模式相关的配置选项
safe_mode_gid=on|off
safe_mode_include_dir=string
safe_mode_env_vars=string
safe_mode_exec_dir=string
safe_mode_protected_env_vars=string
常见的web攻击方式
常见攻击
XSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入的恶意html代码会被执行,从而达到恶意用户的特殊 目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常呼略其危害性。但是随着前端技术的不断进步富客户端的应用越来越多,这方面的问题越来 越受关注。举个简单例子 : 假如你现在是sns站点上一个用户,发布信息的功能存在漏洞可以执行js 你在 此刻输入一个 恶意脚本,那么当前所有看到你新信息的人的浏览器都会执行这个脚本弹出提示框 (很爽吧 弹出广告 :)),如果你做一些更为激进行为呢 后果难以想象。
CSRF(Cross Site Request Forgery),跨站点伪造请求。顾名思义就是 通过伪造连接请求在用户不知情的情况下,让用户以自己的身份来完成攻击者需要达到的一些目的。csrf 的攻击不同于xss csrf 需要被攻击者的主动行为触发。这样听来似乎是有“被钓鱼”的嫌疑。
多窗口浏览器这这方面似乎是有助纣为虐的嫌疑,因为打开的新窗口是具有当前所有 会话的,如果是单浏览器窗口类似ie6 就不会存在这样的问题,因为每个窗口都是一个独立的进程。举个简单例子 : 你正在玩白社会, 看到有人发了一个连接,你点击过去,然后这个连接里面伪造了一个送礼物的表单,这仅仅是一个简单的例子,问题可见一般。
cookie劫持。通过获取页面的权限,在页面中写一个简单的到恶意站点的请 求,并携带用户的cookie 获取cookie后通过cookie 就可以直以被盗用户的身份登录站点。这就是cookie 劫持。举个简单例子: 某人写了一篇很有意思的日志,然后分享给大家,很多人都点击查看并且分享了该日志,一切似乎都很正常,然而写日志的人却另有用心,在日志中偷偷隐藏了一个 对站外的请求,那么所有看过这片日志的人都会在不知情的情况下把自己的cookie 发送给了 某人,那么他可以通过任意一个人的cookie 来登录这个人的账户。
SQL注入攻击
在 SQL 注入攻击 中,用户通过操纵表单或 GET 查询字符串,将信息添加到数据库查询中。
DNS攻击
拒绝服务攻击
拒绝服务攻击即攻击者想办法让目标机器停止提供服务,是黑客常用的攻击手段之。
攻击者进行拒绝服务攻击,实际上让服务器实现两种效果:一是迫使服务器的缓冲区满,不接收新的请求;二是使用IP欺骗,迫使服务器把合法用户的连接复位,影响合法用户的连接
PHP做好防盗链的基本思想 防盗链
什么是盗链?
盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。
网站盗链会大量消耗被盗链网站的带宽,而真正的点击率也许会很小,严重损害了被盗链网站的利益。 如何做防盗链?
不定期更名文件或者目录
限制引用页
原理是,服务器获取用户提交信息的网站地址,然后和真正的服务端的地址相比较, 如果一致则表明是站内提交,或者为自己信任的站点提交,否则视为盗链。实现时可以使用HTTP_REFERER1 和htaccess 文件(需要启用mod_Rewrite),结合正则表达式去匹配用户的每一个访问请求。
文件伪装
文件伪装是目前用得最多的一种反盗链技术,一般会结合服务器端动态脚本 (PHP/JSP/ASP)。实际上用户请求的文件地址,只是一个经过伪装的脚本文件,这个脚本文件会对用户的请求作认证,一般会检查 Session,Cookie 或HTTP_REFERER 作为判断是否为盗链的依据。而真实的文件实际隐藏在用户不能够访问的地方,只有用户通过验证以后才会返回给用户
加密认证
这种反盗链方式,先从客户端获取用户信息,然后根据这个信息和用户请求的文件名 字一起加密成字符串(Session ID)作为身份验证。只有当认证成功以后,服务端才会把用户需要的文件传送给客户。一般我们会把加密的Session ID 作为URL 参数的一部分传递给服务器,由于这个Session ID 和用户的信息挂钩,所以别人就算是盗取了链接,该Session ID 也无法通过身份认证,从而达到反盗链的目的。这种方式对于分布式盗链非常有效。
随机附加码
每次,在页面里生成一个附加码,并存在数据库里,和对应的图片相关,访问图片时和此附加码对比,相同则输出图片,否则输出404图片
加入水印
HTTP请求头信息和响应头信息
请求头信息
POST /scp1.1.0/prs/new_rnaseqtask/run_go HTTP/1.1
Host: 172.30.4.102
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:6.0) Gecko/20100101 Firefox/6.0
Accept: /
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: http://172.30.4.102/scp1.1.0/index.php/prs/new_rnaseqtask/index_continue/13/364 Content-Length: 1819
Cookie:
ci_session=a%3A4%3A%7Bs%3A10%3A%22session_id%22%3Bs%3A32%3A%22e31556053ff9407a454f6a1e146d43eb%22%3Bs%3A10%3A%22ip_address%22%3Bs%3A12%3A%22172.16.23.42%22%3Bs%3A10%3A%22user_agent%22%3Bs%3A50%3A%22Mozilla%2F5.0+%28Windows+NT+6.1%3B+rv%3A6.0%29+Gecko%2F2010010%22%3Bs%3A13%3A%22last_activity%22%3Bi%3A1314955607%3B%7D664b51a01ef99bac95f3e2206e79cb00;PHPSESSID=v33mlm1437lmop1fquta675vv4;username=linjinming; tk=1314955601855 Pragma: no-cache
Cache-Control: no-cache
响应头信息
HTTP/1.1 200 OK
Date: Fri, 02 Sep 2011 09:27:07 GMT
Server: Apache/2.2.3 (Red Hat)
X-Powered-By: PHP/5.1.6
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 31
Connection: close
Content-Type: text/html; charset=UTF-8
MySQL
MySQL数据库性能优化
使用mysqlreport;
正确使用索引:explain分析查询语句,组合索引,索引副作用(占空间、update)
开启慢查询日志、使用慢查询分析工具mysqlsla;
索引缓存、索引代价(插入更新索引);
表锁,行锁,行锁副作用(update多时候变慢),在select和update混合的情况下,行锁巧妙解决了读写互斥的问题;
开启使用查询缓存;
修改临时表内存空间;
开启线程池;
MySQL Query语句优化的基本思路和原则
优化需要优化的Query;
定位优化对象的性能瓶颈;
明确优化目标;
从Explaing入手;
多使用Profile;
永远用小结果集推动大的结果集;
尽可能在索引中完成排序;
只取自己需要的Columns;
仅仅使用最有效的过滤条件;
尽可能避免复杂的Join和子查询。
MySQL 中MyISAM引擎和InnoDB引擎的区别以及它们的性能
1:Innodb支持事物,Myisam不支持
2:锁定机制不一样,Myisam支持表锁定,而Innodb支持行锁
3:Myisam不支持外键,Innodb能支持
4:Myisam能在特定环境下支持全文索引,而Innodb不支持
5:Myisam支持数据压缩,Innodb不支持
6:在数据存储上,Myisam占用的空间少,Innodb相对多些
7:Myisam在批量插入和查询方面速度上有优势,而Innodb由于支持行锁,所以在数据修改方面更胜一筹
MySQL存储引擎
MyISAM:不支持事务、表锁和全文索引, 操作速度快
InnoDB:行锁设计、支持外键、支持安全事务
HEAP:数据存放在内存中,临时表
NDB Cluster:MySQL的簇式数据库引擎
CSV: 存储引擎把数据以逗号分隔的格式存储在文本文件中。
FEDERATED:存储引擎表并不存放数据,它只是指向一台远程MySQL数据库服务器上的表 Archive: 只支持INSERT和SELECT操作, 压缩后存储, 非常适合存储归档数据
Merge:允许将一系列等同的MyISAM表以逻辑方式组合在一起,并作为1个对象引用它们 表类型,区分表类型
优化表设计的常用思路
负载均衡的数据库设计
数据类型及详细定义,区分
变量如何定义?如何检查变量是否定义?如何删除一个变量?怎样检测变量是否设置?
$定义 isset()// 检测变量是否设置
defined()// 检测常量是否设置
unset()//销毁指定的变量
empty()// 检测变量是否为空
什么是可变变量?
一个变量的变名可以动态的设置和使用。
{$a}=hello world
字符串怎么转成整数,有几种方法?怎么实现?
强制类型转换: (整型)字符串变量名;
直接转换:settype(字符串变量,整型);
intval(字符串变量);
标量数据和数组的最大区别是什么?
一个标量只能存放一个数据,而数组可以存放多个数据。
常量如何定义? 如何检测一个常量是否被定义?常量的值只能是哪些数据类型?
define()//定义常量 , defined()//检查常量是否定义
常量的值只能是标量类型的数据。
如果定义了两个相同的常量,前者和后者哪个起作用?
前者起作用,因为常量一旦定义就不能被重新定义或者取消定义。
常量和变量有哪些区别?
1)常量前没有$符号;
2)常量只能通过define()定义,而不能通过赋值语句定义;
3)常量可以在任何地方定义和访问,而变量有全局和局部之分;
4)常量一旦定义就不能被重新定义或者取消定义,而变量而通过赋值方式重新定义;
5)常量的值只能是标量数据,而变量的数据库类型有8种原始数据类型。
PHP中常用的几个预定义的全局数组变量是哪些?
有9大预定义的内置数组变量:
_GET, _SESSION, _FILES,_ENV, $GLOBALS
在实际开发中,常量最常用于哪些地方?
1)连接数据库的信息定义成常量,如数据库服务器的用户名、密码、数据库名、主机名;
2)将站点的部分路径定义成常量,如web绝对路径,smarty的安装路径,model、view或者controller的文件夹路径;
3)网站的公共信息,如网站名称,网站关键词等信息
func()和@func()之间有什么区别?
第二个函数调用失败不会报错,第一个会报错
字符串运算符“.”与算术运算符“+”有什么区别?
当“a”“b”之间使用.时认为是连字符。如果两者间是+的时候php会认为是一次运算。
1)如果+号两边的字符串是数字组成的,那么会将字符串自动转为整型;
2)如果+号两边是纯粹的字母,那么会输出0;
3)如果+号两边的字符串是以数字开头的,那么会截取字符串开头的数字,然后进行运算。
foeach数组的时候指针是如何指向的?list()/each()/while()循环数组的时候指针如何指向的呢?
当foreach开始执行的时候,数组内部的指针会自动指向第一个单元。因为foreach所操作的是指定数组的拷贝,而不是该数组本身。而each()一个数组后,数组指针将停留在数组中的下一个单元或者碰到数组结尾时停留在最后一个单元。如果要再次使用each()遍历数组,必须要使用reset().
reset()将数组的内部指针倒回到第一个单元并返回第一个数组单元的值。
数组与字符串之间的转换
字符串定义的时候单引号和双引号有什么区别?
单引号加载速度比双引号加载速度快
B. 去除字符串首尾空格的函数: trim ltrim rtrim(别名:chop) 使用第二个参数,还可以去除指定的字符。
C. 转义字符串函数:addslashes()
D. 获取字符串长度的函数:strlen()
E. 截取字符串长度的的函数:substr()
F. 检索字符串函数: strstr() , strpos()
G. 替换字符串函数:str_replace
41.页面字符出现乱码,怎么解决?
1.首先考虑当前文件是不是设置了字符集。查看是不是meta标签中写了charset,如果是php页面还可以看看是不是
在header()函数中指定了charset;
例如:
header(“content-type:text/html;charset=utf-8”);
2.如果设置了字符集(也就是charset),那么判断当前文件保存的编码格式是否跟页面设置的字符集保持一致,
两者必须保持统一;
3.如果涉及到从数据库提取数据,那么判断数据库查询时的字符集是否跟当前页面设置的字符集一致,两者必须统一,
例如:mysql_query(“set names utf8”)。
在url中用get传值的时候,若中文出现乱码,应该用哪个函数对中文进行编码?
用户在网站表单提交数据的时候,为了防止脚本攻击(比如用户输入),php端接收数据的时候,应该如何处理?
使用urlencode()对中文进行编码,使用urldecode()来解码。
使用htmlspecialchars($_POST[‘title’])来过滤表单传参就可以避免脚本攻击。
说说mysql_fetch_row() 和mysql_fetch_assoc()和mysql_fetch_array之间有什么区别?
第一个是返回结果集中的一行作为索引数组,第二个是返回关联数组,而第三个既可以返回索引数组也可以返回关联数组,取决于它的第二个参数 MYSQL_BOTH MYSQL_NUM MYSQL_ASSOC 默认为MYSQL_BOTH
result = mysql_query(result, MYSQL_NUM);
请说出目前学过的返回是资源的函数?
答: fopen(打开文件)
imagecreatefromjpeg(png gif) — 从 JPEG 文件新建一图像
imagecreatetruecolor — 新建一个真彩色图像
imagecopymerge — 拷贝并合并图像的一部分
imagecopyresized — 拷贝部分图像并调整大小
mysql_connect — 打开一个到 MySQL 服务器的连接
mysql_query();只有这执行select的时候成功,才返回资源,失败返回FALSE
-
文件上传需要注意哪些细节?怎么把文件保存到指定目录?怎么避免上传文件重名问题?
1.首现要在php.ini中开启文件上传;
2.在php.ini中有一个允许上传的最大值,默认是2MB。必要的时候可以更改;
3.上传表单一定要记住在form标签中写上enctype="multipart/form-data";
- 提交方式 method 必须是 post;
- 设定 type="file" 的表单控件;
6.要注意上传文件的大小MAX_FILE_SIZE、文件类型是否符合要求,上传后存放的路径是否存在。
可以通过上传的文件名获取到文件后缀,然后使用时间戳+文件后缀的方式为文件重新命名,这样就避免了重名。可以自己设置上传文件的保存目录,与文件名拼凑形成一个文件路径,使用move_uploaded_file(),就可以完成将文件保存到指定目录。
header()函数主要的功能有哪些?使用过程中注意什么?
答:
header()发送http头信息
-header("content-type:text/html; charset=utf-8");-------------------//当前页面输出内容是html,编码为utf-8格式
-
-header("content-type:image/png gif jpeg");----------------------------------//当前页面输出内容的格式是图片
-header("refresh:5;url=http://www.1004javag.com/five/string.php");--//页面5秒后要跳转到新网址
-header("location:http://1004javag.com/five/string.php");-----------//页面重定向
文件下载的时候如果使用header()函数?
答:header("content-type: application/octet-stream;charset=UTF-8"); //在这里加utf-8和在上面定义有什么区别?、??
header("accept-ranges: bytes");
header("accept-length: ".filesize(filename));
header("content-disposition: attachment; filename=".filename);
-
什么是ajax?ajax的原理是什么?ajax的核心技术是什么?ajax的优缺点是什么?
ajax是asynchronous javascript and xml的缩写,是javascript、xml、css、DOM等多个技术的组合。 '$'是jQuery的别名.
页面中用户的请求通过ajax引擎异步地与服务器进行通信,服务器将请求的结果返回给这个ajax引擎,
最后由这个ajax引擎来决定将返回的数据显示到页面中的指定位置。Ajax最终实现了在一个页面的指定位置可以加载另一个页面所有的输出内容。
这样就实现了一个静态页面也能获取到数据库中的返回数据信息了。所以ajax技术实现了一个静态网页在不刷新整个页面的情况下与服务器通信,
减少了用户等待时间,同时也从而降低了网络流量,增强了客户体验的友好程度。
Ajax的优点是:
- 减轻了服务器端负担,将一部分以前由服务器负担的工作转移到客户端执行,利用客户端闲置的资源进行处理;
- 在只局部刷新的情况下更新页面,增加了页面反应速度,使用户体验更友好。
Ajax的缺点是不利于seo推广优化,因为搜索引擎无法直接访问到ajax请求的内容。
ajax的核心技术是XMLHttpRequest,它是javascript中的一个对象。
PHP提供了2套正则表达式函数库,分别是哪两套?【
(1) PCRE Perl兼容正则表达式 preg_ 为前缀
(2) POSIX 便携式的操作系统接口 ereg_ 为前缀
111、 如何防止SQL注入?
要对提交的信息进行过滤,对单引号进行转义。
首先可以在php.ini中设置,让所有的单引号在提交后都进行转义。或者使用addslashes().
112FCKEditor自动过滤的解决办法?
如果您需要编辑模板页,默认的FCK设置是会去掉
标签,而且会给你加上标签的,如果需要保留的话,只要更改下设置可以了。
在fckconfig.js里面有:FCKConfig.FullPage = false ;
改为:FCKConfig.FullPage = true;
如果想去掉自动添加的代码就可以在这里设置
默认是
FCKConfig.EnterMode = 'p' ; // p | div | br
FCKConfig.ShiftEnterMode = 'br' ; // p | div | br
改成
FCKConfig.EnterMode = 'br' ; // p | div | br
FCKConfig.ShiftEnterMode = 'p' ; // p | div | br
使用GD2库创建图像的步骤?
1). 创建一个画布:imagecreate();
2). 设置画布背景颜色,使用RGB设置颜色:imagecolorallocate();
3). 设置文字颜色:imagecolorallocate();
4). 在画布上书写文字:imagestring();
5). 以 JPEG 格式将图像输出到浏览器或文件:【根据图片格式不同,函数还可以是imagepng()、imagegif()等】 imagejpeg();
6). 清除图像资源:imagedestroy();
GD2库生成缩略图的步骤是什么?
1). 读取希望生成缩略图的源图像,创建图像对象:【根据图片格式不同,函数也相应不同】
srcW,dstW、dst_image = imagecreatetruecolor(dstH);
4). 拷贝图像并调整大小: imagecopyresized();
5). 将图像输出:【根据图片格式不同,函数也相应不同】 imagejpeg();
6). 清除图像资源(将源图像资源和目标图像资源都清除) imagedestroy();
GD2库给图片增加水印如何做?
添加简单的文本水印:
利用imagestring()函数就可以在图片上写文本水印。
增加一个图形水印:
1). 读取希望增加水印的源图片,创建图像对象:【根据图片格式不同,函数也相应不同】
watermark = imagecreatefrompng();
3). 拷贝并合并图像:
imagecopymerge();
4). 将图像输出:【根据图片格式不同,函数也相应不同】
imagejpeg();
5). 清除图像资源(将源图像资源和水印图像资源都清除)
输出控制函数:ob(output buffer) ob_flush
加密函数 md5
数学类函数:abs绝对值,rand随机数,ceil取整,floor,mt_rand生成更好的随机数
转换函数:explode 使用一个字符串分割另一个字符串,implode
时间函数:date(),strtotime (将字符串转换为时间戳)
处理地址栏: url_encode url_decode
10.乱码问题
ASCII(American Standard Code for Information Interchange)81年产生
ANSI 美国国家标准学会( American National Standards Institute)
utf-8(-8代表一次传输8个字符)可变字节编码(中文3个字节)(utf:Unicode转换格式(UCS Transformation Format)
utf-16(-16代表一次传输16个字符)
GBK. 国家标准扩展码(Guo-Biao Kuozhan)90年产生(双字节编码)
GB2312 因为国际排行2312位(81年产生)
BIG5
unicode (国际编码)可变字节编码
Latin_1
utf-8+ bom
ISO:国际标准化组织(International Standardization Organization)
选择器:
1.基本选择器:
①、('.result')
③、元素选择器('#myform < input')
3.后代选择器:('#myform < span < input')
urlencode(str)替换所有非字母数字的字符,变为%后面跟两位16进制数,空格变为+号
urldecode(str)对已%##编码的URL进行解析还原
parse_url(str)解析完整的url转变为为数组
parse_str(str,out)解析请求字符串转变为数组
htmlspecialchars()转换html代码为实体代码
printf/sprintf %b %d %c %x %s %f %X
– b 整数转成二进位。
– c 整数转成对应的 ASCII 字符。
– d 整数转成十进位。
– f 单倍精确度数字转成浮点数。
– o 整数转成八进位。
– s 转成字符串。
– x 整数转成小写十六进位。
– X 整数转成大写十六进位。
1.数组和栈的操作
array_push(目标数组,字符串)将字符串压入数组的最后
array_pop(目标数组)将数组最后的元素弹出并返回
2.数组和队列的操作
array_unshift(目标数组,字符串)将字符串放到数组的开始位置
array_shift(目标数组)删除数组的第一个元素并返回
date(format,[timestamp])//格式化时间信息,并返回
time()//返回当前时间戳信息
mktime(hour,minute,second,month,day,year)
mktime(小时,分钟,秒,月,天,年)//取得一个日期的 Unix 时间戳
max()//取得最大值
-echo max(1, 3, 5, 6, 7); // 7
-echo max(array(2, 4, 5)); // 5
-echo max(0, '1hello'); // 1hello
-echo max('hello', 0); // hello
-echo max(-1, 'hello'); // hello
-echo max(array(2, 4, 8), array(2, 5, 7)); // array(2, 5, 7)
-echo max('string', array(2, 5, 7), 42); // array(2, 5, 7)数组和非数组比较数组总认为最大
mt_rand(65,94)//获得随机数
round()//四舍五入取整
flush()//输出准备区内容
urlencode('张三')//返回字符串中,除了-_.之外的所有非字母数字部分为%后接两位
16进制数,空格转化为+
urldecode()//对已经编码的部分反编码
chr(mt_rand(65,94))随机获得字母
ord(chr(mt_rand(65,94)))将字母转化为数字
第七单元【php连接mysql】
*mysql_connect(主机,用户名,密码) 打开一个到 MySQL 服务器的连接
*mysql_select_db(数据库,连接数据库资源) 选择 MySQL 数据库
*mysql_query("set names utf8");设定字符集
*mysql_close() 关闭 MySQL 链接
*mysql_query(语句) 发送并执行一条sql语句
mysql_fetch_row(结果资源)从结果集中取得一行结果(索引数组)
mysql_fetch_assoc(结果资源)从结果集中取得一行结果(关联数组)
*mysql_fetch_array(结果资源)从结果集中取得一行结果(索引/关联数组)
mysql_fetch_object(结果资源)从结果集中取得一行结果(对象数组)