Variabili in sessione che spariscono?

Ciao

Invio alla pagina visual.php 2 variabili:

session_start();
  @include 'config.php';
  if(isset($_GET['id'])){

   // recupero dalla querystring l'ID dell'immagine da visualizzare
  $id_vis = $_GET['id'];
  $car = $_GET['cartella'];
    
    
    $_SESSION['idutente'] = $id_vis;
    $_SESSION['idcartella'] = $car;
    
  // verifico la presenza dell'immagine sul DB
  $query = "SELECT * FROM dl_user WHERE id = '".$_SESSION['idutente']."'";
  $res = @mysql_query($query) or die (mysql_error());
  $n_img = @mysql_num_rows($res);
  }
  
    // se l'id specificato esiste procedo con la visualizzazione
  if($n_img == 1 )
  {
    // recupero i dati dell'immagine selezionata
    $f = @mysql_fetch_array($res) or die (mysql_error());
    $username = stripslashes($f['username']);
    $logo = stripslashes($f['logo']);
    $note = stripslashes($f['note']);
}
?>


...................



<? echo "<img src=\"" . $path_imgp .$_SESSION['idcartella']."/". $logo . "\" border=\"0\">"?>  // visulializzo l'immagine logo dell'utente

Ho inserito le 2 variabili ricevute da un'altra pagina nelle sessioni in modo da poterle avere sempre a disposizione anche all'interno delle funzioni che devo ancora aggiungere.

Il problema è che quando richiamo la prima funzione da un link (che dovrebbe mostrare altri contenuti ma continuando a visualizzare in header il logo e il nome dell'utente...

echo "
.......
<td><a href=\"http://localhost/fotovetrina/visual.php?task=lista\">elenco</a></td>
........
"

il nome e l'immagine dell'utente (che dovrebbe essere sempre visibile) svaniscono.

Più sotto ho fatto un echo di controllo:

<?
 
 echo  $_SESSION['idutente']."<br>". $_SESSION['idcartella'];
 ?>

e i valori delle variabili vengono regolarmente stampati.

Allora qual'è il problema? Perchè appena clicco sul link che richiama una funzione nella pagina non vedo più il nome e l'immagine dell'utente? Faccio confusione con l'uso delle variabile e delle sessioni?

Grazie

inviato 6 anni fa
frankphp
X 0 X

Ciao,

probabilmente non hai più le informazioni perché  $n_img è vuota, infatti fai la query solo quando ti arriva $_GET['id'], e di conseguenza chiamando http://localhost/fotovetrina/visual.php?task=lista, non carichi alcun dato, hai solo le variabili in sessione.

Bye

risposto 6 anni fa
guidoch
X 0 X

Ciao,

probabilmente non hai più le informazioni perché  $n_img è vuota, infatti fai la query solo quando ti arriva $_GET['id'], e di conseguenza chiamando http://localhost/fotovetrina/visual.php?task=lista, non carichi alcun dato, hai solo le variabili in sessione.

Bye

quindi dovrei inviare ogni volta che richiamo una funzione le 2 variabile id e cartella?

tipo:

http://localhost/fotovetrina/visual.php?task=lista&id=$id_vis&cartella=$car

Così potrebbe andare bene; ma speravo in qualcosa di "meglio" diciamo.

Vediamo se qualcuno ha da aggiungere qualcosa.

Grazie

risposto 6 anni fa
frankphp
X 0 X

Hai le due variabili salvate all'interno della tua sessione.

Al richiamo della tua nuova pagina php, come fai il controllo sull'array GET fallo anche sull'array SESSION e recuperi le due variabili.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Hai le due variabili salvate all'interno della tua sessione.

Al richiamo della tua nuova pagina php, come fai il controllo sull'array GET fallo anche sull'array SESSION e recuperi le due variabili.

Non ho capito, scusami.

Controllo su SESSION? Come?

Pensavo che:

   $_SESSION['idutente'] = $id_vis;

    $_SESSION['idcartella'] = $car;

Sarebbe bastato ad avere sempre il valore delle variabili in sessione.

Magari mi sto confondendo.

Intanto ho cambiato un po' il codice e ho risolto (penso momentaneamente) così:

   <td><a href=\"http://localhost/fotovetrina/visual.php?task=lista&id=$id_vis&cartella=$car\">elenco</a></td>

Grazie

risposto 6 anni fa
frankphp
X 0 X

Ciao,

il problema è che come ti è stato detto cambiando pagina perdi le variabili in $_GET, quindi non effettui più l'assegnamento alle variabili in $_SESSION e la query.

Comunque una volta che hai assegnato i valori nell'array $_SESSION quelli rimangono finché la sessione non viene distrutta, ti basterebbe quindi portare fuori la query e inserirla in una seconda if nella quali controlli che $_SESSION['idutente'] non è vuoto.

Così è come sembra a me che dovrebbe funzionare, il codice è tuo e sai tu se ci sono cose di cui posso non aver tenuto conto.

ps: ovviamente i valori di $_SESSION sono disponibili solo quando chiami il session_start()

risposto 6 anni fa
Giacomov
modificato 6 anni fa
X 0 X

per piacere

fatemi un esempio concreto di come controllo se la sessione e vuota o meno e recupero le variabili.

Grazie

risposto 6 anni fa
frankphp
X 0 X

E' una cosa banale:

<?php
session_start();  
if(isset($_SESSION['tua_variabile']))
    // la variabile esiste nelle sessioni ed esegui il tuo codice
else
    // la tua variabile non c'è in sessione e stampo un messaggio di errore
    echo "Errore";
?>

Esistono delle funzioni specifiche per le sessioni che forse possono tornarti utili, vedi qua:

http://php.net/manual/en/ref.session.php

risposto 6 anni fa
Mario Santagiuliana
modificato 6 anni fa
X 0 X

E' una cosa banale:

<?php
session_start();  
if(isset($_SESSION['tua_variabile']))
    // la variabile esiste nelle sessioni ed esegui il tuo codice
else
    // la tua variabile non c'è in sessione e stampo un messaggio di errore
    echo "Errore";
?>

Esistono delle funzioni specifiche per le sessioni che forse possono tornarti utili, vedi qua:

http://php.net/manual/en/ref.session.php

ah si ti riferivi a questo.

ma penso che non cambi niente comunque così come adesso è impostato il codice. Devo cambiare qualcosa.

Vi faccio sapere. Grazie

risposto 6 anni fa
frankphp
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda