-
non funziona setcookie()
poco tempo fa ho chiesto per un errore nel seguente script ma questo nn essendo un errore mi è sembrato opportuno aprire un nuovo topic
Codice PHP:
<p align="center"><h3>Firma il registro utenti!</h3></p>
<?php
if(empty($_COOKIE['firma'])) {
?>
<form method="post" action="inserimento dati.php">
<div align="center">
<input type="text" name="firma" /> <input type="submit" value="Firma" />
</div>
</form>
<?
} else {
print 'Hai gia firmato con il nome ' . $_COOKIE['firma'];
}
?>
<p align="center"><a href="registro utenti.php">Registro utenti</a></p>
pagina di risposta
Codice PHP:
<?php
$firma=$_POST["firma"];
if($firma == null) {
echo"<div align=\"center\">Hai dimenticato il nome!</div>";
} else {
setcookie("firma", $firma,time()+999999999999, "webeasy.altervista.org");
$fp=fopen("firme.txt","a");
fputs($fp, ", $firma");
fclose($fp);
header("location: http://webeasy.altervista.org/");
}
?>
L'obbietivo dello script è di mettere una firma del visitatore in un file txt ma allo stesso tempo impedisce di inserire piu di una firma settando un cookie
veniamo al problema:
tutto funziona corretamente ma nn viene settato il cookie come posso risolvere il problema?
un grazie in anticipo a tutti quelli che risponderanno
ciao
-
Togli l'ultimo parametro della funzione setcookie ("webeasy.altervista.org")
Ciao!
-
gia provato ma nn funziona lo stesso
-
Penso che sia perchè è già stato fatto un'output prima di setcookie(). Prova così:
Codice PHP:
<?php
$firma=$_POST["firma"];
if($firma != null) {
setcookie("firma", $firma,time()+999999999999, "webeasy.altervista.org");
$fp=fopen("firme.txt","a");
fputs($fp, ", $firma");
fclose($fp);
header("location: http://webeasy.altervista.org/");
} else {
echo"<div align=\"center\">Hai dimenticato il nome!</div>";
}
?>
More info: http://it2.php.net/setcookie
-
l'avevo letto su un libro che bisognava impostare per prima cosa i cookie ma nn mi veniva in mente come fare
grazie mille adesso provo subito
edit:
no nn funziona lo stesso
altre idee?
-
Non centra niente. Quella è una condizione non verranno mai eseguite entrambe, il codice era corretto.
Il problema è sono nella funzione setcookie...
cambiala in questo modo
Codice:
setcookie("firma", $firma,time()+3600*24*365);
Il valore che avevi inserito tu era troppo grande. (365 giorni credo che bastano),
-
ah vero nn sapevo ci fosse un limite di tempo
ho messo quel numero gigante perche volevo impedire per il piu tempo possibile di firmare di nuovo (che comunque serve ben a poco visto che basta cancellare il cookie)
grazie mille a tutti e tre problema risolto