Newsgroup: it.comp.www.php
Titolo: sto impazzendo con le sessioni

ragaziz vi devo chiedere un sacco di cose sulle sessioni. sto seguendo alla
lettera quello che dice il manuale PHP 4, ma non riesco a venirne fuori
(notate l'orario).
register_globals è On,
track_vars non l'ho trovata in php.ini
la directory in cui dovrebbero essere registrate le ssioni è
c:\php\sessiondata, che esiste.
ho un file TentaLogin.php che riceve i dati da un form in un file precedente
(User_ID e password) li confronta con quelli in un database, e, se l'utente
ha inserito correttamente User_ID e password, da inizio alla sessione.
ovviamente, rinvia subito alla pagina principale Main.php. ed è qui che le
variabili registrate come variabili di sessione non me le ritrovo piu!!
nel file tentaLogin.php ho scritto
$User_ID = $row["ID"];
$Nome = $row["Nome"];
session_register("User_ID");
session_register("Nome");
header("Location: main.php");
(ho provato a dichiarare le due variabili come global all'inizio del fille,
ho provato a scrivere session_start(), ma niente!!!!)
nel file richiamato, ossia MAIN.PHP, ho scritto:
echo $User_ID;
e mi da errore di variabile non definita !!!!!!!!
ma se nel file TentaLogin-php l'ho dichiarata global !!!!!!
e ho provato a dichiararla global pure in main.php, solo che mi arriva
vuota... in pratica le sessioni è come se non esistessero proprio...
come devo fare?
vi prego di aiutarmi, perche sto da 5 ore e non ne riesco a venire fuori,
sto davvero impazzendo, e rimpiangendo la semplicita di ASP sulle
sessioni...!!!!!!!
Mario

 Mario
5 ore????? io è 5 giorni che cerco di venirne a capo............ :'(
WK

 ha scritto nel messaggio
news:aaskkn$d7etv$1...@ID-70152.news.dfncis.de...



Hai messo all'inizio :
session_start();
Ricordati di metterlo per tutte le pagine che usano anche usa sola variabile
di sessione.
Ciao,
F.


ciao, stamattina ho risolto mettendo session_register per tutte le pagine
che utilizzano una variabile di sessione. e miracolosamente funziona... dici
che è indispensabile anche session_start?
Mario

Perdonami se mi intrometto.
Io uso sempre questo sistema, in ogni pagina.
// ASSOLUTAMENTE OBBLIGATORIO
// DEVE ESSERE IL PRIMO COMANDO
session_start();
if (!session_is_registered("nomevariabile"))
{
session_register("nomevariabile");
}
Funziona sempre.
Ciao. Peppe


 dici che è indispensabile anche session_start?
No, se non è aperta una sessione session_register la apre automaticamente.
Ciao,
Luca.

 che è indispensabile anche session_start?
session_register('nomevar') fa automaticamente la session_start() se non è
stata fatta prima...
...forse ti serve lo la session_start().
bye Brain
--
Reply to: brain79(at)
inwind.it
www.brainetwork.net
ICQ# 
4742797710
 - FeSToso n°143

Il mio manuale (Imparare PHP in 24 ore, Matt Zandstra, Ed. Tecniche
Nuove) dice a pag 290 che a meno che non si sia modificato il php.ini
le sessioni vanno aperte e chiuse esplicitamente.
E' un errore?
Saluti.
Peppe.
On Fri, 3 May 2002 12:39:09 +0200, Luca <lu...@qwerty.it.invalid>
wrote:


 E' un errore?
In php.ini c'è il parametro...
session.auto_start:
specifies whether the session module start a session automatically on
request startup.
Defaults to 0 (disabled).


Ti incollo il mio login.php:
<?php
$pwd_enc = md5($pwd);
include "connect.php";
$login = "SELECT * FROM users WHERE user='$user' and pwd='$pwd_enc'";
$result = mysql_query($login);
$num = mysql_num_rows($result);
if ( $num == 1 ) {
session_start();
$obt_data = mysql_fetch_object($result);
$_SESSION["id"] = $obt_data->id;
$_SESSION["status"] = $obt_data->status;
$_SESSION["is_admin"] = $obt_data->is_admin;
header("Location: index.php");
} else {
 include "header.inc";
 echo "<b>Either your password or your username are incorrect. Please go
back and retry.</b>";
 include "footer.inc";
}
?>
In questo modo io richiamo $_SESSION["id"] dove voglio, dopo aver scritto
session_start();
Non so se ti può aiutare :)



 E' un errore?
Si. Nel senso che quello che dice il tuo manuale è vero tranne nel caso in 
cui non venga chiamata una session_register() nel qualcaso la sessione 
viene aperta implicitamente. 
Dal manuale ufficiale su 
php.net
 sezione "session handling":
The session support allows you to register arbitrary numbers of variables 
to be preserved across requests. When a visitor accesses your site, PHP 
will check automatically (if session.auto_start is set to 1) or on your 
request (explicitly through session_start() or >>>implicitly through 
session_register()<<<) whether a specific session id has been sent with 
the request. If this is the case, the prior saved environment is 
recreated.
A parte tutto cio secondo me, per questioni di chiarezza, è meglio che 
chiami la session_start() esplicitamente.
Ciao,
Luca.

Ringrazio te e Brain per la precisazione.
Quindi se si prende l'abitudine di dichiarare esplicitamente
session_start() si è sicuri di poter sfruttare sempre le funzioni di
sessione, anche laddove la pagina non abbia di suo la necessita' di
registrare una variabile.
Saluti. Peppe.
On Mon, 6 May 2002 08:35:20 +0200, Luca <lu...@qwerty.it.invalid>
wrote:
