2016-09-25 2 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

В классе, вы были размещены 3-й параметр является $presetCookieExpireTime, а не «секунды жизни». Чтобы это работало - сделайте

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

Большое спасибо! Это сработало! – StackMaster

Смежные вопросы