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()方法可以将数组对象输出出来
?>