setcookie

  • Creatore Discussione Creatore Discussione klodespe
  • Data di inizio Data di inizio

klodespe

Nuovo Utente
8 Ago 2007
3
0
0
Buon giorno,
sono nuovo del forum ed ho appena iniziato a "PERDERMI" in PHP.

Il mio problema è il seguente:
Quando tento di settare i Cookies nel mio sito mi da il seguente errore:
"Cannot modify header information - headers already sent by ...", la stringa che ho utilizzato è la seguente:
"setcookie("sav_user1",$cok,time()+3600, "/", "miosito");", premetto che, in locale con EasyPHP 2.0 la stinga, troncata dopo il tempo, funzionava correttamente, mentre nel sito NO.:incazz2::confused:
Se può servire io mi appoggio a www.netsons.org.


Grazie per l'aiuto !!!:fonzie:
 
Cito testualmente dal manuale ufficiale:
I cookie devono essere spediti prima di qualsiasi altra intestazione (questa è una restrizione dei cookies, non di PHP). E' necessario perciò chiamare la funzione setcookie() prima di qualsiasi tags, anche <html> o <head>.
 
E come posso fare ???

Questo è il mio file ....

<?php
$redirect="http://127.0.0.1/GAM/autenticazione.php";

include("Intestazione.php");
?>
<ul><ul><ul><ul>
<?php
include("Open_SQL.php");
?>
<?php
$utente=$_POST["ob_username"];
$psw=$_POST["ob_password"];

//LogOut utente
if(isset($_POST['sloggami']))
{
if($_POST["sloggami"]==1)
{
if(IsSet($_COOKIE['sav_user'])) //se presente si distrugge il cookie di login automatico
setcookie("sav_user",$cok,time()-31536000);
if(IsSet($_COOKIE['sav_user1'])) //se presente si distrugge il cookie di login automatico
setcookie("sav_user1",$cok,time()-3600);
header("Location: $redirect"); //si ricarica la pagina di login
exit; //si termina lo script in modo da ritornare alla schermata di login
}
}

$flag_controllo=0;
//controllo campi obbligatori
while(list($chiave, $valore)=each($_POST)){
if(substr($chiave,0,3)=="ob_"){
if($valore ==""){
echo "Non hai compilato il campo obbligatorio " .substr($chiave, 3) .", l'autenticazione non può essere processata.<br><br>";
$flag_controllo=1;
break;
}
}
}

//controllo esistenza username
$result = mysql_query("select username FROM Utenti");
$num_rows = mysql_num_rows($result);
$i = 0;
for ($i; ; ) {
if ($i > $num_rows-1) {
break;
}
$query = "SELECT * from Utenti";
$handle = mysql_query($query);
$nome_utente = mysql_result($handle, $i, "username");
$psw_utente = mysql_result($handle, $i, "password");
$nome = mysql_result($handle, $i, "nome");
$cognome = mysql_result($handle, $i, "cognome");
$p_secure = mysql_result($handle, $i, "p_secure");
if($utente==$nome_utente) {
if($psw==$psw_utente) {

//creazione cookie per login automatico
if(isset($_POST['ricorda']))
{
$flag_controllo=1;
$cok=($utente)."%".$psw."%".$p_secure;
setcookie("sav_user",$cok,time()+31536000);//setta il cookie per un anno
echo "<h3>Ciao " .$nome ." " .$cognome .", benvenuto nel sito ufficiale del Gruppo Amici della Montagna.<br><br><br></h3>Ti ricordo che, se il PC è utilizzato da altri utenti, questi si potranno collegare al sito con le tue referenze, in quanto hai selezionato il flag RICORDAMI.<br>Per disattivare il tuo utente torna sulla pagina di autenticazione, seleziona USCITA e premi sul pulsante ESEGUI.";
}
else {
//messaggio di benvenuto
echo "<h3>Ciao " .$nome ." " .$cognome .", benvenuto nel sito ufficiale del Gruppo Amici della Montagna.<br><br><br></h3>Ti ricordo che la tua sessione rimarrà attiva per un'ora.<br>Per disattivare il tuo utente torna sulla pagina di autenticazione, seleziona USCITA e premi sul pulsante ESEGUI.";

$flag_controllo=1;
//creazione cookie per login temporaneo
$cok=($utente)."%".$psw."%".$p_secure;
setcookie("sav_user1",$cok,time()+3600, "/", ".gam-vr.it");//setta il cookie per un ora
}
}
}
$i++;
}
if ($flag_controllo==0) {
echo "Spiacente, ma non risulti registrato, ricontrolla i tuoi dati.";
}


?>
</ul></ul></ul></ul>


</body>
</html>
 
Inserisci il controlli sul LogOut utente prima di qualsiasi altro output
 
Grazie dell'aiuto, l'errore è scomparso, ma ora ho un nuovo problema !!!

Io utilizzo il dominio www.gam-vr.it, che fa il redirect nascosto su www.gam.netsons.org.
Ho creato una pagina di iscrizione al sito e una di autenticazione, quando vado ad autenticarmi da www.gam-vr.it non riesco ad impostare il cookie, mentre se entro da www.gam.netsons.org non ho problemi, cosa devo fare ???
Per caso il setcookie è incomparibile con un redirect del sito ???


Grazie mille per la pazienza e l'aiuto.
 
Se il controllo sui cookie è identico dovrebbe funzinare anche con il redirect, ma al primo refresh della pagina.
Per questo motivo sconsigliere di associare cookies a redirects