PHP如何读取COOKIES

 更新时间:2016年11月25日 17:16  点击:2153
察看浏览器的 Cookies
  让我们来看看保存在浏览器中的内容。如果你用的是 IE5 ,在 windows 目录下有一个 cookies 的目录,里面有很多文本文件,文件名都是类似于 wudong@15seconds[1].txt 这样的,这就是浏览器用来保存值的 cookies 了。在以前的 IE 版本中, cookies 的内容是可以察看的,但现在内容已经被编码了。在浏览器得到一个 Web 页面之前,它会先看这个页面的域名,是否在 cookie 中存在,如果有相比配的,浏览器会先把匹配的 cookie 传送到服务器,然后才接受处理服务器传送过来的页面。
  先举个 cookies 应用的例子:当我连接到 Amazon.com 时,浏览器在接受第一个页面之前会把它以前设置的 cookies 的内容传送给 Amazon 。然后 Amazon.com 对传送过来的内容加以检查,看看在数据库中有没有相关资料,在匹配之后,在为我建立一个定制的页面传送到过来。
======================
为 cookies 赋值
必须在服务器传送任何内容给客户浏览器之前为 Cookies 赋值。要做到这一点, cookies 的设置就必须放在 < HEAD> 标签内:
< ?php
setcookie("CookieID", $USERID);
?>
< HTML>
< BODY>
< /BODY>
< /HTML>
   setcookie 函数一共有六个参数,用逗号来分隔:
cookie 的名称,是一个字符串,例如: "CookieID" 。其间不允许有冒号,逗号和空格。这个参数是必须的,而其它的所有参数都是可选的。如果只有这一个参数被给出,那么这个 cookie 将被删除。
cookie 的值,通常是一个字符串变量,例如: $USERID 。也可以为它赋一个 ?? 来略过值的设置。
cookie 失效的时间。如果被省略(或者被赋值为零), cookie 将在这个对话期( session )结束后失效。这个参数可以是一个绝对的时间,用 DD-Mon-YY HH:MM:SS 来表示,比如: "24-Nov-99 08:26:00" 。而更常用的是设置一个相对时间。这是通过 time() 函数或者 mktime 函数来实现的。比如 time()+3600 将使得 cookie 在一个小时后失效。
一个路径,用来匹配 cookie 的。当在一个服务器上有多个同名的 cookie 的设置,为避免混淆,就要用到这个参数了。使用 "/" 路径的和省略这个参数的效果是一样的。要注意的是 Netscape 的 cookie 定义是把域名放在路径的前面的,而 PHP 则与之相反。
服务器的域名,也是用来匹配 cookie 的。要注意的是:在服务器的域名前必须放上一个点( . )。例如: ".friendshipcenter.com" 。因为除非有两个以上的点存在,否者这个参数是不能被接受的。
前言
     今天突然想到PHP官方网站上一转,一眼就看到PHP5推出的通告。虽然以前看到过PHP5的预告,但还是仔细看了PHP 5/Zend Engine 2.0新特性一文,一股JAVA气息扑面而来...
     特将该文试译出来,首发于CSDN网站,以飨读者。
PHP 5/Zend Engine 2.0新特性
徐唤春 译 sfwebsite@hotmail.com
http://www.php.net/zend-engine-2.php
全新的对象模型
PHP中的对象处理部分已完全重写,具有更佳的性能和更多的功能。在PHP的以前版本中,对象与内建变量类型(如integer和string)的处理方法相同,其弊端是当变量被赋值为对象或对象作为参数传递时,得到的是对象复制品。而在新版本中,对象通过句柄进行引用,而不是通过它的值。(句柄可以认是为是对象的标识符)
很多PHP程序员可能未意识到以前的对象模型的“复制怪癖”,因此以前的PHP程序将不需要做任何更改,或只做很小的改动即可运行
私有和保护成员
PHP 5引入了私有和保护成员变量,它们可以定义类属性在何时可以被访问。

类的保护成员变量能在该类的扩展类中被访问,而私有成员变量只能在本类中被访问。
<?php
class MyClass {
    private $Hello = "Hello, World! ";
    protected $Bar = "Hello, Foo! ";
    protected $Foo = "Hello, Bar! ";
    function printHello() {
        print "MyClass::printHello() " . $this->Hello;
        print "MyClass::printHello() " . $this->Bar;
        print "MyClass::printHello() " . $this->Foo;
    }
}
class MyClass2 extends MyClass {
    protected $Foo;
       
    function printHello() {
        MyClass::printHello();             /* Should print */
PHP代码:--------------------------------------------------------------------------------
function FactoryMethod($class_type)
{
switch ($class_type)
{
case “foo”:
$obj = new MyFoo();
break;
case “bar”:
$obj = new MyBar();
break;
}
return $obj;
}
$object = FactoryMethod(“foo”);
$object->method()->method()
$copy_of_object = $object->__clone();
class MyClass
{
function __destruct()
{
… // Run destructor code
}
}
delete $object;
class Shape {
function __construct()
{
// shape initialization code

}

};
class Square extends Shape
{
function __construct()
{
parent::__construct();
// square-specific initialization code

}

};
class foo
{
private $priv_var;
function some_method(…)
{
$this->priv_var = …; // zend 上写的是:$priv_var = …; ,我没试过。
}
};
class Logger
{
static $m_Instance = NULL;
function Instance()
{
if(Logger::$m_Instance == NULL)
{
Logger::$m_Instance = new Logger();
}
return Logger::$m_Instance;
}
function Log()
{

}
};
$Logger = Logger::Instance();
$Logger->Log(…);
try
{
…code
if (failure)
{
throw new MyException(“Failure”);
}
…code
}
catch ($exception)
{
… handle exception
throw $exception; // Re-throw exception.
}

第3章    安装
    本章将引导您如何安装和设置PHP3。并介绍必要的知识和软件。
基本的UNIX技巧(学会如何操作和“制作”一个C编译器)
一个标准的ANSI C的编译器
一个WEB服务器(显然需要)
 
通过UNIX源码编译安装
    下载源文件
     最新的源代码可以在以下网址找到:http://www.php.net
 
    快速安装说明书(Apache Module 版本)
1. gunzip apache_1.3.x.tar.gz
2. tar xvf apache_1.3.x.tar
3. gunzip php-3.0.x.tar.gz
4. tar xvf php-3.0.x.tar
5. cd apache_1.3.x
6. ./configure --prefix=/www
7. cd ../php-3.0.x
8. ./configure --with-mysql --with-apache=../apache_1.3.x --enable-track-vars
9. make
10. make install
11. cd ../apache_1.3.x
12. ./configure --prefix=/www --activate-module=src/modules/php3/libphp3.a
13. make
14. make install
    Instead of this step you may prefer to simply copy the httpd binaryovertop of your existing binary. Make sure you shut down yourserver first though.
    (也可以使用直接拷贝httpd的二进制文件覆盖已经存在的二进制文件的方法代替上面的步骤,但是,您必须首先关闭您的服务器。)
15. cd ../php-3.0.x
16. cp php3.ini-dist /usr/local/lib/php3.ini
    You can edit /usr/local/lib/php3.ini file to set PHP options. If you prefer this file in another location, use --with-config-file=/path in step 8.
    (您可以直接编辑/usr/local/lib/php3.ini文件来设置PHP选项,如果您将此文件存放在另一个位置,那么请在步骤8中使用with-config-file=/path)
    17. Edit your httpd.conf or srm.conf file and add:
    AddType application/x-httpd-php3 .php3 You can choose any extension you wish here. .php3 is simply the one we suggest.
    (您可以选择任何您希望的扩展,我们认为PHP3是一个十分简单的东西。)
作者:Albert
  PHP作为Apache的模块运行时,Apache本身的安全起主导作用,因此如果配置正确的话,PHP应该是一个十分安全的环境,但是如果PHP是以CGI方式来运行的话,就没有这么安全了。
  本文中提到的操作,对Unix和Windows都适用。
  一、作为Apache模块来运行
  因为一般说来,Apache会以“nobody”或者“www”来运行,所以,PHP作为模块是十分安全的。
  如果PHP在虚拟主机环境下,可能会产生用户能浏览其他用户文件的危险。一个简单的脚本如下:
  
  // 假定文档根位于 /usr/local/websites/mydomain
  $location = ../; // 到上一级目录
  $parent = dir($location);
  // 显示当前目录: /usr/local/websites
  while($entry = $parent->read()) {
  echo $entry .
;
  }
  $parent->close();
  ?>
  这样,只要修改$location,用户就可以浏览虚拟主机上所有其他用户的文件了。为了减少这样的危险,我们需要看一下php.ini ,修改其中的safe_mode, doc_root和usr_dir 参数,把用户限制在他自己的虚拟主机环境下:
  safe_mode = On
  doc_root = /usr/local/apache/htdocs
  user_dir = /home/albertxu/htdocs
  二、作为CGI
  把PHP以CGI方式运行需要十分小心,可能会泄露你不想让人知道的信息。
  第一件事情要注意的就是一定要把执行文件放到文档根目录以外的地方。例如/usr/local/bin,因此所有的CGI文件开头必须带有:
  #!/usr/local/bin/php
  防止用户直接调用CGI的办法是在Apache中强迫CGI重定向:
  Action php-script /cgi-bin/php.cgi
  AddHandler php-script .php
  这会把下面的URL
  http://example.com/mywebdir/test.htm
  转换为:
  http://example.com/cgi-bin/php/mywebdir/test.htm
  在以CGI方式编译PHP时,最好采用下面的选项:
  --enable-force-cgi-redirect
  本文讨论的是有关PHP的安全问题,详细的安全信息可以参考PHP老家上手册中关于安全的
  http://www.php.net/manual/en/security.php
  那一章。


[!--infotagslink--]

相关文章

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

    PHPEMS(PHP Exam Management System)在线模拟考试系统基于PHP+Mysql开发,主要用于搭建模拟考试平台,支持多种题型和展现方式,是国内首款支持题冒题和自动评分与教师评分相...2016-11-25
  • C#从数据库读取图片并保存的两种方法

    这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
  • 源码分析系列之json_encode()如何转化一个对象

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

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • php把读取xml 文档并转换成json数据代码

    在php中解析xml文档用专门的函数domdocument来处理,把json在php中也有相关的处理函数,我们要把数据xml 数据存到一个数据再用json_encode直接换成json数据就OK了。...2016-11-25
  • 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
  • c# 对CSV文件操作(写入、读取、修改)

    这篇文章主要介绍了c# 如何对CSV文件操作,帮助大家更好的理解和学习C#,感兴趣的朋友可以了解下...2020-11-03
  • PHP编程 SSO详细介绍及简单实例

    这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
  • python读取和保存mat文件的方法

    本文主要介绍了python读取和保存mat文件的方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-08-25
  • vue项目中js-cookie的使用存储token操作

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

    这篇文章主要介绍了PHP实现创建以太坊钱包转账等功能,对以太坊感兴趣的同学,可以参考下...2021-04-20
  • Android中使用SDcard进行文件的读取方法

    首先如果要在程序中使用sdcard进行存储,我们必须要在AndroidManifset.xml文件进行下面的权限设置: 在AndroidManifest.xml中加入访问SDCard的权限如下: <!--...2016-09-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