• PHP cookie session


    Cookie:

    直接看代码-说明及用法都在代码中:

    <?php date_default_timezone_set('Asia/Shanghai'); //设置正确的时区?>
    <?php
            /*
             PHP中通过setcookie函数来创造Cookie。使用前必须了解:
                 Cookie是 HTTP 头标的组成部分,而头标必须在页面其它内容之前发送,
                它必须最先输出。若在setcookie函数之前输出一个HTML标记或echo语句。
                甚至一个空行都会导致程序出错。
                setcookie() 函数语言自行参考php手册
            */
            
            //这里把过期时间设为0可以直接删除cookie
            //setcookie('visittime',"",0);
            if(isset($_COOKIE['visittime']))
            {
                echo "上次访问的时间是:".$_COOKIE['visittime'];
            }
            else
            {
                //设置cookie的有效时间为300秒,及五分钟
                setcookie('visittime',date('Y-m-d H:i:s'),time()+300);
                //删除setcookie  --这里把过期时间设为0可以直接删除cookie
                //setcookie('visittime',"",time()-1);
            }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head>
    
    <body>
        
    </body>
    </html>

     ===================================================================== 

    Session:

      首先要说一下,session也是一个个存在服务器的文件,而通过session ID来读取的session,session ID可以存在客户端的cookie里,也可以存放在数据库里等等

    <?php 
        /*启(创建)动session会话。和cookie一样,使用session前,游览器不能有任何输出 --所以放在最前面很保险
            说明: 
                其实不管放哪里。php代码都会比html先执行。由后台成生游览器可以认识的html所以,这里防止的是
                在其他php代码执行输出前,先进行会话的启动和注册!
        */
        session_start();
        $_SESSION['admin'] = null; //注册一个会话,并且赋空
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <script type="text/javascript">
        function yz(id)
        {
            <?php 
                /*这里如果先输出echo的话。会话就会出现错误*/
                //echo '这是错误的!';
                $_SESSION['ad'] = '1234567890';
            ?>
            window.open(id);
        }
    </script>
    </head>
    
    <body>
        <input type="button" value="跳转" onclick="yz('sessionto.php');"/>
    </body>
    </html>

    session读取:

    <?php
            /*读取会话也是一样的,都是使用会话。所以得先启动。*/
            session_start();
            echo "注意读取会话时,前面是可以有html输出的,但是注册会话就不行了<br />";
            echo $_SESSION['ad'];
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head>
    
    <body>
        
    </body>
    </html>

    ==============================================================

    设置session失效时两种方法

    1-

    <?php
        //让session一分钟后失效
        $time = 1*60; //设置session的失效时间
        /*session_set_cookie_params() 函数必须在session_start()函数之前调用
          但是不推荐使用此函数,此函数在一些游览器上会出现问题,所以一般手动设置失效时间
        */
        session_set_cookie_params($time); //使用函数
        session_start(); //初始化设置
        $_SESSION['username'] = 'mr';
    ?>

    2-

    <?php
        /*使用 setcookie() 函数可对Session设置失效时间,如让Session在一分钟后失效,关键代码如下*/
        session_start();  //给出session失效时间
        $time = 1*60;
        /*session_name 是session的名称,session_id是判断客户端用户的标识,因为session_id是
          随机产生的唯一名称,所以session是相对安全的。失效时间和cookie的失效时间一样,最后一个参数
          为可选产数,是防止cookie的路劲(就是cookie的作用目录)
          cookie()共有6个参数。 最后两个分别是 作用域名,和是否通过安全连接https
        */
        setcookie(session_name(),session_id(),time()+$time,"/"); //使用setcookie()手动设置session失效时间
        $_SESSION['user'] = 'mr';
        
    ?>

    ===================================================================== 

    客户端禁止Cookie的情况:

      请求端:

    <?php session_start(); //还是要首先启动session会话的?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head>
    
    <body>
        <!--
            当客户端禁止Cookie时,页面见的session传递就会失效,因为session_id是存放在cookie里的。
            所以这是我们要用GET的方式传递Session_ID ,但在之前我们必须先启动session
        -->
        <form id="form1" name="form1" method="post" action="common.php?<?=session_name();?>=<?=session_id();?>">
            <input type="submit" value="提交" />
        </form>
    </body>
    </html>

          接收端:

    <?php
        /*原理 -- session原理为请求该页面之后会产生一个session_id ,如果这个时候禁止了Cookie就无法传递
          session_id , 在请求下一个页面时候将会重新产生一个session_id ,这样就造成了session在页面传递
          失效.
        */
        $sess_name = session_name(); //获取session名称 --获取session是那个文件
        $sess_id = $_GET[$sess_name]; //根据session名称获取session_id Get方式
        session_id($sess_id); //关键步骤 -根据sessionid获取来确定信息
        session_start();
        $_SESSION['admin'] = 'mrsoft';
    ?>

     ===================================================================== 

  • 相关阅读:
    Linq基础知识小记四之操作EF
    EF基础知识小记一
    Linq基础知识小记三
    Linq基础知识之延迟执行
    Linq基础知识小记二
    Linq基础知识小记一
    EF 通过DataAnnotations配置属性和类型
    C# 引用类型和值类型
    算法练习之环形链表
    C1128节数超过对象文件格式限制: 请使用 /bigobj 进行编译
  • 原文地址:https://www.cnblogs.com/clouds008/p/3102553.html
Copyright © 2020-2023  润新知