Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Valore di sessione perso

    Buon giorno, ho il problema della perdita di un valore scelto tramite un link.
    In pratica quel valore lo associo ad una variabile di Sessione, purtroppo come cambio link mi perde il valore assegnato, in questo modo:

    codice:
    //index.php
    session_start();
    
    $value = $_GET['c'];
    $_SESSION['c'] = $value;
    
    if($_SESSION['c']=="azzurro"){
    //carica azzurro
    }
    elseif($_SESSION['c']=="red"){
    //carica rosso
    }
    else{
    //carica verde
    }
    
    Azzurro
     Green
     Red</span>
    
    
    <?php 
    echo "ColoreGet: " . $_GET['c'] . " - ColoreSess: " . $_SESSION['c'];
    ?> 
    
    
    //link che mi fanno perdere la sessione
    Home
    Chi siamo
    Capisco, non credo che devo passare per ogni link il colore che voglio, oppure no?
    insomma, per mantenere attiva la sessione e quindi il colore scelto come devo fare?

    Grazie mille

  2. #2
    Se re-imposti ad ogni richiesta la variabile di sessione, non appena il parametro non sara' presente, il valore della sessione verra' impostato a vuoto.

    Per capire meglio che cosa intendo, abilita la visualizzazione di tutti gli errori (compresi i notice) e clicca su Home.

    Ti suggerisco anche di leggere questo articolo:

    Notice: Undefined variable / index / offset

  3. #3
    grazie per avermi risposto:
    Allora, ho fatto cosi:
    codice:
    // Per prima cosa diciamo al PHP di visualizzare i notice:
    error_reporting(E_ALL); 
    ini_set('display_errors', 1);
    Cosi facendo mi ha restituito una serie di errori:
    Warning: Undefined index: h in /var/www/newSite/controlli.php on line 4
    Warning: Undefined index: patr in /var/www/newSite/controlli.php on line 9
    codice:
    //controlli.php
    if ($_GET['h']) {
    	include ('Home.php');
    }
    elseif ($_GET['patr']) {
    	include ('patr.php');
    }
    sto cercando di ovviare in questo modo, ma non ci riesco:
    codice:
    if (!defined('h')) define('h', '');
    if (!defined('patr')) define('patr', '');

    Forse non ho capito come fare..puoi spiegarmi, per favore ?
    Grazie mille...

  4. #4

  5. #5
    ok...questo è quello che mi serviva ( apparentemente )
    codice:
    Solitamente si incappa nei notice undefined index quando si cerca di leggere i dati provenienti da una form (ad esempio). Il metodo che utilizzo solitamente per evitare di sollevare i notice fa uso dell'operatore ternario:
    
    <?php 
    $_POST['nome'] = isset($_POST['nome']) ? $_POST['nome'] : '';
    echo($_POST['nome']);
    ?>
    In pratica dico al PHP di verificare che $_POST['nome'] sia settato, in caso affermativo mantieni il valore originale, altrimenti imposta $_POST['nome'] con '' (stringa vuota). In questo modo, nel codice successivo posso accedere a $_POST['nome'] con la sicurezza che sia valorizzato (o dall'utente o con un valore di default, nel caso qui sopra una stringa vuota).
    ho fatto cosi:
    codice:
    $value = isset($_GET['c']) ? $_GET['c'] : '';
    $_SESSION['c'] = $value;
    	
    if($_SESSION['c']=="azzurro"){
    //carica azzurro
    }
    elseif($_SESSION['c']=="red"){
    //carica rosso
    }
    else{
    //carica verde
    }
    
    Azzurro
    Green
    Red</span>
    Anche cosi il riferimento lo perde...come mai?

  6. #6
    Se re-imposti ad ogni richiesta la variabile di sessione ...

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.