55

header('P3P: CP="CAO PSA OUR"');为了什么?

它如何/为什么让这个脚本在 IE 中正常工作?

session_start();

if (!session_is_registered(pre_myusername)) {
    header("location:index.php");
    exit();
}
4

3 回答 3

66

P3P 是隐私偏好平台。该值CP="CAO PSA OUR"描述了带有令牌的紧凑策略

  • 联系人和其他人(访问信息:收集哪些信息?

    已识别的联系信息和其他已识别数据:可以访问已识别的在线和物理联系信息以及某些其他已识别数据。

  • 伪分析(目的信息:收集的信息有什么用途?

    假名分析:信息可用于创建或建立与假名标识符相关的特定个人或计算机的记录,而无需将已识别的数据(例如姓名、地址、电话号码或电子邮件地址)与记录相关联。此个人资料将用于确定个人的习惯、兴趣或其他特征,以进行研究、分析和报告,但不会用于尝试识别特定个人。例如,营销人员可能希望了解访问者对网站不同部分的兴趣。

  • 我们的(接收方信息:谁获得了收集到的信息?

    我们自己和/或作为我们代理的实体或我们作为代理的实体:在这种情况下,代理被定义为仅代表服务提供商处理数据以完成所述目的的第三方。(例如,打印地址标签的服务提供商及其印刷局对信息不做进一步处理。)

于 2011-03-10T10:06:36.067 回答
8

Gumbo 已经解释了 P3P 是什么。现在,关于您的代码,session_is_registered已弃用。您正在使用pre_myusername常量。如果没有定义,PHP 将假定一个字符串,但不鼓励依赖这种行为。如果您真的打算使用常量,请使用大写字母以清楚起见。请注意,变量应以美元 ( $) 为前缀。

  • 确保之前没有发送任何内容,session_start();否则不会发送会话 cookie。
  • 会话变量可从$_SESSION数组中获得。
  • isset()可用于检查变量是否存在(本例中为数组键)。

因此,实际代码变为:

session_start();
if(!isset($_SESSION['pre_myusername'])){
    header("Location: index.php");
    exit();
}

有关会话函数的示例和文档,请访问PHP 手册

于 2011-03-10T10:26:53.913 回答
3

header('P3P: CP="CAO PSA OUR"')设置特定的P3P紧凑策略 (CP),该策略通常用于允许 (i) 框架中的第三方 cookie 在 Internet Explorer 中使用。

来自Microsoft 知识库文章 323752

Internet Explorer 6 引入了对隐私首选项平台 (P3P) 项目的支持。P3P 标准指出,如果 FRAMESET 或父窗口引用 FRAME 或子窗口内的另一个站点,则子站点被视为第三方内容。Internet Explorer 使用默认的 Medium 隐私设置,默默地拒绝从第三方站点发送的 cookie。

文章描述了上面的CP代码:

此代码示例显示您的站点为您提供了对您自己的联系信息 (CAO) 的访问权限,任何分析的数据都只是“伪分析”,这意味着数据与您的在线角色相关联,而不是与您的物理身份相关联 (PSA ),并且您的数据不会提供给任何外部机构供这些机构使用 (OUR)。

注意这个 CP 是无效的,因为它不包含任何RETENTIONCATEGORIES令牌。

于 2013-02-25T14:45:30.993 回答