Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19

Discussione: perdita dati sessione

  1. #1

    perdita dati sessione

    Buona sera... ho un piccolo problema con la mia sessione.
    Ho fatto la mia select e messo il risultato in $_SESSION['righe']; passandogli da Url un 'Id' specifico vado a prendere la riga che mi interessa:
    Codice PHP:
    if(isset($_GET['idRec'])){
        
    $idRec $_GET['idRec'];
        
    $rows $_SESSION['righe'];
        
    $n count($rows);
        for (
    $i=0$i $n$i++) {
          if (
    $rows[$i]['Id'] == $idRec) {
              
    $row $rows[$i];
          }
        }

    poi con $row[campo] popolo i miei input.
    e fin qui funziona tutto!! alla fine della pagina passo la riga selezionata in sessione:
    Codice PHP:
    if(isset($row)) {
        
    $_SESSION['row'] = $row;

    quando clicco il mio pulsante modifica:
    codice:
    function modifica(tab,myForm,pagina) {
    	if (document.getElementById('txtgg')) {
    		componiData();	
    	}
    	window.document.forms[myForm].action = './action/'+pagina+'.php?tab='+tab;
    	window.document.forms[myForm].submit();
    }
    lancia la pagina update.php che dovrebbe con i dati in sessione aggiornare una tabella:
    Codice PHP:
    $tab   $_GET['tab'];

    if(isset(
    $_SESSION['row'])){
        
    $row $_SESSION['row'];

        
    //tratta campi input 
        
    $idRec mysql_escape_string($_POST['idRec']); 
        
    $descr mysql_escape_string($_POST['descr']); 
        echo(
    "id: ".$idRec." descr: ".$descr);
        
        
    $query "UPDATE ".$tab." SET ";
        
        if (
    $descr != $row['Descr']) {
            
    $query $query." Descr = '$descr' ";
            
    $flagParam 'y';
        }
    } else {
                 echo(
    "No sessione");

    E l'unica cosa che vedo è No sessione
    Io non riesco a spiegarmelo... anche xè lo stesso sistema lo uso per altre pagine che hanno la stessa logica e funzionano perfettamente....
    cosa sbaglio??
    Non credo scadi la sessione perchè me lo fa da subito...

    Grazie a tutti
    :tongue:

  2. #2
    Probabilmente è troppo banale ma... non è che ti sei dimenticata session_start()?
    E' l'unica cosa che mi viene in mente per spiegare un simile comportamento

  3. #3
    grazie yangtze di avermi risposto.

    Prima di tutto il tuo avatar è stupendo!!! IO AMO i GATTI

    cmq il session_start() l'ho messo nel file config.php che è incluso in tutte le pagine appunto per non dimenticarmelo...

    Ho notato una cosa però il passaggio me lo perde quando carico la riga da iframe, perchè se invece che utilizzare un iframe apro un popup con la stessa pagina funziona tutto.

    con l'iframe è così: cliente.php
    Codice PHP:
    <?php
    include ('./include/config.php'); 
    include (
    './include/function.php'); 

    intestazione(); 

    if(isset(
    $_GET['idRec'])){
        
    $idRec $_GET['idRec'];
        
    $rows $_SESSION['righe'];
        
    $n count($rows);
        for (
    $i=0$i $n$i++) {
          if (
    $rows[$i]['Id'] == $idRec) {
              
    $row $rows[$i];
          }
        }
    }

    if(isset(
    $_SESSION['row'])){
        
    $row $_SESSION['row'];
        
    //echo("row: ".$row);
    }
    ?>
    <body onLoad="loadCli()">
    <form name="frmCliente" method="post" action="" >
      <table width="100%" border="0" >
        <tr> 
          <td colspan="8"><table width="100%" border="0" cellpadding="0" cellspacing="0">
              <tr> 
                <td width="15%"> <div align="center"> 
                    <input type="button" name="cerca" value="Cerca" onClick="return cercaCli()">
                  </div></td>
                <td width="15%" id="tdInsert" ><div align="center"> 
                    <input type="button" name="insert" id="insert" value="Ins. Nuovo" onClick="return validaCliente()">
                  </div></td>
                <td width="15%" id="tdModificaCli" style="display:none"><div align="center" > 
                    <input type="button" name="modificaCli" value="Modifica" onClick="modifica('clienti','frmCliente','updateCli')">
                  </div></td>
                <td width="15%" id="tdRipristinaCli" style="display:none"><div align="center" > 
                    <input type="reset" name="RipristinaCli" value="Ripristina">
                  </div></td>
                <td width="15%" id="tdEliminaCli" style="display:none"><div align="center" > 
                    <input type="button" name="eliminaCli" value="Elimina" onClick="return elimina('clienti','frmCliente')">
                    </div></td>
                <td width="15%"><div align="center"> 
                    <input type="button" name="pulisci" value="Azzera" onClick="azzera('frmCliente')">
                  </div></td>
                            <td width="40%"> <div align="right">
                    <input type="text" maxlength="80" size="80" id="messaggio" class="messaggio">
                  </div></td>
                <td width="15%" id="tdInsPrat" style="display:none" ><div align="left" > 
                    <input type="button" name="insPrat" value="Ins. in Pratica" onClick="">
                    </div></td>
              </tr>
            </table></td>
        </tr>
        <tr> 
          <td colspan="8"></td>
        </tr>
        <tr> 
            <input type="hidden" name="idRec" id="idRec" value="<?php if(isset($row['Id'])){echo $row['Id'];} ?>">
          <td>Cognome :</td>
          <td> 
            <input type="text" id="cognomeCli" name="cognomeCli" value="<?php if(isset($row['Cognome'])){echo $row['Cognome'];} ?>" maxlength="50" size="30" class="InObbli">
          </td>
          <td>Nome: </td>
          <td colspan="5"><input type="text" id="nomeCli" name="nomeCli" value="<?php if(isset($row['Nome'])){echo $row['Nome'];} ?>" maxlength="50" size="30" class="InObbli"></td>
        </tr>
        <tr> 
          <td>Codice Fiscale:</td>
          <td><input type="text" id="codFiscCli" name="codFiscCli" value="<?php if(isset($row['CodFisc'])){echo $row['CodFisc'];} ?>" maxlength="16" size="20" class="InObbli"></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
        </tr>
        <tr> 
          <td>Telefono:</td>
          <td><input type="text" name="telCli" id="telCli" value="<?php if(isset($row['Tel'])){echo $row['Tel'];} ?>" maxlength="20" size="12" class="InObbli"></td>
          <td>Cellulare:</td>
          <td><input type="text" name="cellCli" id="cellCli" value="<?php if(isset($row['Cell'])){echo $row['Cell'];} ?>" maxlength="20" size="12" class="InObbli"></td>
          <td>Fax:</td>
          <td><input type="text" name="faxCli" id="faxCli" value="<?php if(isset($row['Fax'])){echo $row['Fax'];} ?>" maxlength="20" size="12"></td>
          <td></td>
          <td></td>
        </tr>
        <tr> 
          <td>Indirizzo: </td>
          <td><input type="text" name="indiCli" id="indiCli" value="<?php if(isset($row['IndiRes'])){echo $row['IndiRes'];} ?>" maxlength="50" size="30"></td>
          <td>Cap:</td>
          <td><input type="text" name="capCli" id="capCli" value="<?php if(isset($row['CapRes'])){echo $row['CapRes'];} ?>" maxlength="5" size="7"></td>
          <td>Localit&agrave;:</td>
          <td><input type="text" name="locCli" id="locCli" value="<?php if(isset($row['LocRes'])){echo $row['LocRes'];} ?>" maxlength="50" size="20"></td>
          <td>Prov.</td>
          <td><input type="text" name="provCli" id="provCli" value="<?php if(isset($row['ProvRes'])){echo $row['ProvRes'];} ?>" maxlength="2" size="4"></td>
        </tr>
        <tr> 
          <td>Data di nascita:</td>
    <?php 
    if(isset($row['DataNascita'])){
        
    //a questo punto scomponiamo la riga e per facilitarne la lettura usiamo la funzione list: 
        
    list($anno$mese$giorno) = explode("-"$row['DataNascita']); 
        if (
    $anno == "0000"){
            
    $anno "";
        } 
        if (
    $mese == "00"){
            
    $mese "";
        } 
        if (
    $giorno == "00"){
            
    $giorno "";
        } 
    ?>
          <td><input id="txtgg" onKeyUp="SkipTextBox(this.name);" onFocus="manageFocus(1);" onClick="manageFocus(1);" value="<?php if(isset($giorno)){echo $giorno;} ?>" maxlength="2" size="2" name="txtgg" autocomplete="off">
            . 
            <input id="txtmm" onKeyUp="SkipTextBox(this.name);" onFocus="manageFocus(2);" onClick="manageFocus(2);" value="<?php if(isset($mese)){echo $mese;} ?>" maxlength="2" size="2" name="txtmm" autocomplete="off">
            . 
            <input id="txtyy" onFocus="manageFocus(3);" onClick="manageFocus(3);" value="<?php if(isset($anno)){echo $anno;} ?>" maxlength="4" size="4" name="txtyy" autocomplete="off"> 
            <input type="hidden" value="0" name="txtgghidden"> <input type="hidden" value="0" name="txtmmhidden">  <input type="hidden" value="" name="dateHidden" id="dateHidden">  
          </td>
          <td>Localit&agrave; di nascita:</td>
          <td><input type="text" name="locNascCli" id="locNascCli" value="<?php if(isset($row['LocNascita'])){echo $row['LocNascita'];} ?>" maxlength="50" size="20"></td>
          <td>Prov. di nascita:</td>
          <td><input type="text" name="provNascCli" id="provNascCli" value="<?php if(isset($row['ProvNascita'])){echo $row['ProvNascita'];} ?>" maxlength="2" size="4"></td>
          <td></td>
          <td></td>
        </tr>
        <tr> 
          <td>E-mail:</td>
          <td><input type="text" name="emailCli" id="emailCli" value="<?php if(isset($row['Email'])){echo $row['Email'];} ?>" maxlength="50" size="30"></td>
          <td>Note</td>
          <td colspan="5"><textarea id="noteCli" name="noteCli" cols="50" rows="2"><?php if(isset($row['Note'])){echo $row['Note'];} ?></textarea></td>
        </tr>
        <tr> 
          <td colspan="8"></td>
        </tr>
        <!--tr> 
          <td>Viaggiatori correlati (famiglia):
     </td>
          <td colspan="4">
          <select name="viaggCorr" id="viaggCorr" size="3"></select>          
              <input type="hidden" id="idCorrelati" value="" name="idCorrelati">
          </td>
          <td><input type="button" name="Allega" id="Allega" value="Allega Viaggiatore" onClick="allega()">
          </td>
          <td></td>
          <td></td>
        </tr-->
      </table>
      <div id="tabRis" style="display:none">
        <iframe src="./ricCercaCli.php" width="100%" height="30%" scrolling="yes" title="Risultato Ricerca">
          Contenuto alternativo per i browser che non leggono gli iframe.
        </iframe>
      </div>  
    </form>

    <?php

    if(isset($row)) {
        
    $_SESSION['row'] = $row;
    }

    fine();
    ?>
    il codice js:
    codice:
    function loadCli(){
    	document.getElementById('cognomeCli').focus();
    
    	param_name=new Array();
    	param_value=new Array();
    	
    //ciclo per leggere i parametri della querystring
    	indirizzo=unescape(String(this.location));
    	params=indirizzo.split("?");
    	if (params[1] != null) {
    		param=params[1].split("&");
    		for(i=0;i<param.length;i++){
    			param_temp=param[i].split("=");
    			param_name[i]=param_temp[0];
    			param_value[i]=param_temp[1];
    			
    			if(isNaN(param_value[i])) {
    				eval("var "+param_name[i]+"='"+param_value[i]+"';");
    			} else {
    				eval("var "+param[i]+";");
    			}
    		}
    //---------------	
    // controllo parametri passati tramite querystring
    		if (typeof(mappaAllega)!='undefined') {
    			if (mappaAllega == 'yes') {
    				document.getElementById('tdInsert').style.display = "none"; 
    				document.getElementById('Allega').style.display = "none";
    				document.getElementById('allegaId').style.display = "block";	
    			}
    		}
    		
    		if (typeof(bott)!='undefined') {
    			if (bott == 'y') {
    				document.getElementById('tdInsert').style.display = "none"; 
    				document.getElementById('tdModificaCli').style.display = "block"; 
    				document.getElementById('tdRipristinaCli').style.display = "block";
    				document.getElementById('tdEliminaCli').style.display = "block"; 
    				document.getElementById('codFiscCli').readOnly=true;
    			}
    		}
    		
    		if (typeof(viewTabRis)!='undefined') {
    			if (viewTabRis == 'y') {
    				//document.getElementById('tabRis').style.display = "block"; 
    				apri('./ricCercaCli.php','','' , 'yes','840','200','yes');
    			}
    		}
    		if (typeof(idRec)!='undefined') {
    			document.getElementById('idRec').value = idRec;
    		}
    		
    		// visualizza messaggio passato da action
    		if (typeof(mess)!='undefined') {
    			alert(mess);
    		}
    		
    	}
    }
    
    function riportaCli(idRec) {
    	top.Main.location.href('./mappaCliente.php?viewTabRis=y&bott=y&idRec='+idRec);
    }
    
    function modifica(tab,myForm,pagina) {
    	if (document.getElementById('txtgg')) {
    		componiData();	
    	}
    	window.document.forms[myForm].action = './action/'+pagina+'.php?tab='+tab;
    	window.document.forms[myForm].submit();
    }
    il mio iframe è: ricCercaCli.php
    Codice PHP:
    <?php
    ob_start
    ();
    include(
    'include/config.php'); 
    include(
    'include/function.php'); 

    intestazione(); 
    ?>
    <body>
    <table width="100%" border="0" cellspacing="0">
      <tr > 
        <td class="BSotto">Cognome</td>
        <td class="BSotto">Nome</td>
        <td class="BSotto">Codice Fiscale</td>
        <td class="BSotto">Localit&agrave; residenza</td>
        <td class="BSotto">Telefono</td>
      </tr>
    <?php
    if(isset($_SESSION['righe'])){
        
    $rows $_SESSION['righe'];
        
    $n count($rows);
        for (
    $i=0$i $n$i++) {
          
    $riga $rows[$i];
    ?>
        <tr id=" <?php echo($riga['Id']); ?> " onmouseover="colora('1',' <?php echo($riga['Id']); ?> ','#99CCFF');" onmouseout="colora('4',' <?php echo($riga['Id']); ?> ','none')" ondblclick="riportaCli(<?php unset($_SESSION['row']); echo($riga['Id']); ?> ) ">
          <td>  
              <?php echo($riga['Cognome']); ?>  
          </td>
          <td> 
              <?php echo($riga['Nome']); ?> 
          </td>
          <td> 
              <?php echo($riga['CodFisc']); ?> 
          </td>
          <td> 
              <?php echo($riga['LocRes']); ?> 
          </td>
          <td>
          <?php
            
    if ($riga['Tel']== ""){
                if (
    $riga['Cell']!= ""){
                    echo(
    $riga['Cell']);
                }
            } else {
                 echo(
    $riga['Tel']);
            }
            
    ?>
            </td>  
        </tr>
    <?php
        
    }
    }
    ?>
    </table>
            
            
    <?php

    fine
    ();
    ?>
    sembra proprio che sia la scrittura del tag <iframe xè anche se apro una pop up con la pagina ricCercaCli.php ma lascio l'iframe nascosto (display:none) mi da lo stesso problema, ma se cancello proprio il codice per l'iframe va tutto. cosa dovrei fare? sbaglio a scriveere qualcosa??

    Grazie
    :tongue:

  4. #4
    Argh... non riesco ad afferrare il flusso del tuo programma
    Rischio quindi di dire cavolate.

    Tuttavia escluderei che l'iframe in sè possa interferire con la sessione: alla fin fine è sempre una pagina PHP che si carica in una pseudo-finestra... a meno che non mi stia sfuggendo qualcosa.
    In effetti il discorso sul popup che funziona e l'iframe no è strano, c'è sicuramente qualcosa a monte che causa il problema.

    Mi riguardo un po' il tuo codice... forse è meglio!

    PS: grazie per i complimenti all'avatar... è la mia super-micetta

  5. #5
    non sono ancora riuscita a risolverlo... non so più dove sbattere la testa...

    Non voglio mettere il pop-up sia x un fattore funzionale che grafico...

    HELP MEEEEEEEEEEE
    PLEASE
    :tongue:

  6. #6
    Scusa piccolanomade ma anch'io brancolo nel buio

    se ho capito bene il codice PHP della pagina contenuta nell'iframe sembra causare problemi al corretto funzionamento dell'applicazione. A questo punto concentrerei l'attenzione su ricCercaCli.php.

    Per quale motivo dovrebbe far perdere la variabile $_SESSION['row'] utilizzata poi in update.php?

    Altra domanda... è solo $_SESSION['row'] che va persa o tutta la $_SESSION? si potrebbe facilmente verificare con un print_r() (ad esempio) in update.php.

    Se venisse persa solo $_SESSION['row'] significa che dentro ricCercaCli.php avviene qualcosa che la modifica (forse nelle funzioni intestazione() o fine()?). Non dimentichiamo che l'iframe, a differenza di un popup, viene eseguito quasi contemporaneamente alla pagina cliente.php.

    Se invece fosse tutta la session che va persa allora potrebbe voler dire che non è stata avviata (ma tu stessa affermi di no) o che da qualche parte la svuoti.

    Scusa, ma sto solo cercando di fare ordine nelle mie idee

  7. #7
    Non ti scusare, anzi mi scuso io che ti faccio perdere tempo...
    E poi mi stai dando una mano grandissima!!

    Vediamo di rispondere....
    con print_r($_SESSION);
    dice:
    Array ( [righe] => Array ( [0] => Array ( [0] => 9 [Id] => 9 [1] => Acconto [Descr] => Acconto ) [1] => Array ( [0] => 2 [Id] => 2 [1] => Saldoaa [Descr] => Saldoaa ) ) )

    quindi session c'è
    :tongue:

  8. #8
    ...e quindi è proprio $_SESSION['row'] che ci siamo giocati

    mumble mumble...

  9. #9
    le possibilità sono due:

    - o da qualche parte erroneamente la elimini (ma dovresti usare qualcosa tipo unset($_SESSION['row'])

    - o più probabilmente non viene letto il codice che la imposta

  10. #10
    forse forse...

    allora nella ricCercaCli.php
    sulla riga selezionata c'è l'istruzione:
    codice:
    ondblclick="riportaCli(<?php unset($_SESSION['row']); echo($riga['Id']); ?> ) "
    quel'unset l'ho messo xè cliccando la prima volta andava tutto bene e mi riportava i dati nella form ma se poi volevo selezionare un altro record ricliccando non mi aggiornava il form,
    ma adesso se lo tolgo ed eseguo update.php funziona...

    La cosa che non riesco a capire è:
    $_SESSION['righe']
    clicco su una --> pulisco $_SESSION['row'] --> passo IdRec a mappaCli.php che da $_SESSION['righe'] estrapola la $row con l'id richiesto popola il form e a fine pagina mette $row in $_SESSION['row'] --> clicco su update.php e puf non ho più la $SESSION['row']

    xè??????????????????????????
    dov'è il buco???
    :tongue:

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 © 2025 vBulletin Solutions, Inc. All rights reserved.