Mam klasę:
<?php
class User
{
var $cookie_time;
var $cookie_name;
var $cookie_path;
var $cookie_domain;
var $cookie_secure;
var $template;
var $type;
var $ip;
var $host;
var $agent;
function User() {
global $Config;
$this->cookie_time = time() + 60 * 60 * 24 * 180;
$this->cookie_name = $Config['cookie_prefix'] . "session";
$this->cookie_path = $Config['cookie_path'];
$this->cookie_domain = $Config['cookie_domain'];
$this->cookie_secure = $Config['cookie_secure'];
if( $this->_get_cookie( $Config['cookie_prefix'] . "session" ) ) {
session_id( $_COOKIE[$Config['cookie_prefix'] . 'session'] );
session_start();
} else {
session_start();
$this->template = $Config['template'];
$this->type = USER_ANONYMOUS;
}
$this->ip = $this->_get_user_ip();
$this->host = gethostbyaddr( $this->ip );
$_SESSION['template'] = $this->template;
}
function _get_cookie( $value ) {
if( isset( $_COOKIE[$value] ) ) {
return $_COOKIE[$value];
} else {
return "";
}
}
function _get_user_ip () {
if( isset( $_SERVER["HTTP_X_FORWARDED_FOR"] ) ) {
return $_SERVER["HTTP_X_FORWARDED_FOR"];
} else {
return $_SERVER['REMOTE_ADDR'];
}
}
function save_user_data() {
setcookie( $this->cookie_name, session_id(), $this->cookie_time, $this->cookie_path, $this->cookie_domain, $this->cookie_secure );
echo $this->cookie_name . "<br>";
echo session_id() . "<br>";
echo $this->cookie_time . "<br>";
echo $this->cookie_path . "<br>";
echo $this->cookie_domain . "<br>";
echo $this->cookie_secure . "<br>";
}
}
?>
a tablica $Config wygląda tak:
$Config['cookie_prefix'] = "main_";
$Config['cookie_path'] = "/";
$Config['cookie_domain'] = "localhost";
$Config['cookie_secure'] = 0;
Problem jest następujący: po wywołaniu f-cji save_user_data(); ciasteczko się nie zapisuje, lecz gdy zastąpię tą linijkę:
$this->cookie_domain = $Config['cookie_domain'];
na:
$this->cookie_domain = "localhost";//$Config['cookie_domain'];
to ciasteczko się zapisuje. Więc o co chodzi?? Dlaczego jeśli informacja o domenie jest pobierana z tablicy to wtedy występuje błąd i ciasteczko się nie zapisuje??