Newsgroup: it.comp.www.php
Titolo: Cookies...

Ciao a tutti!
Ho creato una piccola applicazione per consentire l'accesso a determinati
files solo alle persone che effettuano il login.
Una volta effettuato il log-in, dal file a.php, creo un cookie "password"
contenente la stringa "corretta".
Il problema è che sul mio computer (dove ho EasyPHP per provare i miei
programmini PHP) funziona tutto benissimo, mentre su Internet non riesco a
salvare i cookie sul computer (del navigatore). Non penso sia un'opzione di
sicurezza di internet explorer poichè ho provato a metterla a "molto bassa"
ma non funziona ugualmente.
Vi posto un po' di codice:
----------------------a.php----------------------// per effettuare il log-in
<?
  if( isset($_COOKIE["password"]) ) {
   $psw = $_COOKIE["password"];
   if ($psw = "corretta")
    echo "il log-in è gia stato effettuato.<br>Utente connesso al sistema.";
   else if ($psw != "corretta")
    echo "errore interno. Il cookie esiste ma la password non corrisponde al
formato valido ('corretta')";
   }
  else {
   echo "<form action='a.php?action=login&prtbsID=02102,301,3'
METHOD='POST'>\n";
   echo "<input type='text' name='psw' >\n";
   echo "<input type='submit' value='Autentifica'>\n";
   echo "</form>\n";
  }
  $psw = $_REQUEST['psw'];
  if ($psw == "gb") {
   setcookie("password", "corretta", time()+3600);
   echo "Accesso eseguito su file.<br>";
   echo "password = <b>$psw</b><br>";
   echo "files privati: z1.php, z2.php, z3.php<br>";
   echo "file incluso: b.php<br>";
  if( isset($_COOKIE["password"]) )
    echo "<br><br>cookie creato.";
   }
?>
----------------------b.php----------------------// per verificare la
password: lo includo in ogni pagina protetta
<?
 if( isset($_COOKIE["password"]) )
    $status = $_COOKIE["password"];
 if ($status != "corretta")
  header ("Location: a.php");
?>
----------------------pagina protetta (modello)----------------------
<?
 require 'b.php';
 for ($i=0;$i<3;$i++)
  echo "<br>";
 echo "Utente <b>AUTENTICATO</b><br>";
 echo "Pagina z1.php<br><br>";
 echo "Pagina protetta.<br>";
?>
----------------------logout.php----------------------
<?
 echo "<font size=22><b>LOG-OUT</b></font>";
 setcookie("password", "corretta", time()-3600);
 echo "<br><br>Log-out eseguito.";
?>
Spero di non rubarvi troppo tempo prezioso.
Grazie a tutti per la preziossima collaborazione.
Gabriele

    if ($psw = "corretta")
Sei sicuro del codice di cui sopra? Forse e' meglio:
if ($psw == "corretta")
-- 
I am what I am, I do what I can
L'uomo, conscio di sbagliare, persevera.

Hai ragione ma anche con questa modifica continua a non funzionare!
Hai qualche idea?
grazie.
"Setec Astronomy" <setec@_NO_NOSPAM_freemail.it> ha scritto nel messaggio
news:wzyLc.5502$1V3....@twister2.libero.it...


 Hai qualche idea?
Come hai impostato l'error reporting? Impostalo ad E_ALL e posta
eventuali errori/notice/warning etc (es. header already sent etc.)
Please
http://wiki.news.nic.it/QuotarBene


Il bello (mica tanto...) è che non mi viene dato nessun tipo di errore: il
cookie non viene creato e basta...
Boh...
"Setec Astronomy" <setec@_NO_NOSPAM_freemail.it> ha scritto nel messaggio
news:2QyLc.5529$1V3....@twister2.libero.it...


 errore: il cookie non viene creato e basta...
Come fai a dire che non viene creato?


con isset().
Comunque ho appena risolto il problema:
"Occorre precisare subito che si tratta di una funzione con una
particolarità: non può essere utilizzata in un punto qualsiasi di uno script
ma solo nella sua parte iniziale; più precisamente, setcookie() può essere
chiamata esclusivamente prima che una qualsiasi porzione di pagina sia
inviata al client (tipicamente, prima del tag <HTML>."
Mettendo setcookie all'inizio funziona tutto bene.
Grazie comunque.
"Setec Astronomy" <setec@_NO_NOSPAM_freemail.it> ha scritto nel messaggio
news:VczLc.8514$OH4.1...@twister1.libero.it...


 
mmmm doveva dirti qualcosa del tipo (con i warning attivi):
"Warning: header already sent blablabla". Non è la funzione ad essere 
particolare, semplicemente i cookie vanno inviati, come gli header, 
prima dell'output. Trattasi del protocollo HTTP
Puoi aggirare la limitazione (del protocollo, non della funzione, sia 
chiaro) con le funzioni di output buffering.
Ciao
-- 
Spoken: How much is that gorilla in the window?
Take our advice, At any price, A gorilla like Magilla is mighty nice.
Gorilla, Magilla Gorilla for sale