Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    378

    [php] - Perdita valori dati sessione

    Allora,
    come la ragazza nomade ho lo stesso problema,
    però io invece di utilizzare iframe utilizzo l'include in codesto modo.


    1.ho la index.php che include le varie sezioni.
    2.apro la sezione di log-in includendola nella index.php
    3.se l'autenticazione avviene mi include la pagina menu.admin.php (fin qui funziona tutto)

    questo menù è composto da varie sezioni che includo sempre nella index.php
    solo che provando ad aprire una delle pagine facendo la verifica su $_session['stato'],come facevo nel menù,mi dice che le varibili di sessione sono vuote.

    cosi ho provato a riempirle nuovamente nella pagina del menù ma la cosa persiste.
    cosa può essere?

  2. #2
    Anche per te la domanda è d'obbligo... sicuro di non aver dimenticato session_start() nelle pagine in cui si presenta il problema?

    Scusa ma te lo chiedo perchè una svista può sempre capitare

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    378
    session_start() è inserito all'inizio della index.php che include i vari file.

  4. #4
    scusa, ero stato tratto in inganno da questa frase

    solo che provando ad aprire una delle pagine facendo la verifica su $_session['stato'],come facevo nel menù,mi dice che le varibili di sessione sono vuote.
    ma poi rileggendo il tutto, si capisce che in effetti tu lavori sempre su index.php.

    Non è che puoi postare del codice?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    378
    pagina che includo con il login:

    codice:
    $user = checkstring($_POST["user"]);
    $password_aut =  checkstring($_POST["password"]);
    		//checkstring mi elimina alcuni tipi di caratteri 
    			  
    if(isset($_POST["user"]) && isset($_POST["password"]))
    			  {
    			  
    			  
    $user=mysql_real_escape_string($user);
    $password_aut = trim($password_aut);
    
    include("config.inc.php");
    			   
    $db = mysql_connect($hostname,$username,$password);
    mysql_select_db($nomedb);
    			   
    			   
    $query = "SELECT id,username FROM tab_utenti WHERE attivo = 'si'  AND username = '$user' AND passw = '$password_aut'";
    	
                 $ris = mysql_query($query,$db);
    	     $totalrows_ris = mysql_num_rows($ris);
    			  
    	   if ($totalrows_ris != 0) // esiste almeno un record con quei dati
            { 
               
               $_SESSION['user'] = $user;
               $_SESSION['passwd']= $password_aut;
               $_SESSION['stato'] = "loggato_utente";
               include("includo_moduli/pannello-di-controllo.php");
    		   
    		   
              } 
        else
            {
             
            $_SESSION['messaggio']='ERRORE: UTENTE NON VALIDO!';
            $_SESSION['user']= null;
            $_SESSION['passwd']= null;
            
    echo "<table class=\"tabella\" width=\"531\" height=\"500\"><tr><td>
    
    <center><img valign=\"top\" src=\"images/area_riservata.jpg\"><p class=\"text\">".$_SESSION['messaggio']."</p></center>";
    		
    echo"<form name=\"autenticazione\" action=\"index.php?idCategoria=o26LOG-IN&".$chiave."&cat=Log-In\" method=\"POST\">";
    		?>
    		 
    
     <table bgcolor="808080" bordercolor="#333333" style="border-collapse:collapse" border="1" cellspacing="3" cellpadding="3" align="center">
    	<tr>
    		<td colspan="2" width="200">
    			
    		</td>
    	</tr>
    	<tr>
    		<td align="left"><font class=form>Username:</font></td>
    		<td><input type="text" name="user" size="20"></td>
    	</tr>
    	<tr>
    		<td align="left"><font class=form>Password:</font></td>
    		<td><input type="password" name="password" size="20"></td>
    
    	</tr>
                       
                        <input type="hidden" name="post_ip" value="<?php echo $_SERVER['REMOTE_ADDR']; ?>">
                       
    </td>
             <tr>
    		<td colspan="2" align="center">
    			<input style="font-family: Thaoma; color: #ffffff; font-size: 12; height:22px; width:50px; background-color: #000000;" type="submit" name="submit" value="Login"> 
                            
    			
    		</td>
    	</tr>
    </table></form></td></tr></table>

    con questo riesco a visualizzare il menu,passandogli le variabili di sessione che se provo a stampare mi stampa.

    Poi richiamo tramite l'include della index il file che fà parte di una delle categorie del menù,facendo un controllo del tipo:
    if($_SESSION['stato'] == "loggato_utente"){
    entra nella pagina

    e quando faccio ciò cmi dice:
    Notice: Undefined index: stato in c:\programmi\easyphp1-7\www\.......

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    378
    allora,
    mi sorge un dubbio,ma i dati di sessione devono essere passati da pagina a pagina??
    nel senso:

    io ho la index.php che include il codice del suddetto post --> index.phpidCategoria=includopaginalogin

    questo se fa il controllo di utente e password e tutto va a buon fine mi include una pagina con un menu.. include(pagina_menu.php)

    poi da questa pagina gli passo un link che la index.php mi deve includere -> index.php?idCategoria=pagina_de_menu_di_login

    e qui si perde la sessione

  7. #7
    Da questo codice vedo che in effetti quando l'utente fa login imposti la sessione

    codice:
    $_SESSION['stato'] = "loggato_utente";
    vedo anche che se includi i moduli del pannello di controllo

    codice:
    include("includo_moduli/pannello-di-controllo.php");
    quello che non capisco è (dal codice che vedo)... questa inclusione come mai la fai solamente se l'utente ha inviato il modulo di login?

    Infatti sembrerebbe dipendere tutto da:

    codice:
    if(isset($_POST["user"]) && isset($_POST["password"]))
    e cosa succede quando uno si è loggato e vuole solo navigare nelle funzionalità del sito? si deve loggare ogni volta che viene ricaricata la pagina?

    scusa queste domande ma sto cercando di capire la logica che sta sotto per poterti aiutare... probabilmente dovrei vedere altro codice

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    378
    Scusa per la velocità dei post ma ho tempo fino alle 15.00
    allora:
    include("includo_moduli/pannello-di-controllo.php");

    mi include dei link,con cui passo tramite get delle stringhe che sono equivalenti ad alcuni file della cartella includo_moduli,dove risiedono tutti i file inclusi per categoria.

    ciò che include questi file è una index.php?variabile=pagina1.php etc etc

    l'errore avviene quando io vado a premere su uno dei link che sono nella pagina pannello-di-controllo.php che includo se il login avviene,aprendo il form per il login con index.php?variabile=pagina_di_login.php

    dove questi file che dovrebbero aprirmi le varie sezioni del menu dell'utente hanno all'inizio un controllo sulla variabile di sessione:
    if($_SESSION['stato'] == "loggato_utente")

    mi visualizza dati..
    else non fa nulla..

    solo che mi da il notice come ho scritto su..

  9. #9
    In effetti è strano che prima $_SESSION['stato'] non dia problemi e poi sì... sempre che io abbia capito bene

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    378
    Originariamente inviato da yangtze
    In effetti è strano che prima $_SESSION['stato'] non dia problemi e poi sì... sempre che io abbia capito bene
    l'unica cosa che differenzia le due inclusioni e che la prima avviene in una pagina inclusa,
    quindi avremo due inclusioni:

    index.php <= pagina-di-login.php <= menu pagina di login.php

    la seconda che non funziona

    index.php <= categoria1_del_menu_di_login.php

    ogni "<=" sta per l'uso di un include.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.