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

Allora ho un file che si occupa fare login.php,(pasword memorizate in mysql)
che mi rimanda ad un file che controlla (verifica.php) il login, 
if (login ok (non sto a scrivere tutto il codice))
session_start($nome);
session_register($nome,$parola); 
cosi dovrebbe partire una sessione giusto??
il login mi funziona correttamente e vedo la pagina, pero:
Warning: session_start(): Cannot send session cookie - headers already sent
by (output started at /var/www/html/
chiantied.it/xxxxx/xxxxx.inc:14
)
 in /var/www/html/
chiantied.it/xxxxx/verifica.php
 on line 13
Warning: session_start(): Cannot send session cache limiter - headers
already sent (output started
at /var/www/html/
chiantied.it/xxxxx/xxxxx.inc:14
)
in /var/www/html/
chiantied.it/xxxxx/verifica.php
 on line 13
questo è il file xxxxx.inc
<?php
 $hostname = "localhost";
$dbname = "xxxxxxx";
$username = "xxxxxx";
$password = "xxxxxxx";
$dbName = "xxxxxxx";
mysql_connect ($hostname, $username, $password) 
or die
 ("impossiblie connetersi al database");
mysql_select_db ("$dbName") or die ("picche");
?>
cosa non ho capito??
Grazie

 already sent by (output started at
E' una FAQ, session_start DEVE essere chiamato prima di qualsiasi
output.
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
L'uomo, conscio di sbagliare, persevera.

Ciao, Enrico!
Il giorno 29/07/2004 alle ore 17:07 hai scritto:
 EMC> mysql_select_db ("$dbName") or die ("picche");
 EMC> ?>
 EMC>
 EMC> cosa non ho capito??
Probabilmente hai messo delle righe vuote in fondo al file dopo il ?>.
Bye
-- 
There is no emotion; There is peace.
http://www.maccasoft.com

 
Esatto , pero ora mi da lo stesso errore nel file 
Warning: session_start(): Cannot send session cookie - headers already sent
by (output started at /var/www/html/
chiantied.it/zzz/verifica.php:2
)
in /var/www/html/
chiantied.it/zzz/verifica.php
 on line 13
Warning: session_start(): Cannot send session cache limiter - headers
already sent (output started
at /var/www/html/
chiantied.it/zzz/verifica.php:2
)
in /var/www/html/
chiantied.it/zzz/verifica.php
 on line 13

 C'e' un motivo particolare per cui vuoi dare un nome alla tua sessione?
be il motivo è quello di non far casino nel caso ci siano due utenti in
contemporanea, ho ho detto una cazzata??!! cioè non c'è bisogno??
comunque provo come mi dici poi ti faccio sapere.


> Non usare session_register, utilizza $_SESSION.
Ho toppato la sintassi, 
Cerco su i manuali, ma se puoi farmi un esempio facio prima.
ciao

 in contemporanea, ho ho detto una cazzata??!! cioè non c'è bisogno??
Non ce ne e' bisogno, forse e' il caso che ti rileggi il manuale per
capire a cosa serve session_name ().


 Ho toppato la sintassi, 
session_start ();
$_SESSION[$nome] = $parola;
-- 
I am what I am, I do what I can
Vuoi supportarmi? 
http://url.repository.biz/go/3E


 
Forse ho fatto un bel po di casino, dunque io devo salvare login(nome)
pasword(parola) nella sessione ed altre variabili, 
session_register($nome,$parola); dovrebbe salvare un array contenente le due
variabili nella sessione
scusa ma sto affrontando ora il problema sessioni , siccome non ciò mai
capito una mazza avevo risolto con meccanismi un po da boia 
ora pero devo capire.

 pasword(parola) nella sessione ed altre variabili, 
session_start ();
$_SESSION['login'] = $name; 
$_SESSION['password'] = $parola; 
-- 
I am what I am, I do what I can


 
Scusate, mi aggancio al thread dopo una lunga assenza dal NG, saluto 
Setec, Leonardo e tutti gli altri.
La cosa che mi perplime e' il fatto del session_start() che sul manuale 
che ho io (non aggiornatissimo, e' del PHP 4.2, ma anche online non ho 
del tutto chiara la questione) mi lascia un paio di punti oscuri. Spero 
che il tutto si risolva con un paio di risposte booleane da parte di 
qualcuno :)
Posto qui nella speranza che queste domande servano anche a qualcun'altro.
Vi dico cosa ho capito (almeno spero :P)
E' chiaro che devo fare session_start() PRIMA di usare  $_SESSION.
Questo significa che si deve avere una pagina in cui entrare "una volta 
sola", ovvero essere sicuri che venga eseguita solo in un punto, come ad 
esempio in una pagina di login?
Per essere piu' chiari, immaginiamo un flusso di questo genere:
1. entro nella pagina di login
2. inserisco user & password, faccio submit chiamando un'altra pagina PHP;
3. nella pagina chiamata faccio session_start(), metto in sessione user 
& password e costruisco la pagina.
4. continuo a navigare nel sito.
La domanda e':
Se durante la navigazione rientro nella pagina del punto 3, verra' 
eseguito di nuovo session_start(). Questo vuol dire che reinizializzo la 
sessione? Devo controllare con un if()?
Tutto qua, lo so che con le sessioni ci sono un sacco di FAQ, se c'e' 
gia; dove guardare ditemelo senza flame, grazie :D
-- 
Saluti >^_^<
Hatanaka

 sessione? Devo controllare con un if()?
Se c'è una sessione aperta con quel SID viene usata automaticamente 
altrimenti ne viene creata una nuova.
-- 
The media have a natural propensity to not report stories that they 
believe are complex, long-term, distant or intractable because they are 
hard, expensive stories to do well, and hence do not offer the ROI of, 
say, a celebrity scandal or shaggy dog story.

 altrimenti ne viene creata una nuova.
Quindi non devo controllare, OK?
Grazie :)
-- 
Saluti >^_^<
Hatanaka

allora questo è il file
<?php
 session_start();
$_SESSION['login'] = $login;
$_SESSION['password'] = $password;  
?>
questo è l'errore
Warning: session_start(): Cannot send session cookie - headers already sent
by (output started at /var/www/html/
chiantied.it/zzz/verifica.php:2
)
in /var/www/html/
chiantied.it/zzz/sessione.php
 on line 2
Warning: session_start(): Cannot send session cache limiter - headers
already sent (output started
at /var/www/html/
chiantied.it/zzz/verifica.php:2
)
in /var/www/html/
chiantied.it/zzz/sessione.php
 on line 2
questa la prossima domanda
CHE VOL DI?? 

 CHE VOL DI?? 
Lo spezzone di codice e' stato messo PRIMA di scrivere del codice HTML?
Se mandi della roba che si vede, PHP chiude l'header della pagina, 
quindi non puo' farti il session_start().
Soluzione: usare session_start() PRIMA del tag <html>
just my 2 cents...
-- 
Saluti >^_^<
Hatanaka

 CHE VOL DI?? 
Ti e' gia' stato detto che cosa significa.
Nel file verifica.php viene effettuato un output PRIMA che venga
chiamata la funzione session_start(). Inoltre fai attenzione che non
puoi chiamare consecutivamente 2 o piu' volte session_start.
-- 
I am what I am, I do what I can


 
OK Questo è risolto , ora però io ho questa struttura;
pagina add.php dove c'è un include verifica.php questo qui sotto,
include'csklghj.inc';
session_start();
$_SESSION['login'] = $login;
$_SESSION['password'] = $password; 
HTTP_SESSION_VARS["login"];
HTTP_SESSION_VARS["password"];
echo  $login.$password;
 
 
  $sqll = "SELECT * FROM utenti WHERE login='$login' AND
password='$password'"; 
$queryl= mysql_query($sqll) ; 
$num = mysql_numrows($queryl);
 if ($num == 1){echo "Gestione ";
 
 
 
 
 
 
 }
 else if ($nem == 0) { 
echo "chi sei fatti  riconoscere????";
include('login.php');
 die;
 }
 
ovviamente appena cerco di entrare mi manda al file login che mi da tramite
form le variabili login e password e mi rimanda in add.php
ora senza la sessione mi funzionava, con la sessione no, eppure al file
verifica.php le variabili dovrebbero arrivargli, in cosa sbaglio??

 sbaglio??
Imsposta l'error reporting ad E_ALL evedrai un bel notice undefined
variable. Utilizza $_SESSION['login'] etc. e non avrai piu' problemi.
-- 
I am what I am, I do what I can
Vuoi supportarmi? 
http://url.repository.biz/go/3E


 
BO non ho capito

 BO non ho capito
Allora forse il PHP non fa per te.
-- 
I am what I am, I do what I can


 ' AND password = "' . $_SESSION['password'] . '"';
errore di sintassi 
così invece
 $sqll = "SELECT * FROM utenti WHERE login = '"
($_SESSION['login'])."' AND password = 
'".mysql_escape_string ($_SESSION['password'])." '";
da questo errore
 Call to undefined function: mysql_escape_string ()
così non da errori ma non funge 
 $sqll = "SELECT * FROM utenti WHERE login = '"
.($_SESSION['login'])."' AND password = '". ($_SESSION['password'])." '";
molto probabilmente perche non memorizza le variabili in sessione.
piano ma mi avvicino
grazie


  Call to undefined function: mysql_escape_string ()
Sei sicura di aver installato/attivato il supporto per MySQL? 
Hai una versione di PHP >= 4.0.3?
La funzione esiste ed e' standard 
http://www.php.net/mysql_escape_string


 
 
la funzione c'è ma se non ci associ una query non serve e la query la stiamo
facendo prima di associarla, o sbaglio??
si ci ho mysql installato e la versione di php è la: 4.3.4
ripeto con il sitema che ho fatto io funziona tutto,  ma senza sessioni,
login, password, autenticazione, database; ora per problemi di sicurezza
volevo inserire le sessioni.
ma non ho capito qualcosa.
grazie nuovamente.

 stiamo facendo prima di associarla, o sbaglio??
Ma di cosa stai parlando? Sai almeno a cosa serve tale funzione? 
Che cosa significa "se non ci associ una query non serve"? Sai che
cos'e' l'SQL injection?


 cos'e' l'SQL injection?
se leggi bene ci ho messo "o sbaglio?"
il che vuol dire che non sono sicuro, altrimenti che mi chiedo a fare su i
gruppi di discussione.
COMUNQUE STIAMO ANDANDO SU UN ALTRA DISCUSSIONE, CHE A ME NON MI INTERESSA,
NON HO DA DIMOSTRARE NIENTE, HO DA CHIEDERE UN CONSIGLIO QUINDI RIBADISCO.:
non mi memorizza le varabili nella la sessione , perchè??
Cosa ho dimenticato??
Grazie 
<?php
include'dbconnect.inc';
session_start();
$_SESSION['login'] = $login;
$_SESSION['password'] = $password; 
echo $_SESSION['login'] . $_SESSION['password'];
 
 
 $sqll = "SELECT * FROM utenti WHERE login = '"
($_SESSION['login'])."' AND password = '". ($_SESSION['password'])." '";
$queryl= mysql_query($sqll) ;  
$num = mysql_numrows($queryl);
 if ($num == 1){echo "Gestione ";
 
 
 
 
 
 
 }
 else if ($nem == 0) { 
echo "chi sei fatti  riconoscere????";
include('login.php');
 die;
 }
 
 
?>

 Cosa ho dimenticato??
Ti e' stato detto piu' volte:
STAI INVIANDO UN OUTPUT PRIMA DI SESSION_START.
<?php
ob_start ();
include ('dbconnect.inc');
$content = trim (ob_get_contents ());
if (strlen ($content) > 0) {
	die ('CVD');
}
ob_end_clean ();
if (headers_sent ()) {
	die ('Hai gi&agrave; invato dell\'output!!!');
} 
session_start ();
if (!isset ($_REQUEST['login']) || !isset ($_REQUEST['login'])) {
	die ('login o password non presenti!!!');
}
$_SESSION['login'] = $_REQUEST['login'];
$_SESSION['password'] = $_REQUEST['password']; 
 
echo $_SESSION['login'] . $_SESSION['password'];
 
 $sql = 'SELECT * FROM utenti WHERE login = "' . 
 		 mysql_escape_string ($_SESSION['login']) . '" AND password = "' . 
		 mysql_escape_string ($_SESSION['password']) . '"';
$rs = @mysql_query ($sql) ;  
if ($rs === false) {
	die ('Errore nella query ' . $sql . '. ' . mysql_error ());
}
$num = @mysql_num_rows ($rs);
mysql_free_result ($rs);
if ($num == 1) {
	echo ("Gestione");
} elseif ($nem == 0) { 
	echo ("chi sei fatti  riconoscere????");
	include ('login.php');
 	die;
}
?>


 Grazie
Ciao,
proviamo ad iniziare da capo con le sessioni. Dai messaggi mi sembra che tu
abbia capito benissimo cosa č una sessione, sai anche che la voce
session_start(), che per ora č l'unica che ti interessa deve essere la prima
cosa all'inizio di una pagina, anche una riga vuota html prima di questa ti
causerebbe un errore.
 La domanda che voglio farti č: ma a te le sessioni hanno mai funzionato
(intendo anche con codice piů semplice e utilizzando solo due pagine) o non
ti funzionano solo in questo specifico caso???
Se vuoi rispondere proviamo pian piano a cercare di capire come mai sembrano
non funzionare.
Ciaooo