sessioni

giuppy

Nuovo Utente
2 Ago 2007
8
0
0
Ragazzi, scusate ma ho un problema e spero che qualcuno di voi mi possa aiutare.
Ho creato un sito che uyilizza le sessioni. Come variabile di sessione mi serve solo l'id della persona che si "logga". Il procedimento che ho usato lo descrivo in pochissime parole.
C'è una pagina di login che manda il contenuto del form (login e psw) ad una pagina che autentica il visitatore. Se esiste allora il suo id diventa di sessione.
Avendo cura di mettere il session_start() in ogni pagina e come prima istruzione, il problema è:
quando si logga una persona funziona tutto nella home page, ma nel momento in cui cliccano su un link del menu, si perdono i dati di sessione.
Premetto che lo stesso metodo l'ho usato molte volte senza mai avere problemi. L'unica differenza è che ora sto facendo il lavoro su un altro pc. Mi hanno detto che potrebbe essere un prob. di cokie. Sono andato nelle option del browser e sembrano che siano attive...non so più cosa fare...qualcuno ha consigli?
 

giuppy

Nuovo Utente
2 Ago 2007
8
0
0
sto utilizzando internet explorer 6 su windows 2000.
Ti ribadisco per cercare di essere piu chiaro che se faccio login, entra nel sito...poi però cliccando su un qualsiasi link del menu succede che è come se scordasse la var di sessione. Me ne accorgo perchè nell'index iniziale c'è il form di login e un determinato menu (utenti), se ti logghi scompare semplicemente il form di login e cambia il menu (diventando con piu voci)...
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
mi posti il codice con cui effettuai il controllo delle sessioni nelle pagine successive al login; anzi, visto che ci sei postami anche i codice che usi per creare la sessione.
 

giuppy

Nuovo Utente
2 Ago 2007
8
0
0
session

ciao eliox...sei molto gentile...allora ti posto il codice cosi mi dici un tuo parere...

una semplicissima pagina di login acquisisce i dati e li manda a questa pagina di autenticazione:
<?session_start();
include("connessione.php");
$u=$_REQUEST['username'];
$p=$_REQUEST['password'];

$queryt = "SELECT * FROM utenti WHERE (user='".$u."') AND (psw='".$p."')";
$resultt = mysql_query($queryt); // or die("[Mysql error]: can't select article required. - ".mysql_error());
$num_resultt=mysql_num_rows($resultt);//conta le righe trovate con quei dati
if($num_resultt==1)
{
if ($riga=mysql_fetch_object($resultt))
$user=$riga;
session_cache_limiter('private_no_expire');
$cache_limiter = session_cache_limiter();
$_SESSION['user'] = $user;
@header("Location: index.php?data=ok");
}
else
{
@header("Location: index.php?data=no");
}
?>

A questo punto user diveterà ( a parer mio una variabile locale)
Sia se il login è positivo, che se è negaytivo mi manda nella index. Nella index è incluso un file chiamato che mi farà comparire il menu. Tuttavia esistono 2 menu, menu1.php e menu2.php. Comparirà l'uno o l'altro in base all'esito del login. La pagina che decide quale menu compare è questa:
<table width="100%" height="53" border="0" align="center">
<tr>
<td height="22" valign="top">
<? echo("utente:". $user->user);
if($user->id!="")
{

include("menu.php");
?>
</td>
<tr>
<td height="22" valign="top" align="center"><a href="destroy.php">Esci</a></td>
</tr>
<tr><td align=center>&nbsp;</td></tr>
<tr><td align=center>&nbsp;</td></tr>
</table>
<?
}
else
{
include("menu2.php");
?>
</td>
</tr>
<tr>
<td height="24" valign="top"> <?include("login.php");?></td>
</tr>
</table>
<?
}
?>


fammi sapere se sono stato chiaro...
 

LoginDOT.com

Nuovo Utente
2 Mag 2007
17
0
0
Salve,
non ho ben capito come siano dislocate le tue pagine e le varie sequenze ... me i problemi possono essere i seguenti.

1) session_start(); deve essere inserito in index.php oltre che nella pagina di login.

2) ho qualche dubbio su questa affermazione:
A questo punto user diveterà ( a parer mio una variabile locale)

echo("utente:". $user->user); .... si solo se $user = $_SESSION['user'];


In ogni caso per me è probabile che ti sia dimenticato session_start(); in index.php

Buona giornata
Andrea
 

giuppy

Nuovo Utente
2 Ago 2007
8
0
0
Ciao, ti ringrazio per l'intervento.
La struttura del sito è cosi:
c'è un index in cui nella parte sinistra c'è un menu e al centro c'è un corpo sito (struttura tabellare)
nella parte sinistra possono comparire 2 tipi di menu. Nel primo ci sono solo pochi link visibili dagli utenti e in basso c'è il form di login. Quando un utente clicca sul tasto login, i suoi dati inseriti vengono spediti alla pag autentica che con l'istruzione $_SESSION['user'] = $user; mi fa diventare la variabile $user, una var di sessione. Se il login è andato a buon fine nella pagina index semplicemente cambierà il menu e comparira il menu piu lungo e scompare in cuesto menu il form di login (ovviamente essendo gia loggato).
In tutti gli altri siti che ho fatto ha sempre funzionato tutto, qui invece succede che va tutto bene fino alla comparizione della index iniziale (qualla con il menu completo), ma nel momento in cui si clicca su uno dei link di questo menu compare la pagina chiamata ma con il menu quello in cui compare il login (morale della favola ha perso i dati di sessione perchè la struttura della parte sinistra del sito è far comparire il menu1 se la var di sesione è vuota e il menu2 se la var di sessione esiste).
Naturalmente ho avuto ben cura di inserirer e ricontrollare la riga session_start(); all'inizio di ogni pagina e avendo cura di non lasciare spazi bianchi prima di essa...
naturalmente vi ringrazio dell'aiuto
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
no aspetta, $user non ti diventa una variabile di sessione, questa è e rimane $_SESSION['user'].
Se vuoi riutilizzare $user devi riconfermare l'uguaglianza:
$user= $_SESSION['user'] in ogni pagina in cui è necessaria la sessione
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
No sono di Cagliari :)
"Intivato" mi ha ricordato un'amica di Treviso :)
 

giuppy

Nuovo Utente
2 Ago 2007
8
0
0
dunque ragazzi...ho fatto un file che ho incluso in ogni pagina contenete queste righe
<?session_start();
$user= $_SESSION['user'];
$_SESSION['user'] = $user;
?>
cosi posso rimpallare la variabile di sessioone in ogni pag.
Tuttavia purtroppo ho sempre lo stesso problema...
p.s. è possibile scambiarsi il contatto msn?(non so se le regole lo permettono...)
 

LoginDOT.com

Nuovo Utente
2 Mag 2007
17
0
0
Crea un nuovo file "testsessioni.php"
e scrivici dentro,

<?
session_start();
if(is_null($_SESSION['count'])){ $_SESSION['count'] = 0; }
$_SESSION['count'] = $_SESSION['count'] + 1;
print "Count " . $_SESSION['count'];
?>

prova a riaggiornare la pagina, ad ogni aggiornamento la variabile $_SESSION['count'] si incrementa. e l'output sarà simile a

Count 1
Count 2
Count 3 etc...

Se il numero aumenta, vuol dire che hai cannato qualcosa nei tuoi script, se non incrementa vuol dire che il tuo PHP ha qualche problema nella configuazioni delle sessioni.

Un saluto.
Andrea
 

giuppy

Nuovo Utente
2 Ago 2007
8
0
0
perfetto andrea, il tuo metodo di test è stato utile...la pagina si aggiorna e conta...

faccio una cosa...ti posto il codice e se hai un minuto lo guardi...:

PAGINA INEDX.PHP
<?include("session.php");
print_r($_SESSION);ECHO("<BR>");
print_r($_COOKIE);
?>
<html>
<head>
<title></title>
<link rel="stylesheet" href="style.css" type="text/css" >
</head>
<body
<table border="0" bgcolor="#ffffff" class="blu" align="center" cellspacing="0" width="70%" height="200" >
<?include("top.php");?>
<tr>
<td width="18%" height="200" align="left" valign="top">
<BR>
<?include("left.php");?>
</td>
<td width="80%" valign="top">
<table width="100%" valign="top" border="0" align="center" cellpadding="10" cellspacing="5">
<tr>
<td width="100%">
<!-- qui c'è codice che per questo controllo non interessa-->
</td>
</tr>
</table>
</body>
</html>


Come vedi c'è la pagina left inclusa, e sarà:
PAGINA LEFT.PHP
<table width="100%" height="53" border="0" align="center">
<tr>
<td height="22" valign="top">
<? echo("utente:". $user->user);
if($user->id!="")
{
include("menu.php");
?>
</td>
<tr>
<td height="22" valign="top" align="center"><a href="destroy.php">Esci</a></td>
</tr>
<tr><td align=center>&nbsp;</td></tr>
<tr><td align=center>&nbsp;</td></tr>
</table>
<?
}
else
{
include("menu2.php");
?>
</td>
</tr>
<tr>
<td height="24" valign="top"> <?include("login.php");?></td>
</tr>
</table>
<?
}
?>

quindi se user esiste mi carica il menu.php oppure menu2.php.

Inoltre vengono utilizzate le pagine session.php
<?session_start();
$user= $_SESSION['user'];
$_SESSION['user'] = $user;
?>

e autentica.php che viene usata per utenticare l'utente e che è fatta così
<?session_start();
include("connessione.php");
$u=$_REQUEST['username'];
$p=$_REQUEST['password'];

$queryt = "SELECT * FROM utenti WHERE (user='".$u."') AND (psw='".$p."')";
$resultt = mysql_query($queryt); // or die("[Mysql error]: can't select article required. - ".mysql_error());
$num_resultt=mysql_num_rows($resultt);//conta le righe trovate con quei dati
if($num_resultt==1)
{
if ($riga=mysql_fetch_object($resultt))
$user=$riga;
session_cache_limiter('private_no_expire');
$cache_limiter = session_cache_limiter();
$_SESSION['user'] = $user;
@header("Location: index.php?data=ok");
}
else
{
@header("Location: index.php?data=no");
}
?>

Se hai la possibilità du vedere dove può essere nascosto l'errore ok, altrimenti ti ringrazio lo stesso...
 

LoginDOT.com

Nuovo Utente
2 Mag 2007
17
0
0
Ho appena ricostruito l'esempio sul mio server ... come da te descritto ... nessun problema!

Non avendo il resto del codice ... fin qui posso aiutarti ...

prova a modificare session.php in questo modo:
<?
session_start();
header ('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"');
$user= $_SESSION['user'];
?>

Attenzione che da qualche parte nel tuo scritp non ci sia il comando per la cancellazione della sessione ... o che magari non resetti $_SESSION['user']

Speriamo che tu riesca a venirne a capo.

Un Saluto
Andrea
 

giuppy

Nuovo Utente
2 Ago 2007
8
0
0
sono convinto che sia un problema del computer perchè in tutti i siti che ho fatto ha sempre funzionato bene e l'ho fatto sempre allo stesso modo.
Mi hanno detto che potrebbe essere che su questo pc non ci siano le cookie attive, ma ho visto nel browser e sembra che siano attive...
non so come fare...
ora copio tutto il codice e provo il tutto sul vecchio pc...
cmq sei stato gentilissimo..
grazie
 

LoginDOT.com

Nuovo Utente
2 Mag 2007
17
0
0
Se è un problema di cookie ... fai come ti ho detto:

header ('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"');


... mi ha tirato fuori dai casini innumerevoli volte :)
 
Discussioni simili
Autore Titolo Forum Risposte Data
keyascii File temporanei Sessioni PHP 6
T PROBLEMA CON SESSIONI PHP 3
ilsuomillennio Sessioni PHP 3
maxnegri Contare sessioni aperte e creare condizione PHP 1
AC1 Sessioni php PHP 16
S [PHP] problemi con le sessioni PHP 3
B [PHP] Reload pagina e sessioni PHP 3
A Php e sessioni PHP 3
J sessioni in PHP PHP 3
T gestione livelli sessioni php msqli PHP 1
M Problema MySQL e sessioni MySQL 0
A form su più pagine e sessioni PHP 8
V Le sessioni: ho dei dubbi sul posizionamento PHP 6
A sessioni sicure? PHP 5
G Controllo scadenza sessioni PHP 2
M Sessioni??? PHP 4
C Sessioni in php (urgente) PHP 4
R Efficenza sessioni con proxy PHP 0
baobabdesign Problema scrittura sessioni PHP 0
Shyson Non mantiene sessioni PHP 0
L segnalare l'utilizzo delle sessioni come accade per i cookie PHP 0
D Login con sessioni per 2 pagine diverse PHP 2
L problema array con le sessioni PHP 1
D Sessioni e variabili PHP 4
R problema con le sessioni PHP 2
L Sessioni rank [#PHP] PHP 3
R Sessioni, cookies e token di autenticazione PHP 0
E [risolto] win 8.1 + IE11 le sessioni PHP non fuonzionano correttamente PHP 7
A Sessioni php PHP 0
otto9due [risolto] Problema sessioni php e login PHP 5
B Sessioni PHP 10
H [risolto] Uso delle SESSIONI PHP 2
F Sessioni PHP 1
A conservazione sessioni PHP 2
S Stampare una variabile in ogni pagina usando le sessioni PHP 5
Z Registrazione e sessioni PHP 8
asevenx problema con le sessioni PHP 6
S Un piccolo aiuto su cookie e sessioni PHP 1
S Problema con sessioni PHP 4
I Problema con le sessioni PHP 2
Emix Problema sessioni... PHP 17
Z Sessioni - Database PHP 6
P Problema con l'uso delle sessioni... PHP 4
E Gestione Sessioni sui file anziche nel database - Come fare? Joomla 0
P Problema con sessioni e aggiornamento profilo PHP 21
redevilduil Php problema nelle sessioni PHP 6
P Ho riunito le prove con le sessioni, ma l'update non va PHP 20
Shyson Non mantiene le sessioni PHP 7
D [JSP] Gestire eccezioni relative alla scadenza delle sessioni Java 0
M $_SESSION['sessione'][1] possibile? Sessioni con indice. PHP 8

Discussioni simili