Lo script che mi serve dovrebbe risettare i cookies di login una volta che l'utente abbia cambiato la propria password, in modo che non deva essere costretto a fare il logout e a riconnettersi.
Siccome ho già stampato del codice in precedenza, non posso usare la funzione setcookie nella stessa pagina in cui cambia la password.
La mia idea è: una volta fatta l'update del campo password tramite post, richiamo una pagina a parte con jquery; lì setto il cookie.
Però non mi funzia. Raggiungo la pagina esterna, ma non mi setta il cookie (e ovviamente quando fa l'headers l'utente si disconnette, visto che non trova corrispondenze tra i parametri del cookie e la nuova password).
Questo il codice javascript:
codice:
//funzione base da richiamare a ogni uso di ajax
function CreateXmlHttpReq(handler){
var xmlhttp = null;
try{
xmlhttp = new XMLHttpRequest();
}catch(e){
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
xmlhttp.onreadystatechange = handler;
return xmlhttp;
}
//aggiorna in tempo reale i campi modificati; "indirizzo" è il link al file dove viene eseguito lo script (che può essere insert, update, ecc.)
function aggiorna_campo(indirizzo, valore){
myRequest = CreateXmlHttpReq();
myRequest.open("GET", indirizzo+'&valore='+valore);
myRequest.send(null);
}
Questo il richiamo che faccio subito dopo il cambio di password ($valore contiene password in md5 + username, che viene passato come get alla pagina resetta_cookie.inc.php):
codice:
<script language="JavaScript" type="text/javascript">aggiorna_campo('resetta_cookie.inc.php', '<?php echo $valore; ?>')</script>
Pagina di settaggio del cookie:
Codice PHP:
$username=substr($_GET["valore"], 32);
$password=substr($_GET["valore"], 0, 32);
//setto la durata del cookies a una settimana
setcookie("session", $username.'_&&_'.$password, time()+3600*24*7);
Qualche idea del perché non va?