2016-09-25 40 views
1

我写了下面的类,Cookie.php无法获得setcookie()函数的工作权

class Cookie extends Config{ 

//Variables declaration 
private $cookieName; 
private $cookieValue; 
private $cookieExpireTime; 
private $cookiePath; 
private $cookieDomain; 
private $cookieSecureThroughSSL; 
private $cookieOnlyThroughHTTP; 

//Constructor method, creates a new cookie with the assigned values 
function __construct($presetCookieName, 
        $presetCookieValue, 
        $presetCookieExpireTime, 
        $presetCookiePath='/', 
        $presetCookieDomain = NULL, 
        $presetCookieSecureThroughSSL = false, 
        $presetCookieOnlyThroughHTTP = true){ 

    $this->cookieName = $presetCookieName; 
    $this->cookieValue = $presetCookieValue; 
    $this->cookieExpireTime = $presetCookieExpireTime; 
    $this->cookiePath = $presetCookiePath; 
    $this->cookieDomain = $presetCookieDomain; 
    $this->cookieSecureThroughSSL = $presetCookieSecureThroughSSL; 
    $this->cookieOnlyThroughHTTP = $presetCookieOnlyThroughHTTP; 

    return $this->createCookie(); 
} 

//Clean cookie from possible malicious HTML code, or mistakenly typed spaces 
private function cleanCookieValue($value){ 
    return htmlspecialchars(str_replace(' ', '', $value)); 
} 

//Create a new cookie function 
public function createCookie(){ 
    return setcookie($this->cleanCookieValue($this->cookieName), 
        $this->cleanCookieValue($this->cookieValue), 
        $this->cleanCookieValue($this->cookieExpireTime), 
        $this->cleanCookieValue($this->cookiePath), 
        $this->cleanCookieValue($this->cookieDomain), 
        $this->cleanCookieValue($this->cookieSecureThroughSSL), 
        $this->cleanCookieValue($this->cookieOnlyThroughHTTP)); 
} 

而下面的测试文件:

$cookie = new Cookie("testCookie", "Value", 3600, "/"); 

if(isset($_COOKIE['testCookie'])){ 
    echo 'Success'; 
} 
else{ 
    echo 'Failed!'; 
} 

而且我不断收到 '失败' 错误(在两次或更多次刷新之后)。 你们在这里看到问题吗?

顺便说一句,下面简单的例子完美的作品:

setcookie("token", "value", time()+60*60*24*100, "/"); 

if(isset($_COOKIE['token'])){ 
    echo 'Token succeeded'; 
} 
else{ 
    echo 'Token failed!'; 
} 

回答

0

在课堂上,你曾发布第三个参数是$presetCookieExpireTime,不是“生命秒”。为了使其工作 - 做

$cookie = new Cookie("testCookie", "Value", time() + 3600, "/"); 
+0

非常感谢!有效! – StackMaster