Sto facendo delle prove con la programmazione ad oggetti e non riesco a capire il motivo di questo (per me) strano compotamento:
L'idea è di scrivere una classe che al momento dell'instaziazione generi un cookie con delle informazioni da usare successivamente. Qualcosa del genere:
Codice PHP:
class user_session {
public function __construct($cookie_name) {
if (!isset($_COOKIE[$cookie_name])) {
$_SESSION_VALUES = $this->session_vars (ABSPATH, $cookie_name);
}
}
Non riporto il resto, perché direi non utile a questa discussione. Preciso solo che session_vars crea un array con variabili utili e che ABSPATH è una define con la directory assoluta di dove è eseguito il programma.
Codice PHP:
public function session_vars ($startingDir, $cookie_name) {
if (php_uname("s") == "Linux") {
$_SESSION_VALUES['_SYSTEM'] = "Linux"; }
else $_SESSION_VALUES['_SYSTEM'] = "Windows";
....
....
$this->set_cookie ($cookie_name, $_SESSION_VALUES);
Insomma, ho provato il tutto con un programma del tipo:
Codice PHP:
echo "Istanzia [i]user_session ( " . COOKIE_NAME . ")[/i]
";
$user = new user_session(COOKIE_NAME);
echo "Leggo il [i]cookie[/i] " . COOKIE_NAME . "
";
$COOKIE_STRUCTURE = $user->get_cookie (COOKIE_NAME);
if (isset($_COOKIE[COOKIE_NAME]))
{echo "Cookie settato
";
show_array ($COOKIE_STRUCTURE);
$user->remove_cookie(COOKIE_NAME);
echo "cookie(" . COOKIE_NAME . ") rimosso
";}
else echo "Cookie [b]NON[/b] esiste!
";
Come mai, alla prima esecuzione ottengo il seguente:
Istanzia
user_session (_prova_cookie)
Leggo il cookie
_prova_cookie
Cookie NON esiste!
mentre a una immediata riesecuzione, ottengo qualcosa del tipo:
Istanzia user_session (_prova_cookie)
Leggo il cookie _prova_cookie
Cookie settato
_SYSTEM -> Windows
_CSS_DIR -> /css
_JS_DIR -> /js
_USERNAME ->
_PASSWORD ->
_USER -> 0
....
....
_COOKIE_NAME -> _prova_cookie
cookie(_prova_cookie) rimosso
Vale a dire, sembra funzionare solo a una seconda esecuzione!
Qualcuno sa spiegarmi come mai?
Grazie.