-
problema $_COOKIE
Salve, eseguendo il login in una piattaforma MyBB , ho notato che viene salvato un cookie di nome mybbuser , solamente che dal sito (dove c'è anche il forum) facendo
Codice PHP:
echo $_COOKIE['mybbuser'];
non appare nulla. Non credo ciò dipenda dal nome del cookie uguale anche da altri siti dato che comunque dal php vengono letti solo quelli del sito..
Può dipendere forse dal fatto che il cookie viene salvato da una cartella e non dalla root principale? O può esser causato dal "sottodominio" che si crea quando si registra un sito su altervista?
-
Quando si salva un cookie, si può limitare l'accesso ad uno specifico percorso, non solo al dominio di creazione. Per verificare se questo è il caso, puoi controllare i dettagli del cookie.
E.g., in Firefox puoi usare la pagina chrome://browser/content/preferences/cookies.xul, che per ogni cookie ti mostra il dominio ed il path ai quali è limitato.
-
mmh, nel cookie da quella pagina ci sono queste informazioni:
Nome: mybbuser
Contenuto: *Il suo contenuto*
Dominio: .zonahabbo.altervista.org
Percorso: /forum/
Invia per: Qualunque tipo di connessione
Scadenza: *data scadenza*
Devo modificare la path del cookie qindi (quando viene registrato) in ./ ? (VIene registrato dalla cartella /forum/ )
-
Devi convincere in qualche modo mybb a salvare i cookie con un path diverso (e.g., /). Non ho idea se questo sia possibile via configurazione o solo via modifiche al codice.
-
Mmh il cookie viene salvato così:
Codice PHP:
my_setcookie("mybbuser", $user_info['uid']."_".$user_info['loginkey'], null, true);
La funzione my_setcookie:
Codice PHP:
function my_setcookie($name, $value="", $expires="", $httponly=false)
{
global $mybb;
if(!$mybb->settings['cookiepath'])
{
$mybb->settings['cookiepath'] = "/";
}
if($expires == -1)
{
$expires = 0;
}
elseif($expires == "" || $expires == null)
{
$expires = TIME_NOW + (60*60*24*365); // Make the cookie expire in a years time
}
else
{
$expires = TIME_NOW + intval($expires);
}
$mybb->settings['cookiepath'] = str_replace(array("\n","\r"), "", $mybb->settings['cookiepath']);
$mybb->settings['cookiedomain'] = str_replace(array("\n","\r"), "", $mybb->settings['cookiedomain']);
$mybb->settings['cookieprefix'] = str_replace(array("\n","\r", " "), "", $mybb->settings['cookieprefix']);
// Versions of PHP prior to 5.2 do not support HttpOnly cookies and IE is buggy when specifying a blank domain so set the cookie manually
$cookie = "Set-Cookie: {$mybb->settings['cookieprefix']}{$name}=".urlencode($value);
if($expires > 0)
{
$cookie .= "; expires=".@gmdate('D, d-M-Y H:i:s \\G\\M\\T', $expires);
}
if(!empty($mybb->settings['cookiepath']))
{
$cookie .= "; path={$mybb->settings['cookiepath']}";
}
if(!empty($mybb->settings['cookiedomain']))
{
$cookie .= "; domain={$mybb->settings['cookiedomain']}";
}
if($httponly == true)
{
$cookie .= "; HttpOnly";
}
$mybb->cookies[$name] = $value;
header($cookie, false);
}
Nelle impostazioni della board, c'è "Percorso dei cookie", ma settandolo a ./ Non cambia nulla.. Devo settarlo a ../ ? :S
-
Hai provato con solo "/"?
-
-
Per completezza: non modificare la funzione, bensì modifica il valore nel Pannello Amministrazione in MyBB.
:wink: