- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problema con COOKIE
-
Problema con COOKIE
Salve a tutti ... sto sbattendo la testa su un pezzo di codice in cui devo risettare un cookie ... ma non capisco perchè, il cookie non me lo setta !!!
La pagina serve a settarsi un proprio avatar ... anzichè fare una query per visualizzarsi l'avatar appena settato, glielo vorrei mostrare attraverso il cookie:
[PHP]
if ($_GET['imposta'] != '') {
$sql= "UPDATE mp_login set avatar = '$_GET[imposta]' WHERE nick = '$username'";
@mysql_query ($sql);
setcookie("FG['avatar']", $_GET[imposta], time() + 129600, "/");
echo ('<script language="javascript">
top.location.href = "setta_avatar.php?impostato";
</script>');
exit;
}
[/PHP]Lo script apparentemente è corretto infatti un "primo giro" lo fa ... tutti gli altri invece non vengono settati .. come se non riuscisse a sovrascrivere, per intenderci.
Anche se al posto di $_GET[imposta] metto "ciao" la musica non cambia.
Premetto che sullo stesso sito faccio uso di COOKIE correttamente e senza nessun problema.
Cosa puo essere?
-
i cookie vengono settati dall'header della pagina, sei sicuro di non fare un output prima del comando che li setta?
-
@Tymba said:
i cookie vengono settati dall'header della pagina, sei sicuro di non fare un output prima del comando che li setta?
no, non sono affatto sicuro ...
quindi puo darsi sia per quello?grazie, domani provo
-
se fai un output prima del comando setcookie è sicuramente per quello
-
Niente, il problema rimane .. a dire il vero tutto il sistema basato sui cookie inspiegabilmente non funziona piu ... o anzi .. funziona malissimo ... e non capisco perchè !!!
Questo è un pezzo dello script di login che rilascia il cookies
[PHP]
$username = $_POST['nick']; // Piglia l'input nick dal form
$password = $_POST['password']; // Come sopra$query = "SELECT * FROM $tbl WHERE nick = '$username' AND password = '$password' AND (status = 'a' OR status = 'b')";
$result = mysql_query($query, $db);
$row = mysql_fetch_array($result);
if(mysql_num_rows($result)) { // Se l'user e pwd sono corretti fai quanto segue;// Scrivi il Cookie setcookie("FG[username]", $username, time() + 129600, "/"); // Cookie di 36h setcookie("FG[password]", $password, time() + 129600, "/"); // Sets the cookie password setcookie("FG[avatar]", $row[avatar], time() + 129600, "/"); // Sets the cookie password
...
[CUT]
[/PHP]Questo è il pezzo per il logout:
[PHP]
<?php
if(!isset($_GET[msg])) {
setcookie("FG[username]", '', time() - 2592000); // Sets the cookie username
setcookie("FG[password]", '', time() - 2592000); // Sets the cookie password
setcookie("FG[avatar]", '', time() - 2592000); // Sets the cookie password
header('Location: logout.php?msg=ok');
exit;
}
?>[/PHP]Il logout sembra andare a buon fine, ma nella realtà dei fatti il cookie non lo distrugge e non ho la piu pallida idea del perchè.
-
Il problema è ben diverso da quello da me segnalato ... non so ancora quale ... ma forse quello script è giusto .. sono altre cose che non vanno
-
una delle cose che non vanno sono proprio i cookie.
con il blocco di questi da parte dei nuovi browser l'uso dei cookie è altamente sconsigliato
molto meglio l'uso delle sessioni.
-
@Tymba said:
una delle cose che non vanno sono proprio i cookie.
con il blocco di questi da parte dei nuovi browser l'uso dei cookie è altamente sconsigliato
molto meglio l'uso delle sessioni.
ma la sessione mi scade troppo presto
lo so che impostandola sul php.ini posso allungare il lifetime .... ma su server ad alto traffico è molto sconsigliato.
-
I cookie sono fatti apposta a quello che serve te, mantenere le informazioni per tanto tempo.
Cmq credo che il tuo problema sia che imposti il domain con il setcookie.
Hai provato a togliere il parametro "/" che metti in ogni setcookie.
Forse è quello che infastidisce i browser.
Tutti i browser lasciano memorizzare i cookie locali, mentre danno molti problemi sui cookie impostati fuori dominio.Inoltre... ho visto che salvi la password, se è quello che penso io, è meglio che quel valore lo memorizzi in modo criptato oppure usando SHA1 / MD5.
I cookie si posso leggere, sono come dei file di testo.