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

non riesco ad estrarre un valore che esiste
il cookie contiene il campo nick
ho provato con
if(isset($nick))
if(isset($_COOKIE['nick']))
if(isset($HTTP_COOKIE_VARS['nick']))
ma nessuno di questi funziona.
Sono con Php 4.4.6
ecco il cookie
nick
pacitoto
www.salvatorepaci.it/online/
1536
4225388544
34459711
3715209088
29854922
*
pass
mia pass
www.salvatorepaci.it/online/
1536
4225388544
34459711
3715209088
29854922
*

 ma nessuno di questi funziona.
print_r($_COOKIE) cosa ti restituisce?
Ciao.
Maverick
-- 
ĢChe non siete pių liberi di non avere una casa con letto per dormire.
 Lavorate voi - schiavi dei soldi - che non sentite la puzza della
 schiavitų!ģ (a Mario di Monte Mario, Roma) # 
http://libre.netsons.org/

 
   i cookie sono disponibili dalla richiesta successiva a quella in cui vengono
impostati

 ha scritto nel messaggio 
news:f1ae5m$rmp$1...@tdi.cu.mi.it...

infatti sono stati impostati *illo tempore* (e ci sono) 

 
   hai provato una banalissima pagina con setcookie e print_r($_COOKIE) e vedere se va?
ovviamente da ricaricare almeno una volta

 print_r($_COOKIE) cosa ti restituisce?


 ovviamente da ricaricare almeno una volta
----------------------
Sì, esattamente quello che vedi qui sotto:
Array ( [HstCla59148] => 1209676245937 [HstCnv59148] => 3 [HstC1p59148] => 
1209675781953 [HstCup59148] => 4 [c_ppu_59148] => 4 [c_ref_59148] => 
http://www.salvatorepaci.it/menu/
 [c_refdom_59148] => 0 [c_old_pagid_59148] 
=> 0 [PHPSESSID] => 763cd90de7a3fc142e8a1404ffd86b60 )
ma, come dicevo nella mia precedente email... ho diversi cookies (strano) 
che si chiamano allo stesso modo ma si differenziano soltanto per il numero 
finale tra parentesi.
us...@www.salvatorepaci[2].txt quello che da i risultati di cui sopra
us...@www.salvatorepaci[5].txt questo sarebbe quello giusto
us...@www.salvatorepaci[3].txt
cosa debbo fare per prendere i dati dal [5]? 

"Salvatore Paci" <s...@TOGLIMIsalvatorepaci.it> ha scritto nel messaggio 
news:4638ff6d$0$37195$4faf...@reader3.news.tin.it...
------------
Inizio la pagina (per altri motivi) con un session_start()
può essere la causa della creazione degli altri cookies? Oppure può essere 
la toolbar di google? 

 cosa debbo fare per prendere i dati dal [5]? 
non metto in discussione che tu abbia le idee chiare, ma se queste idee non le spieghi
(semplificandole) difficilmente ti si può aiutare :)
   posta una descrizione di "quello che vorresti fare"/"cosa ottieni invece" insieme alla
porzione di codice incriminata
   tanto per dire, a me questo codice va perfettamente:
<?php
setcookie('nick', 'prova');
session_start();
print_r($_COOKIE);
?>
   e anche questo:
<?php
session_start();
setcookie('nick', 'prova1');
print_r($_COOKIE);
?>

 ?>
e questo..
Array ( [username] => 
s...@salvatorepaci.it
 [HstCla59148] => 1209709237250 
[HstCnv59148] => 7 [HstC1p59148] => 1209708215421 [HstCup59148] => 3 
[c_ppu_59148] => 3 [c_ref_59148] => 
http://www.salvatorepaci.it/menu/
 
[c_refdom_59148] => 0 [c_old_pagid_59148] => 0 [PHPSESSID] => 
3bd47c27f6f9c66b593f3b601311e9cd [nick] => prova )
Quindi sono identici.
:((((( 

 sito, in modo da non essere costretti a digitare nick e password.
ok, perchè non gestisci tutto tramite sessione? Invece di verificare il nick
verifichi l'id di sessione

ma l'hai ricaricata la pagina almeno due volte?
in ogni caso posta il codice che usi

 in ogni caso posta il codice che usi
codice dell'home page:
include'online/cookie.inc.php';
if($_SESSION['ut_online']=="")
{
$nome_ut="anonimo";
$registrazione="<a href=online/iscrizione_utente.php>(registrati)</a>";
echo "<table><tr><td valign=top><h4>Utente:<br>" . $nome_ut . " " . $esci . 
$registrazione . "</td></h4>";
echo'<td><form method="POST" action="online/login.php">';
echo'<font size=2 face=verdana color="#FF0000"> Nick:</font><input 
type="text" name="nome_utente" size="20" style="color: #696969; font-size: 
9px">';
echo'<font size=2 face=verdana color="#FF0000"> Pass:</font><input 
type="password" name="password" size="20" style="font-size: 9px; color: 
#696969"> ';
echo'<input type="submit" value=" login " name="B1" style="font-size: 9px; 
color: #696969">';
echo'</form></td></tr></table>';
}
else
{
$nome_ut=$_SESSION['ut_online'];
$esci="<a href=online/login.php>[esci]</a>";
echo "<font color=#003366 size=1 face=verdana>Benvenuto " . $nome_ut . " " . 
$esci . " <a href=\"online/connessi/connessi.php\">[guarda chi c'è 
online]</a>[$conta_iscritti utenti registrati] [online: 
$quelli_online]</font><br>";
}
codice di cookie.inc.php:
if(isset($nick))
{
$_SESSION['ut_online']=$nick;
echo $_SESSION['ut_online'];
}

codice di login.php
error_reporting(0);
session_start();
if (file_exists("utenti.txt"))
{
//apro il file utenti.txt
$fd = fopen("utenti.txt", "r");
while(!feof($fd))
{
$riga = fgets($fd,4096);
$utente_file=substr($riga,83,15);
$password_file=substr($riga,0,32);
if(($_POST[nome_utente]==trim($utente_file)) and 
(md5($_POST[password])==$password_file))
{
$ok_login = 1;
$_SESSION['ut_online'] = $_POST[nome_utente];
$_SESSION['pass']=$_POST[password];
// A questo punto creo un file che ha per nome il nick e dentro ci scrivo il 
timestamp
$fd2=fopen("connessi/" . $_POST[nome_utente],"w");
fwrite($fd2, time());
fclose($fd2);
}
else
{
$_SESSION['ut_online'] = $_POST[nome_utente];
$_SESSION['pass']=$_POST[password];
}
}
fclose($fd);
}
if($ok_login!=1)
{
$_SESSION['ut_online']="";
setcookie("nick", "", 100000);
setcookie("pass", "", 100000);
}
else
{
setcookie("nick",$_POST[nome_utente], 100000);
setcookie("pass", $_POST[nome_password], 100000);
$_SESSION['ut_online']=$_POST[nome_utente];
while(strlen($_POST[nome_utente])<15)
{
$_POST[nome_utente].=" ";
}
$fd=fopen("users_log.txt","a+");
fwrite($fd, "\r\n" . $_POST[nome_utente] . " " . date("d/m/Y") . " " . 
date("G:i"));
fclose($fd);
}
$TESTO=<<<pippo
<script language="JavaScript">
<!--
setTimeout('location.href="../"',1000);
</script>
pippo;
echo $TESTO;

 ha scritto nel messaggio 
news:f1c1nd$5h3$1...@tdi.cu.mi.it...
sono su index.php
lancio online/login.php che dopo aver settato i cookies lancia index.php
scusatemi per la domanda forse stupida..
index.php è in grado di leggere i cookies settati da online/login.php?

 error_reporting(0);
  cambia questa riga in error_reporting(E_ALL) e metti in testa a tutti i file
error_reporting(E_ALL)
  quando hai ripulito il codice ed eliminato tutti i warning riposta
pure il codice
  mi dispiace ma non puoi pretendere di individuare i problemi se li nascondi
e nel codice postato ci sono diversi errori risolvibili con uso corretto di
isset ed empty per non parlare del fatto che per accedere ad elementi di array
associativi devi indicare l'indice tra apici
e.g.
$array[indice] è sbagliato
$array['indice'] è corretto
  inoltre $_SESSION è definito solamente *dopo* aver fatto session_start()
e.g.
<?php
print_r($_SESSION);
?>
dà un
Notice: Undefined variable: _SESSION in file.php on line 1

 ha scritto nel messaggio 
news:f1c7ji$c3a$1...@tdi.cu.mi.it...
ho fatto un po' di pulizia nel codice e vi aggiorno su ciò che mi succede.
ho dovuto cancellare i cookies creati da un contatore esterno al sito per 
evitare di avere 2 cookies che cominciano con 
admini...@www.salvatorepaci.it
 e che finivano con un [1] e un [2]
cosa faccio:
dalla home page effettuo il login
il controllo passa dalla pagina index.php a online/login.php
questa pagina imposta un cookie e fa il redirect su index.php
sulla home page appare il nome dell'utente. OK
però io vorrei che quando si accede alla home, venisse letto il cookie e 
riconosciuto il nome utente. Ciò non avviene.
con print_r($_COOKIE); ottengo quanto segue:
Array ( [PHPSESSID] => f24f778dcdc4f4db427355a36b10962e )
Questo, secondo me viene prodotto quando arrivo la sessione (mi serve per 
captcha)
però non c'è traccia del campo *nick*
ho un cookie nel pc e dentro c'è scritto quanto segue:
nick
pacitoto
www.salvatorepaci.it/online/
1536
2893041280
29928695
874650080
29855270
*
pass
lamiapass
www.salvatorepaci.it/online/
1536
2893041280
29928695
874650080
29855270
*
La mia domanda è:
la pagina index.php (nella root del sito) può leggere il cookie di cui 
sopra?

 index.php è in grado di leggere i cookies settati da online/login.php?
I cookie sono validi, a meno di ulteriori specifiche, per l'intero 
dominio.
--
rob4you

 dominio.
---
il file *online/login.php* lanciato da *index.php* scrive quanto segue:
setcookie("nick",$_POST['nome_utente'], time() + 3600*24*365,"");
setcookie("pass",$_POST['password'], time() + 3600*24*365,"");
e funziona...
Se, invece, in home page scrivo setcookie("prova","pippo",time() + 
3600*24*365,""); non mi crea alcun cookie, perché?
Quali potrebbero essere queste *ulteriori specifiche* che mi impediscono di 
scrivere e di leggere un cookie dalla home page?
Non riesco a venirne a capo.

 3600*24*365,""); non mi crea alcun cookie, perché?
Per "home page" intendi "index.php"?
L'unica spiegazione possibile (o meglio, l'unico che mi viene in mente 
:-) ) è: set_cookie deve essere eseguita PRIMA di inviare qualsiasi 
altro output al browser. Quindi probabilmente tu vuoi settare un 
cookie, ma hai già prodotto codice html prima. Se il problema fosse 
questo, ecco le soluzioni:
1) bufferizza l'output con le funzioni di php, oppure
2) imposta il cookie via javascript
ps: ma non ti dà alcun errore e/o warning? Impostato il display_errors 
a On e il error_reporting a E_ALL?
--
rob4you

 ha scritto nel messaggio 
news:mn.23187d757...@KIEDIMELO.IT...

---------------
index.php che è nella root principale contiene il link REGISTRATI che, 
premuto, manda per una frazione di secondo sulla pagina online/login.php
questa, dopo aver autenticato l'utente, scrive il cookie (e lo scrive 
davvero) e fa una redirect su index.php
su index.php ho aggiunto come prima riga:
echo $HTTP_COOKIE_VARS['nick'];
ho provato anche con $_COOKIE
con $nick
niente da fare.

 leggere i cookies settati da online/login.php?
Dipende dal quarto parametro (path) della funzione setcookie().
Affinché il cookie sia disponibile per l'intero dominio esso deve
essere impostato su '/'.
Vedi 
http://php.net/setcookie
.
-- 
Federico

rob4you ha scritto:

   ma come ha fatto notare Federico, si possono impostare diversi path di
validità all'interno del dominio

 essere impostato su '/'.
-------------
Ecco... era questo!
Grazie 1.000*1.000

 validità all'interno del dominio
Che è sostanzialmente ciò che intendevo io con "a meno di ulteriori 
specifiche". :-)
--
rob4you

rob4you ha scritto:

tuscè ( ... o come si scrive ... ) :p