zoukankan      html  css  js  c++  java
  • PHP中cookie和session

       使用PHP进行用户认证的方式有三种:HTTp认证、使用session、使用cookie。

       使用php进行http认证:

                 是通过结合header()函数和$PHP_AUTH_USER、$PHP_AUTH_pw全局变量的方法来创建的一个基本认证机制。

             一个简单的PHP脚本可以通过发送适当的HTTP头以在客户机屏幕自动显示用户名/口令对话框以模拟HTTP认证请求/响应系统。

              

    1 <?php
    2 if((!isset($PHP_AUTH_USER)) || (!isset($PHP_AUTH_PW)))
    3 {
    4 header('WWW-Authenticate:Basic reallm="My Private Stuff"');
    5 header('HTTP/1.0 401 Unauthorized');
    6 echo 'Authorization Required.';
    7 exit;
    8 }
    9 else if((isset($PHP_AUTH_USET)) && (isset($PHP_AUTH_PW)))
    10 {
    11 if(($PHP_AUTH_USER!="validname") || ($PHP_AUTH_PW!="goodpassword"))
    12 {
    13 header('WWW-Authenticate:Basic reallm="My Private Stuff"');
    14 header('HTTP/1.0 401 Unauthorized');
    15 echo 'Authorization Required.';
    16 exit;
    17 }
    18 else if(($PHP_AUTH_USE=="validname") || ($PHP_AUTH_PW=="goodpassword"))
    19 {
    20 echo 'YOu are authorized';
    21 }
    22 }
    23 ?>

        cookie是服务器在用户的机器上存储信息的一种方式。利用这种方式,站点可以在访问期间记住或跟踪用户。

        Cookie的配置与应用:

           cookie通过HTTP  Headers从服务器端返回到浏览器上,首先,服务器端在响应中利用Set-cookie header来创建一个cookie,然后,浏览器在它的请求中通过cookie header(包含这个已经创建的cookie),并且返回至服务器,从而完成浏览器的验证。

    Setcookie(string name, string value, int expire,string path, string domain, int secure);

          其中name是cookie变量名称标识,你在php中将能象使用普通变量名相同来用他引用cookie变量。value是cookie变量的初始值,expire 表示该cookie变量的有效时间;path 为该cookie变量的相关路径;domain 表示cookie变量的网站;secure 则需在 https 的安全传输时才有效。

    接收和处理Cookie

    PHP对Cookie的接收和处理的支持非常好,是完全自动的,跟FORM变量的原则一样,特别简单。

    比如设置一个名为 MyCookier的Cookie,PHP会自动从WEB服务器接收的HTTP头里把它分析出来,并形成一个与普通变量一样的变量,名为$ myCookie,这个变量的值就是Cookie的值。数组同样适用。另外一个办法是引用PHP的全局变量$HTTP_COOKIE_VARS数组。

    分别举例如下:(假设这些都在以前的页面里设置过了,并且仍然有效)

     echo $MyCookie;
     echo $CookieArray[0];
     echo $_COOKIE["MyCookie"];
     echo $HTTP_COOKIE_VARS["MyCookie"]; 

    删除Cookie

    要删除一个已经存在的Cookie,有两个办法:

    SetCookie("Cookie", ""); //给它赋空值
    SetCookie("Cookie", "value" , time()-1 / time() );//设置过期时间

    使用Cookie的限制

    1、必须在HTML文件的内容输出之前设置;

    2、不同的浏览器对Cookie的处理不一致,且有时会出现错误的结果。

    3、限制是在客户端的。一个浏览器能创建的Cookie数量最多为30个,并且每个不能超过4KB,每个WEB站点能设置的Cookie总数不能超过20个。

    <?php
    # php 中cookie 的使用 example
    
    error_reporting(7);
    $value= 'something';
    header("Set-Cookie:names=$value");
     if($_COOKIE['names'] !=""){
      echo "header存在";
      echo "<a href='?act=del'>清楚cookie</a>";
     }
     @extract($_POST);
     $act = $_GET['act'];
     if($act == 'add'){
      setcookie('name','{$uname}',time()+5);
      echo "<script>location='cookie.php';</script>";
     }else if($act=='del'){
      #删除cookie有两种方法
      setcookie('name','');//设置该cookie的vlaue值为空
      setcookie('name','{$uname}',time()-5/time());//设置cookie过期时间
      echo "<script>location='cookie.php';</script>";
     }
     if($_COOKIE['name']!=""){
      echo "存在";
      echo "<a href='?act=del'>清楚cookie</a>";
     }else{ ?>
    <form method="post" action="?act=add">
     <input type='text'  name='uname'><br/>
     <input type="text" name="upadd"><br/>
     <input type="submit"  value='提交'>
    </form>
    <?php
     }  
    ?>

    Session的配置与应用:

    session_start(); //初始化session.需在文件头部
    $_SESSION[name]=value; //配置Seeeion
    echo $_SESSION[name]; //使用session
    isset($_SESSION[name]); // 判断
    unset($_SESSION[name]); //删除
    session_destroy();//结束session
    session_name(); //存取目前session名称
    session_module_name();//存取目前session模块
    session_save_path();//存取目前session路径
    session_id();//存取目前session代号
    session_register();//注册新的变量
    session_is_registered();//检查变量是否注册session_decode():session资料解码
    session_encode();//session资料编码

    在浏览某个网站时,在浏览器没有关闭的情形之下,一个WEB应用的开始和结束。一个session可以数次http的请求和应答,每一个被创建的session都有一个唯一的标识串,叫做sessionID,这个串被发发送到客户端,同时在服务器端也生成了同样唯一的标识串入口。这个标识串或则放在文本中,或者放在一个数据库中。然后程序可以在这个sessionID下注册一些session变量。这些变量如同一般的变量一样可以保存文本或数值信息,可以通过session被读出或写入。session的唯一标识一般是系统内部唯一的sessionID。

    # php 中session的使用 example
    session_start();
    error_reporting(7);
     @extract($_POST);
     $act = $_GET['act'];
     if($act == 'add'){
      $_SESSION['name'] = $uname;
      echo "<script>location='session.php';</script>";
     }else if($act=='del'){
      session_destroy();//第一种删除方法
       unset($_SESSION['name']);  //第二种删除方法
      echo "<script>location='session.php';</script>";
     }
     if(isset($_SESSION['name'])){
      echo "存在";
      echo "<a href='?act=del'>清楚session</a>";
     }else{ ?>
    <form method="post" action="?act=add">
     <input type='text'  name='uname'><br/>
     <input type="text" name="upadd"><br/>
     <input type="submit"  value='提交'>
    </form>
    <?php
     }  
    ?>
  • 相关阅读:
    permission 文档 翻译 运行时权限
    TabLayout ViewPager Fragment 简介 案例 MD
    Log 日志工具类 保存到文件 MD
    OkHttp 官方wiki 翻译 MD
    Okhttp 简介 示例 MD
    OkHttp 官方Wiki之【使用案例】
    DialogPlus
    倒计时 总结 Timer Handler CountDownTimer RxJava MD
    RecyclerView 判断滑到底部 顶部 预加载 更多 分页 MD
    CSS3的媒体查询(Media Queries)与移动设备显示尺寸大全
  • 原文地址:https://www.cnblogs.com/wlgaojin/p/2673173.html
Copyright © 2011-2022 走看看