Cookies IIS 5
Sará capitato di scoprire che IIS5 non gestisce in maniera corretta, o come si vorrebbe, i Cookies. Ecco cosa succede.
Creando un Cookie con PHP e cercando di fare un redirect verso un'altra pagina, se si utilizza un Server IIS5 il Cookie non viene creato. Ad esempio se ho una pagina aaa.php:
/////aaa.php////////////////////
if(isset($_POST['xxx'])){
$kiave = md5($_POST['xxx']);
setcookie(test, $kiave);
print_r($_COOKIE);
//header("Location: xxx.php");
exit;
}
//////////////////////////////////
?>
Non attivando il redirect il cookie viene creato. Se invece creo il codice seguente e attivo il redirect verso una pagina ipotetica bbb.php, vedrete che se la pagina PHP si trova su un Server IIS5 non verrà creato il cookie:
/////aaa.php////////////////////
if(isset($_POST['xxx'])){
$kiave = md5($_POST['xxx']);
setcookie(test, $kiave);
//print_r($_COOKIE);
header("Location: bbb.php");
exit;
}
//////////////////////////////////
?>
Soluzione - Solution
Ebbene c'è un modo per risolvere questo problema e fare in modo di creare il nostro bel "biscottino" anche su Server IIS5 ed è il seguente:
//////////aaa.php///////////////
$redirect = "bbb.php";
// cookie
$kiave = "xxx";
setcookie(an_c, $kiave);
// IIS5 fix
if (strstr(php_uname(), 'Windows'))
header("Refresh: 0;url=$redirect");
else
header("Location: $redirect");
// IIS5 fix
//////////////////////////////////
?>

