Modificare css con variabili

intimoviro

Utente Attivo
18 Ago 2009
272
0
0
Salve ragazzi, non so se è fattibile, ma ve lo chiedo lo stesso:D

Si possono passare delle variabili al css?

Cioè voglio creare una tabella nel database che contiene tutte le configurazioni del template.
Vorrei fare in modo che tramite uno script l'utente può modificare a suo piacimento ad esempio i colori di un box.

Grazie
 
No, CSS non prevede questa funzionalità. Però nulla ti impedisce di modificare delle porzioni di testo nel CSS. Ad esempio puoi dire a PHP di cambiare il codice CSS del file dove trova ${colore} con red. Farlo con delle variabili recuperate dinamicamente dal database è un po' più complicato, ma non impossibile.
 
E' molto più facile di quanto si creda e la colpa di tutto questo è della poca sicurezza dell'xhtml in fatto di cross site scripting :)
Infatti una delle insicurezze dell'xhtml permette di richiamare pagine di script all'interno di elementi che non dovrebbero avere pagine di script al loro interno.
Mi riferisco ad esempio all'elemento link dell'xhtml, proprio quello che passa ad esempio un foglio di stile alla pagina, nel quale si può inserire nell'attributo href anche una pagina di script.
Capita di vedere ad esempio il costrutto:
Codice:
<link rel="stylesheet" href="cssalternativo.php" />
dove il file php si trova là dove dovrebbe stare un foglio di stile.
E' una tecnica usata da alcuni CMS e che pare funzionare bene per fogli di stile richiamati "ondemand" ma non l'ho mai usata e quindi non so se va passato lo script così con una echo finale che riporta il foglio di stile per intero o con altre tecniche più complicate.
Di certo è che ho notato anche l'uso di parametri passati via get con lo stesso metodo, tutti riferiti allo script che genera il CSS.
Fai delle prove, magari inseriscile qui così che vediamo come può funzionare, tieni presente però che ogni volta che nella pagina vuoi modificare che so un colore, dovrai comunque riaggiornare la pagina, perché il PHP non può scrivere sul DOM come il Javascript.
 
Provando così:
PHP:
<?php
$color = intval($_GET['color']) ? $_GET['color'] : 1;
$colors = array('black', 'pink', 'red', 'purple', 'yellow');
$color = $colors[$color - 1];

echo <<<EOF
body {
	color: {$color};
}
EOF;
?>
Funziona tutto a dovere. Sembra quindi che basti visualizzare il codice e poi, nella pagina HTML, richiamarlo come un normale foglio CSS.
 
Eviterei di passare attributi tramite variabili valorizzate con parametri di imput, la trovo una cosa non sicura. Il pericolo è remoto ma c'è.
 
Ho risolto in questo modo e funziona tutto a dovere:D

Ho cambiato l'estensione del css in php.
Poi nel css nella riga iniziale ho inserito questo:

PHP:
<?php
    header("Content-type: text/css; charset: UTF-8");

require_once('../../includes/conf_template.php');
   

?>

Dove conf_template contiene il collegamento al database dove preleva le variabili da includere nel css.

Le variabili nel css le includo in questo modo:

PHP:
<?php echo $box_center; ?>

Grazie

Ciao:fonzie:
 

Discussioni simili