2009年6月14日 星期日

Snoopy setcookies的問題

PHP中有個很有名的套件,叫Snoopy。它是一隻可以模枋瀏覽器的client。它的官網在SOURCEFORGE,但是已經很久沒有人在更新了。所以後來我都是找wordpress改過的版本,因為之前看好像他們有在修改。

直接下載就可以了。 http://svn.automattic.com/wordpress/trunk/wp-includes/class-snoopy.php

但是昨天發現它有個地方寫得不太好。在

function setcookies()
{
        for($x=0; $x<count($this->headers); $x++)
        {
        if(preg_match('/^set-cookie:[\s]+([^=]+)=([^;]+)/i', $this->headers[$x],$match))
                $this->cookies[$match[1]] = urldecode($match[2]);
        }
}

urldecode那,加個trim會比較好,因為某些情況下,它擷取出來的cookie會多個換行,當cookie要持續使用的時候,server就不吃那cookie了。