php Cookie 详细说明

 更新时间:2016年11月25日 15:10  点击:1694

.什么是cookie

cookie是一种在远程浏览器端存储数据并以此来跟踪和识别用户的机制.2.php教程如何设置cookie

在php中可以使用setcookie()或setrawcookie()函数来设置cookie.cookie是http头的一部分,因此setcookie()等函数必须在其输出数据座之前被调用,这和header()函数是相同的.不过在这里也可以使用输出缓冲函数来延迟脚本的输出.直到设置好了所有cookie和其他http标头.
<?php
 $value = "something";
 setcookie("testcookie",$value); //设置cookie值
 setcookie("testcookie",$value,time()+3600); //设置失效时间
?>
如果希望对一个cookie变量设置多个值,则可以在cookie变量名称后面加[]符号.
<?php
 // set the cookies
 setcookie("cookie[three]", "cookiethree");
 setcookie("cookie[two]", "cookietwo");
 setcookie("cookie[one]", "cookieone");
?>
setcookie()还可以设置控制读取cookie的程序的域及目录路径,默认为同服务器且在同级或以下目录结构内的页面才可以读取,然而如果你想设置允许从域example.com的/~rasmus目录处理页面,并且使用基于ssl的安全连接,则可以进行如下设置:
<?php
 $value = "something";
 setcookie("testcookie",$value,time()+3600,"/~rasmus/",".example.com",1);
?>
删除cookie的操作与上面类似,只需要设置cookie的值为空即可.
<?php
 // set the expiration date to one hour ago
 setcookie ("testcookie", "", time() - 3600);
 setcookie ("testcookie", "", time() - 3600, "/~rasmus/", ".example.com", 1);
?>注意:
 根据register_globals的设置,可以从cookie建立普通的php变量,不过一般不推荐依赖于此特性,因为出于安全考虑该选项通常是关闭的.
 必须保证在设置cookie前无数据输出.
 php会自动的接收和处理cookie,我们只需要在需要它的时候直接调用即可,你可以使用print_r($_cookie)把整个cookie数组的值全部打印出来.

在php中对目录的操作函数不多,本文章主要介绍opendir(),readdir(),closedir(),使用的时候是先打开文件句柄,上当删除mkdir($path,0777) ,0777是权限码,在非window下可用umask()函数设置. rmdir($path) 将删除路径在$path的文件.

 rmdir($path)
将删除路径在$path的文件.(

  首先介绍的是一个从目录读取的函数,opendir(),readdir(),closedir(),使用的时候是先打开文件句柄,而后迭代列出:

 代码如下 复制代码
<?php
$base_dir    =    "filelist/";
$fso        =    opendir($base_dir);
echo    $base_dir."<hr/>"        ;
while($flist=readdir($fso)){
echo $flist."<br/>"    ;
}
closedir($fso)
?>

这是讲返回文件目录下面的文件已经目录的程序(0文件将返回false).

有时候需要知道目录的信息,可以使用dirname($path)和basename($path),分别返回路径的目录部分和文件名名称部分,可用disk_free_space($path)返回看空间空余空间.

创建命令:
 
mkdir($path,0777)
,0777是权限码,在非window下可用umask()函数设置.
 

rmdir($path)
将删除路径在$path的文件.

dir -- directory 类也是操作文件目录的重要类,有3个方法,read,rewind,close,这是一个仿面向对象的类,它先使用的是打开文件句柄,然后用指针的方式读取的.,这里看php手册:
 

 代码如下 复制代码
<?php
$d = dir("/etc/php5");
echo "handle: " . $d->handle . " ";
echo "path: " . $d->path . " ";
while (false !== ($entry = $d->read())) {
   echo $entry." ";
}
$d->close();
?>

输出:
 

 代码如下 复制代码
handle: resource id #2
path: /etc/php5
.
..
apache
cgi
cli

文件的属性也非常重要,文件属性包括创建时间,最后修改时间,所有者,文件组,类型,大小等

下面我们重点谈文件操作.

 

session,中文名称为会话,它是指一类用来在客户端和服务器间保持会话连接状态的解决方案,同时 由于其的广泛应用性,PHP作为一种web开发语言,当然也是完全的支持Session机制.

1.什么是session
session,中文名称为会话,它是指一类用来在客户端和服务器间保持会话连接状态的解决方案,同时
由于其的广泛应用性,php教程作为一种web开发语言,当然也是完全的支持session机制.
具体针对web网站来说,session指用户在浏览某个网站时,从进入网站到浏览器关闭所经过的时间,由
此可知,session实际上是一个特定的时间概念.
通过使用session,我们就可以在网站的上下文不同页面间传递变量,将session用于用户身份认证,
程序状态记录等,最常见的形式就是配合cookie使用,实现保存用户登录状态等功能.2.php session用法
每一个网站访客都会被分配给一个唯一的标志符,即会话id,它的存放形式无非两种:要么经过
url传递,要么保存在客户端的cookies里.当然,你也可以将session保存到数据库教程里,这样会
更安全,但效率方面会有所下降.
url方式传递安全性肯定太差,php的会话机制是通过设置cookie,在cookies中保存会话id
(session id),在服务器端会生成session文件,与用户进行关联,web应用程序存储与这些
session相关的数据,并在各页面间进行传递.3.php session函数及使用
在php中有关session的函数比较多,不过我们最常用到的也就这么几个函数:
session_start(), session_register(),session_unregister(),
session_is_registered(),session_destroy函数.
session_start():启用session机制,在需要用到session的程序文件的最开始调用它.
session_register():注册session变量
session_unregister(): 删除session变量(一个一个删除)
session_is_registered(): 判断session变量是否注册
session_distroy(): 销毁所有session变量(所有session变量销毁)

需要注意下面几个方面:
 1.函数session_start()必须在程序最开始执行,在其前面不能有任何输出内容,否则
    就会出现“warning:cannot send session cookie - headers already
   sent"类似这样的警告信息.
 2.函数session_register()用于注册要保存在session中的相关变量,其用法如下:
 <?php
  $val = "session value";
  session_register("val");
 ?>
 val即为要注册的session变量名,在注册时一定不要加上"$"符号,只写其变量名称即可.

 3.函数session_unregister()与上面函数用法完全相同,但功能相反,上面函数是注册
session变量,而其则是删除指定的session变量.
 4.函数session_is_registered()用于判断session变量是否注册.
 5.函数session_destroy()主要用于在系统注销和退出时,销毁所有的session变量,
它没有参数,直接调用即可。
下面是一个简单的完整的使用样例程序:
<?php
 session_start();
 $val = "session value";
 session_register("val");

 if(session_is_registered("val")) {
  session_unregister("val");
 }
 else {
  echo "val变量还未进行注册";
 }

 session_destroy();
?>

function timeop($time,$type="talk") {
    $ntime=time()-$time;
    if ($ntime<60) {
        return("刚才");
    } elseif ($ntime<3600) {
        return(intval($ntime/60)."分钟前");
    } elseif ($ntime<3600*24) {
        return(intval($ntime/3600)."小时前");
    } else {
        if ($type=="talk") {
            return(gmdate('m月d日 h:i',$time+8*3600));
        } else {
            return(gmdate('y-m-d h:i',$time+8*3600));
        }

    }
}

strtr函数的另一种情况

< ?php教程 echo strtr("i loves you","love","lovea");  ?>  
结果是

i loves you

注意看第三个参数的a,在结果中并没有出现

4.我不建议用strtr以少换多

ok,既然这个strtr函数挺麻烦为什么还要用呢?
原因是,它的速度很快
据说,strtr 比 str_replace 快四倍

5.php字符串替换能用strtr函数的时候一定要用

那怎么用才舒服?
这就是它的第二种情况
strtr(string,array)

6.strtr符合意愿的使用方法


< ?php $table_change = array('you'=>'her sister');  echo strtr("i love you",$table_change);  ?>   
结果为
i love her sister

7.小技巧:你想到php字符串替换该替换什么你就往数组加什么

比如

< ?php $table_change = array('you'=>'her sister');  $table_change += array('love' => 'hate');  echo strtr("i love you",$table_change);  ?>  
结果是

i hate her sister

 

str_replace


替换

  替换的意义在于将一个字符串的一部分进行改动,使之成为别外一个新的字符串,以满足新的需求。php里通常用str_replace("要替换的内容", "要取代原内容的字符串", "原字符串")进行替换。
echo str_replace("iwind", "kiki", "i love iwind, iwind said"); // 将输出 "i love kiki, kiki said"
即将 原字符串中的所有"iwind"都替换成了"kiki".

str_replace是大小写敏感的,所以对你不能设想用 str_replace("iwind", "kiki",...)替换原字符串中的"iwind".

str_replace还能实现多对一,多对多的替换,但无法实现一对多的替换:
echo str_replace(array("iwind", "kiki"), "people", "i love kiki, iwind said");
将会输出
i love people, people said
第一个参数中的array("iwind", "kiki")都被替换成了"people"

echo str_replace(array("iwind", "kiki"), array("gentle man", "ladies"), "i love kiki, iwind said");

  输出 i love ladies, gentle man said 。也就是说第一个数组中的元素被第二个数组中的相对应的元素替换掉了,如果有一个数组比另一个数组元素数要少,那么不足的都会当作空来处理。

  和此有些类似的是strtr,

  此外,php还提供了substr_replace,实现替换一部分的字符串。语法如下:

substr_replace (原字符串, 要替代的字符串, 开始替换的位置 [, 替换的长度])

  其中,开始替换的位置从0开始计算,应该小于原字符串的长度。要替换的长度是可选的。

echo substr_replace("abcdefgh", "def", 3); // 将输出 "abcdef"
echo substr_replace("abcdefgh", "def", 3, 2); // 将输出 "abcdeffgh"

  第一个例子中,从第三个位置(即"d")开始替换,从而把 "defgh"都替换成了“def”

  第二个例子中,也是从第三个位置(即"d")开始替换,但只能替换2个长度,即到e,所以就把"de"替换成了"def".

  php还提供了preg_replace,preg_replace_callback,ereg_replace,eregi_replace等函数应用正则表达式来完成字符串替换,用法请参考手册。


定义和用法
str_replace() 函数使用一个字符串替换字符串中的另一些字符。

语法
str_replace(find,replace,string,count)参数 描述
find 必需。规定要查找的值。
replace 必需。规定替换 find 中的值的值。
string 必需。规定被搜索的字符串。
count 可选。一个变量,对替换数进行计数。
提示和注释
注释:该函数对大小写敏感。请使用 str_ireplace() 执行对大小写不敏感的搜索。

注释:该函数是二进制安全的。
例子
例子 1
<?php
echo str_replace("world","john","hello world!");
?>

[!--infotagslink--]

相关文章

  • phpems SQL注入(cookies)分析研究

    PHPEMS(PHP Exam Management System)在线模拟考试系统基于PHP+Mysql开发,主要用于搭建模拟考试平台,支持多种题型和展现方式,是国内首款支持题冒题和自动评分与教师评分相...2016-11-25
  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • JS使用cookie实现DIV提示框只显示一次的方法

    本文实例讲述了JS使用cookie实现DIV提示框只显示一次的方法。分享给大家供大家参考,具体如下:这里运用JavaScript的cookie技术,控制网页上的提示DIV只显示一次,也就是当用户是第一次打开网页的时候才显示,第二次自动隐藏起...2015-11-08
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • PHP中SSO Cookie登录分析和实现

    什么是SSO?单点登录SSO(Single Sign-On)是身份管理中的一部分。SSO的一种较为通俗的定义是:SSO是指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护...2015-11-08
  • PHP中func_get_args(),func_get_arg(),func_num_args()的区别

    复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04
  • PHP中SSO Cookie登录分析和实现

    什么是SSO?单点登录SSO(Single Sign-On)是身份管理中的一部分。SSO的一种较为通俗的定义是:SSO是指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护...2015-11-08
  • PHP编程 SSO详细介绍及简单实例

    这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
  • vue项目中js-cookie的使用存储token操作

    这篇文章主要介绍了vue项目中js-cookie的使用存储token操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-14
  • PHP实现创建以太坊钱包转账等功能

    这篇文章主要介绍了PHP实现创建以太坊钱包转账等功能,对以太坊感兴趣的同学,可以参考下...2021-04-20
  • php微信公众账号开发之五个坑(二)

    这篇文章主要为大家详细介绍了php微信公众账号开发之五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-02
  • ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单

    首先是数据库的设计。分类表叫cate.我做的是分类数据的二级联动,数据需要的字段有:id,name(中文名),pid(父id). 父id的设置: 若数据没有上一级,则父id为0,若有上级,则父id为上一级的id。数据库有内容后,就可以开始写代码,进...2014-05-31
  • PHP如何通过date() 函数格式化显示时间

    这篇文章主要介绍了PHP如何通过date() 函数格式化显示时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-13
  • PHP+jQuery+Ajax实现多图片上传效果

    今天我给大家分享的是在不刷新页面的前提下,使用PHP+jQuery+Ajax实现多图片上传的效果。用户只需要点击选择要上传的图片,然后图片自动上传到服务器上并展示在页面上。...2015-03-15
  • 什么是cookie?js手动创建和存储cookie

    什么是cookie? cookie 是存储于访问者的计算机中的变量。每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie。你可以使用 JavaScript 来创建和取回 cookie 的值。 有关cookie的例子: 名字 cookie 当访...2014-05-31
  • 如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标

    从IE 10开始,type=”text” 的 input 在用户输入内容后,会自动产生一个小叉叉(X),方便用户点击清除已经输入的文本,下面通过本文给大家介绍下如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标...2017-01-09
  • golang与php实现计算两个经纬度之间距离的方法

    这篇文章主要介绍了golang与php实现计算两个经纬度之间距离的方法,结合实例形式对比分析了Go语言与php进行经纬度计算的相关数学运算技巧,需要的朋友可以参考下...2016-07-29
  • python爬虫用request库处理cookie的实例讲解

    在本篇内容里小编给大家整理的是一篇关于python爬虫用request库处理cookie的实例讲解内容,有需要的朋友们可以学习参考下。...2021-02-21
  • PHP如何使用cURL实现Get和Post请求

    这篇文章主要介绍了PHP如何使用cURL实现Get和Post请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-07-11