我正在尝试制作一个 PHP 脚本,通过首先从文件中读取它们来为浏览器设置 cookie。在文件中是一段 HTTP 标头“Cookie: x=foo; y=bar; etc”。该脚本对字符串进行了清理,因此我们最终只得到了变量名 (x) 和变量值 (foo)。问题是当我从文件中设置 cookie 时,使用 Wireshark 我看到了发送到 broser 的变量的确切值。当我看到浏览器向页面发送了哪些 cookie 时,它们是不同的,即我设置 cookie x=foo;,然后浏览器将其作为 Cookie:x=bar 发送回页面。你知道这可能是什么原因吗?当我使用 Greasemonkey 脚本注入 cookie 时,一切都很好。这是我的代码:
<?php
function inject($what)
{
for($i=0;$i<count($what);$i++)
{
$name = $what[$i][0];
echo "injecting cookie named \"$name\" .... <br> ";
setrawcookie($what[$i][0], $what[$i][1]);
}
echo 'all cookies injected properly, ready';
}
$newcook=file("/home/todor/cook.txt");
echo '<pre>';
for ($i=0; $i<count($newcook); $i++)
$newcook[$i] = str_replace('Cookie: ', '', $newcook[$i]);
$newcook = explode('; ', $newcook[0]);
for($i=0;$i<count($newcook);$i++)
$newcook[$i] = explode('=', $newcook[$i]);
for($i=0;$i<count($newcook);$i++)
echo 'cookie variable name "'.$newcook[$i][0].'" with value of "'.$newcook[$i][1].'"<br>';
echo '</pre>';
inject($newcook);
?>
---------------Cookies being set----------------------
Set-Cookie: MoodleSession=h0j51hvrkvu30mdeu3d9321thit8c8pdkle66llr2lipj80chjb0
Set-Cookie: __utma=16796069.1074685784.1352477410.1352477410.1352477410.1
Set-Cookie: __utmc=16796069
Set-Cookie: __utmz=16796069.1352477410.1.1.utmcsr
---------------Cookies being sent to the server -----------
Cookie: MoodleSession=hn92mn8vhl6kvg7f8qogpgm8reeisnoope27o7q3ivrecnr84gb1; __utma=16796069.1720416199.1352484234.1352484234.1352484234.1; __utmb=16796069.1.10.1352484234; __utmc=16796069; __utmz=16796069.1352484234.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)