PHP预定义变量(二)
四、Session变量($_SESSION):由PHP的SESSION函数产生的数据,都以超全局变量的方式,存放在$_SESSION变量中。
1、Session简介
SESSION也称为会话期,其是存储在服务器上的一小段文件,用于存储用户的相关信息。SESSION之间使用会话标识来区别,每一个SESSION都有唯一的一个标识。使用SESSION也可以完成类似于COOKIE一样的工作。session会自动的对要设置的值进行encode与decode,因此session可以支持存储任意数据类型,包括数组与对象等。
2、使用session_save_path()函数,设置session文件的保存目录,如:
session_save_path("D:/phpnow/Apache2/temp");
//使用session_save_path()函数取得当前session保存的目录
echo session_save_path()."
";
注:PHP安装完成后,由于SESSION的保存路径没有设置,如果直接在脚本中使用SESSION,会出现因为路径不存在而产生的错误。使用session_save_path()函数,可以修改SESSION文件的保存路径,但是仅限于当前脚本。如果在PHP配置文件中,已经设置了有效的SESSION文件保存目录,那么在脚本中可以不使用此函数,此时所有的PHP程序都共用一个目录存储SESSION文件。
3、注册SESSION变量
由于$_SESSION是一个数组,可以使用数组添加单元的方式,来为SESSION增加新变量。如:
session_start();//开启SESSION,使用前,必须要先开启
//使用数组添加单元的方法,增加SESSION变量
$_SESSION["username"] = "phpstuer";//存储字符串
$sessionArr = array("1","2","3");
$_SESSION["arr"] = $sessionArr; //存储数组
NOTE:使用session_register函数也可以,注册SESSION变量,但此函数从PHP5.3后就已弃用,所以这里不再举例。
4、访问SESSION变量
由于SESSION变量,都是以单元的形式,存储在$_SESSION全局变量中,所以使用访问数组的方法,就可以访问SESSION变量。SESSION变量注册后,需要经过初始化后才能使用,这一点与COOKIE是不同的。初始化SESSION的函数是session_start()。如:
//使用session_start()函数开启SESSION
session_start();
//遍历$_SESSION数组
foreach($_SESSION as $key=>$value){
echo "$key=>$value
";
}
echo "单独访问SESSION变量:";
echo $_SESSION["username"]."
";
echo "单独访问SESSION变量 :";
echo $_SESSION["arr"][2];
注意:使用session_start()函数时,为防止出现错误提示信息,在页面最上面添加代码。
5、删除SESSION变量
在使用完SESSION变量后,需要对已经注册的SESSION进行删除,以减少对服务器的资源使用。
session_start();
//删除前:
echo "
";<br>
print_r($_SESSION);<br>
echo "
";
//使用unset()函数删除一个$_SESSION变量
unset($_SESSION["username"]);
//使用session_unset()函数,删除当前页面的$_SESSION变量
//session_unset();
//使用session_destroy()函数,删除当前页面的$_SESSION变量并删除SESSION文件
//session_destroy();
//删除后:
echo "
";<br>
print_r($_SESSION);<br>
echo "
";
五、Request变量($_REQUEST)作为超全局变量,$_REQUEST存储了包括$_POST、$_GET、$_COOKIE变量在内的数据。通过访问$_REQUEST,也可以实现$_POST、$_GET、$_COOKIE变量的功能。
虽然$_REQUEST在使用时比较方便,但是其提供的数据存在一定的危险性。比如一段程序使用$_REQUEST读取$_COOKIE值时,那有心的访客可以通过提供一个$_GET变量来模拟$_COOKIE值,从而取得一定的访问权限。
使用实例:略。
六、服务器变量($_SERVER)是由网络服务器创建的数组,其内容包括头信息、路径、脚本位置等。不同的网络服务器提供的信息有所出入,下面实例是以Apache服务器提供的作为标准。
echo "
";<br>
print_r($_SERVER);<br>
echo "
";
//解释如下:
echo "显示脚本文件的相对路径和文件名:\"".$_SERVER["PHP_SELF"]."\"
";
echo "显示服务器使用的CGI脚本规范:\"".$_SERVER["GATEWAY_INTERFACE"]."\"
";
echo "显示当前运行脚本所在服务器的IP地址:\"".$_SERVER["SERVER_ADDR"]."\"
";
echo "显示当前运行脚本服务器名称:\"".$_SERVER["SERVER_NAME"]."\"
";
echo "显示当前运行脚本服务器标识:\"".$_SERVER["SERVER_SOFTWARE"]."\"
";
echo "显示请求页面的通信协议的名称和版本:\"".$_SERVER["SERVER_PROTOCOL"]."\"
";
echo "显示访问页面的请求方法:\"".$_SERVER["REQUEST_METHOD"]."\"
";
echo "显示脚本开始运行时间:\"".$_SERVER["REQUEST_TIME"]."\"
";
echo "显示URL问号后的字符串:\"".$_SERVER["QUERY_STRING"]."\"
";
echo "显示当前运行脚本的文档根目录:\"".$_SERVER["DOCUMENT_ROOT"]."
";
echo "显示当前Accept请求的头信息:\"".$_SERVER["HTTP_ACCEPT"]."\"
";
echo "显示当前请求的字符信息:\"".$_SERVER["HTTP_ACCEPT_CHARSET"]."\"
";
echo "显示当前当前请求的Accept-Encoding头信息:\"".$_SERVER["HTTP_ACCEPT_ENCODING"]."\"
";
echo "显示当前请求的Accept-Language头信息:\"".$_SERVER["HTTP_ACCEPT_LANGUAGE"]."\"
";
echo "显示当前请求的Connection头信息:\"".$_SERVER["HTTP_CONNECTION"]."\"
";
echo "显示当前请求的Host头信息:\"".$_SERVER["HTTP_HOST"]."\"
";
echo "显示当前页面的前一个页面的URL地址:\"".$_SERVER["HTTP_REFERER"]."\"
";
echo "显示当前请求的User-Agent的头信息:\"".$_SERVER["HTTP_USER_AGENT"]."\"
";
echo "显示脚本是否可以通过HTTPS协议进行访问:\"".$_SERVER["HTTPS"]."\"
";
echo "显示浏览当前页面用户的IP地址:\"".$_SERVER["REMOTE_ADDR"]."\"
";
echo "显示浏览当前页面用户的主机名:\"".$_SERVER["REMOTE_HOST"]."\"
";
echo "显示用户连接到服务器时所使用的端口:\"".$_SERVER["REMOTE_PORT"]."\"
";
echo "显示当前执行脚本的绝对路径名:\"".$_SERVER["SCRIPT_FILENAME"]."\"
";
echo "显示Apache配置文件中的SERVER_ADMIN参数设置情况:\"".$_SERVER["SERVER_ADMIN"]."\"
";
echo "显示网络服务器使用的端口,默认为\"80\":\"".$_SERVER["SERVER_PORT"]."\"
";
echo "显示服务器版本和虚拟主机名的字符串:\"".$_SERVER["SERVER_SIGNATURE"]."\"
";
echo "显示脚本在文件系统中的基本路径:\"".$_SERVER["PATH_TRANSLATED"]."\"
";
echo "显示当前脚本的路径:\"".$_SERVER["SCRIPT_NAME"]."\"
";
echo "显示访问当前页面的URI:\"".$_SERVER["REQUEST_URI"]."\"
";
七、环境变量($_ENV)是预定义的一个数组,记录着系统路径等信息。
echo "
";<br>
print_r($_SERVER);<br>
echo "
";
//单独访问环境变量的数组成员,可以通过“$_ENV[‘成员变量名’]”的方式实现,如:
echo "服务器操作系统为:".$_ENV["OS"]."
";
八、 HTTP文件上传变量($_FILES):由HTML表单生成的文件上传变量,以数组的形式记录了上传文件的详细信息,其数组成员包括上传的文件名:name;文件类型:type;临时文件名:tmp_name;错误信息代码 :error;文件大小:size。下面介绍使用HTML表单,生成文件上传变量的方法,
要使表单产生文件变量,要满足三个条件:
1、HTML表单要使用POST方式传递数据。
2、表单的“enctype”参数要设置为“multipart/form-data” 。
3、表单中包含一个文件选择框。
通过$_FILES变量获取上传文件相关信息后,就可以配合其他文件函数实现文件的上传。
上传文件及$_FILES的用法实例:待整理
九、$GLOBALS变量以数组的形式,记录了所有已经定义的全局变量,而变量名就是这个数组的索引。即然$GLOBALS记录着所有的全局变量,那么理所当然的也可以访问全局变量里的信息。下面介绍使用$GLOBALS访问其他预定义变量的方法,如:
session_start();
$_SESSION["school"] = "大学";
echo $_SESSION["school"]."
"; //输出 大学
//使用$GLOBALS显示当前操作系统版本
echo $GLOBALS["_ENV"]["OS"]."
";
//使用$GLOBALS访问SESSION值
echo $GLOBALS["_SESSION"]["school"]."
"; //输出大学
echo "
";<br>
print_r($GLOBALS);<br>
echo "
";