【问题标题】:Setcookie > sniff > output on same pageSetcookie > 嗅探 > 在同一页面上输出
【发布时间】:2010-03-25 03:38:30
【问题描述】:

我想知道是否有人可以帮助阐明这一点:

如果用户使用查询字符串中的特定键/值到达站点,我会删除 cookie。即:http://www.somesite.com?key=hmm01

cookie 代码存在于模板顶部<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ) 之前:

<?php header("Content-Type: text/html; charset=utf-8"); ob_start(); if (isset($_GET['key'])) { setcookie("cookname", $_GET['key'], time()+2592000); /* Expires in a month */ } ob_end_flush(); ?>

虽然在同一页面上:我有以下 php 代码嗅探 cookie 并输出一些文本:

`

开关($cookie 值) { 案例 hmm01: 回声“ABC”; 休息; 案例 hmm02: 回声“定义”; 休息; 案例 hmm03: 回声“ghi”; 休息; 默认: 回声“你好”; } ?>`

-- 问题是当用户第一次到达时,嗅探器脚本没有检测到 cookie 并输出默认文本:hello 只有当用户刷新页面或导航到不同的页面时,嗅探器才会检测到 cookie。

关于如何在不刷新页面的情况下删除 cookie 并输出正确文本的任何想法?

非常感谢。

【问题讨论】:

  • 这里的ob start有什么用?

标签: php cookies sniffing


【解决方案1】:

第一次检查$_GET:

if(isset($_GET['key'])) { $cookievalue = $_GET['key']; }
if(isset($_COOKIE['cookname'])) { $cookievalue = $_COOKIE['cookname']; }

switch ($cookievalue) { case hmm01: echo "abc"; break; case hmm02: echo "def"; break; case hmm03: echo "ghi"; break; default: echo "hello"; } ?>

【讨论】:

  • 非常感谢亚历克 - 这很有效。该死的,我真的应该想出一个:~
【解决方案2】:

if(查询字符串中的特定键/值)$_COOKIE['cookname'] = "some value";

并学习一些 HTTP

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 2020-06-25
    • 1970-01-01
    • 2010-10-18
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多