一.会话控制
1、每个页面都必须开启[session]_start()后才能在每个页面里面使用[session]。
2、[session]_start()初始化session,[第一次]访问会生成一个唯一会话[ID]保存在客户端(是基于cookie保存的),用户下次访问时,session_start()会检查有没有会话[ID],如果有浏览器会带着这个会话[ID]过来(通过发送头文件传过来的,这个可以用ff浏览器看到)来确定客户端。
3、给于cookie的session会在客户端保存一个会话ID即session_id,这个可以通过打印cookie看到,这个session_id的键值为session_name,session_id() == $_COOKIE[session_name()]
/*session_name() 函数返回当前会话名称。 如果指定 name 参数, session_name() 函数会更新会话名称, 并返回 原来的 会话名称*/
4、如果客户端禁用了cookie,则必须用url传递session_id即给予URL的SESSION
5、注销SESSION时不能用unset($_SESSION),可以使用$_SESSION = array()或则$_SESSION = null,正确注销session的方法如下:
$_SESSION = array();//清空session中的数据
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time() - 3600, '/');//setcookie() 函数向客户端发送一个 HTTP cookie
}
session_destroy();//session是有时限的,关闭浏览器自然是会话中止,session立即注销
二.PHP中文件调用的注意点
1)require函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。
2)include函数一般放在流程控制的处理部分中。PHP程序网页在读到 include的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。
3) include有返回值,而require没有(return)。
4) “require”的工作方式是为了让PHP程序得到更高的效率,当它在同一个PHP网页中解释过一次后,第二次出现便不会再解释,这是它的优点。不过严格来说,这也是它的唯一的缺点,因为它不会重复解释引入的文件,所以当PHP网页中使用循环或条件语句来引入文件时,“require”则不会做任何的改变。当有类似这样的情形时,就必须使用“include”命令来引入 文件了。
>5)当PHP遇到一个利用“include”方式引入的文件,它就会解释一次;遇到第二次时,PHP还是会重新解释一次。与“require”相比,“include”的执行效率则会下降许多;而且当引入文件中包含了用户自定义的函数时,PHP在解释的过程中会发生函数重复定义的问题。不过“include”也不是没有优点的,因为在PHP网页中,它会每遇到一次“include”命令就会重复解释一次,所以非常适合使用在循环或条件判断的语句里。
>6)“include_once()”函数和“require_once()” 函数,会先检查目标档案的内容是不是在之前就已经导入过了,如果是,便不会再次重复导入同样的内容。
>7)他们可以载入 php 或 html 文件。
自己的体会到的:
1.在a.php
中调用了b.php
,那么要在c.php
中调用a.php
时就不需要再次调用b.php
.
2.在a.php
中调用了b.php
,在c.php
中调用了b.php
,那么在d.php
中只能调用a.php
或者c.php
.
3.可以使用require_once
或include_once
来处理第2点的问题
三.文件加载的路径问题
1.相对路径
是相对于当前网页文件所在的位置来定位某个被加载的文件位置,主要依赖以下2个特殊符号:
. /
:表示当前位置,即当前网页文件所在的目录(文件夹);
. . /
:表示上一级位置,即当前网页文件所在目录的上一级目录;
2.绝对路径
绝对路径又分为本地绝对路径和网络绝对路径。
a:本地绝对路径
include "c:/d1/d2/a
b:网络绝对路径
include "http://www.sys.com.index.php";//实际这里载入的通常也都是 html文件,因为该服务器会将 php 文件执行后返回过来
3.无路径
形式就是没有给出路径信息,而只给出文件名,不推荐。
include "a.php"; //此时通常其实php语言引擎会在当前网页目录下找该文件。