Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    107

    Recuperare variabile di sessione per CSS

    Ciao a tutti ragazzi! Come al solito avrei un piccolo problemino...

    In sostanza devo creare "al volo" un file CSS che abbia come colore di sfondo un colore settato a priori. Mi spiego meglio: l'utente può scegliere di avere uno sfondo personalizzato settando la "SKIN" attraverso un menù a tendina che contiene ad esempio BLU,ROSSO,VERDE,etc. Facendo questo si va a modificare il campo "theme" del Database in corrispondenza della sua riga della tabella utenti. Fin qui tutto ok, prendo il valore dal form e lo butto nel database!

    ok il prob è che all'inizio di ogni "sessione" il sistema deve controllare se l'utente ha selezionato un nuovo tema oppure ha lasciato quello di default, ossia se nel DB c'è scritto un valore oppure c'è null. Nel file CSS c'è una variabile $colore che dà appunto il colore allo sfondo e deve variare proprio in funzione di quello che c'è scritto nel DB, ossia se c'è tipo "green" la variabile $colore sarà uguale a "#00FF00", se sarà "blu" $colore="#0000FF", se sarà null ci sarà il colore di default cioè $colore="#000000". Voi con cosa provereste? Con uno switch/case ovviamente! E' quello che ho fatto anch'io solo che sono andato a controllare meglio e la variabile di sessione non esiste! Cioè... io il controllo se l'utente ha una skin oppure ha quella di default lo faccio nella pagina index.php e lì setto $_SESSION['theme'] e gli assegno come valore quello che recupero dal database e nella pagina css non c'è alcun riferimento alla variabile $_SESSION['theme']. Ho provato anche a fare session_start() nella pagina css però non funziona!!

    Vi posto il codice delle 2 pagine:
    index.php
    codice:
    <?php
    require_once('config.php');
    require_once('classi.php');
    require_once('functions.php');
    
    $connessioneDB = new ConnessioneDB();
    session_start();
    
    /* RECUPERO IL TEMA PREFERITO DELL'UTENTE */
    $query_theme = mysql_query("SELECT theme FROM utenti WHERE username='".$_SESSION['username']."'");
    $result = mysql_fetch_array($query_theme);
    $SESSION['theme'] = ($result[0]==null?$default_theme:$result[0]);
    Nota: la variabile $default_theme è settata nel file config.php ed ha valore $default_theme = 'black';

    style.php
    codice:
    header("Content-type: text/css");
    
    switch($_SESSION['theme']){
      case 'blue': $colore = '#0000FF'; break;
      case 'red': $colore = '#FF0000'; break;
      case 'green': $colore = '#00FF00'; break;
      case 'black': $colore = '#000000'; break;
    }
    Come avrete notato nella index.php mi collego al DB e se il valore è diverso da null setto $_SESSION['theme'] con quello che c'è scritto, altrimenti gli assegno un valore di default che setto a parte nel file config.php

    Ho provato anche a collegarmi dal file CSS al DB ma se non riesco a vedere le variabili di sessione, non so quale utente e connesso e quindi non so da quale riga della tabella utenti devo andare a prelevare il tema... Vi preeeggooooo!!! Aiutatemi!!!
    Giovanni

  2. #2
    il prob è che all'inizio di ogni "sessione" il sistema deve controllare se l'utente ha selezionato un nuovo tema oppure ha lasciato quello di default, ossia se nel DB c'è scritto un valore oppure c'è null.
    Non mi sembra l'approccio migliore. In pseudo codice, per quello che riguarda l'avvio della sessione, dovrebbe essere una cosa del genere:

    Codice PHP:
    session_start();
    if (!isset(
    $_SESSION['theme'])) {
       
    $_SESSION['theme'] = get_theme_from_db();

    Quando poi l'utente cambia il tema, lo script oltre a salvare il valore nel database non deve fare altro che valorizzare $_SESSION['theme'] con il nuovo valore.

    Per quanto riguarda il CSS, devi avviare la sessione per poter accedere ai valori salvati:

    Codice PHP:
    session_start();

    header("Content-type: text/css");

    switch(
    $_SESSION['theme']){
       
    // ...


  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    107
    Cavoli funziona!!! Grazie mille!!!

    Vuoi vedere che mettevo il session_start() dopo lo header()???

    grrrr

    Cmq grazie mille davvero!
    Giovanni

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.