PHP学习(四)
cookie对象和session对象
cookie变量的例子
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>PHP学习</title>
</head>
<body>
<?php
if(!isset($_COOKIE["user"]))//确定是否设置了cookie对象
{
echo "请先登录";
}
else
{
echo "欢迎".$_COOKIE["user"];
}
?>
<form action="index.php" method="post">
名字:<input type="text" name="name"/>
年龄:<input type="text" name="age"/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
<?php
setcookie("user",$_POST["name"],time()+3600);//设置cookie对象,过期时间为3600秒后
echo "欢迎".$_POST["age"]."岁的".$_POST["name"];
//setcookie("user",$_POST["name"],time()-3600);如果想要销毁cookie对象只需要把时间换成过去时间就行
?>
session变量的例子
<?php
session_start();//一个页面使用session变量之前需要先启动session会话
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>PHP学习</title>
</head>
<body>
<?php
if(!isset($_SESSION["user"]))//确定是否设置了session对象
{
echo "请先登录";
}
else
{
echo "欢迎".$_SESSION["user"];
}
?>
<form action="index.php" method="post">
名字:<input type="text" name="name"/>
年龄:<input type="text" name="age"/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
<?php
session_start();
$_SESSION["user"]=$_POST["name"];//创建session变量
echo "欢迎".$_POST["age"]."岁的".$_POST["name"];
unset($_SESSION[“user"]);//销毁特定session变量
session_destroy();//销毁全部session变量
?>
session变量和cookie对象的区别:
1、Cookie和Session都是会话技术,Cookie是运行在客户端,Session是运行在服务器端。
2、Cookie有大小限制以及浏览器在存cookie的个数也有限制,Session是没有大小限制和服务器的内存大小有关。
3、Cookie有安全隐患,通过拦截或本地文件找得到你的cookie后可以进行攻击。
4、Session是保存在服务器端上会存在一段时间才会消失,如果session过多会增加服务器的压力。
过滤器
过滤器函数:
filter_var() - 通过一个指定的过滤器来过滤单一的变量
filter_var_array() - 通过相同的或不同的过滤器来过滤多个变量
filter_input - 获取一个输入变量,并对它进行过滤
filter_input_array - 获取多个输入变量,并通过相同的或不同的过滤器对它们进行过滤
以上函数有三个参数:
参数 | 描述 |
---|---|
variable | 必需,规定要过滤的变量 |
filter | 可选。规定要使用的过滤器的 ID。 |
options | 规定包含标志/选项的数组。检查每个过滤器可能的标志和选项。 |
过滤多个输出:
<?php
$filters = array
(
"name" => array
(
"filter"=>FILTER_SANITIZE_STRING
),
"age" => array
(
"filter"=>FILTER_VALIDATE_INT,
"options"=>array
(
"min_range"=>1,
"max_range"=>120
)
),
"email"=> FILTER_VALIDATE_EMAIL
);
$result = filter_input_array(INPUT_GET, $filters);
if (!$result["age"])
{
echo("年龄必须在 1 到 120 之间。<br>");
}
elseif(!$result["email"])
{
echo("E-Mail 不合法<br>");
}
else
{
echo("输入正确");
}
?>
PHP JSON
将PHP对象转换为JSON对象:
string json_encode ( $value [, $options = 0 ] )
value: 要编码的值。该函数只对 UTF-8 编码的数据有效。
将JSON对象转换为PHP对象:
mixed json_decode ($jsonString [, $assoc = false [, $depth = 512 [, $options = 0 ]]])
json_string: 待解码的 JSON 字符串,必须是 UTF-8 编码数据
assoc: 当该参数为 TRUE 时,将返回数组,FALSE 时返回对象。
depth: 整数类型的参数,它指定递归深度
options: 二进制掩码,目前只支持 JSON_BIGINT_AS_STRING 。
<?php
$arr=array("a"=>1,"b"=>2,"c"=>3,"d"=>4,"e"=>5);
echo json_encode($arr)."<br>";
$json='{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));//war_dump()方法可以将数组对象输出出来
?>