When you build a (web) application, you sometimes want to store user configuration (like password (sha1’d of course) or what else). What’s the nicest solution ?
I’m not very umpartial because I dislike database-usage-for-everything and because I’ve spent lot of time to build the following PHP class that parse and write ini file. Ini files are used in doContent for every things that are configurable (but there’s some XML too, because it rocks).
; A comment [section1] ; variable A var_a = toto var_b = tata
<?php include_once("ini.class.php"); $filename = "test.ini"; //-- header('Content-type:text/plain'); // =& for PHP 4 (avoid the object copy) // true for processing section (default is false like parse_ini_file) $data =& new ini($ini, true); $data->setValue(pi(), 'var_a', 'section1'); $data->setValue('hello world!', 'var_b', 'section1'); $data->setValue('Lorem lipsum', 'var_c', 'section2'); // display the file (-->__toString() not necessary for PHP5) echo $data->__toString(); ?>
; A comment [section1] ; variable A var_a = 3.14159265359 var_b = hello world [section2] var_c = Lorem lipsum
As you can see, all the comments are preserved, the values are modified
and the new section section2
and its value
var_c
are correctly added.
Don't autorize the direct access to these files. For example, you can do it with a traditionnal Apache .htaccess that contains :
<Files *.ini> Order deny,allow Deny from all </Files>
Something that like this at the first line of your ini can avoid the php inclusion :
; <?php exit();?>
And a big hurray for Batiste, he’ll start his new job tommorrow.
Lors de la création d’application internet, il est souvent intéressant de pouvoir enregistrer des éléments de configuration, le bon vieux fichier ini. Ce que nous avons fait pour doContent, mais si ce sont des fichiers simples à lire avec PHP, il est plus difficile de les modifier. Voici une petite classe en PHP (4 ou 5) permettant de les manipuler avec aisance.
Lire l’exemple ci-dessus.
Le résultat final est un fichier ini dans lequel les commentaires existant ont été conservé, les modification répercutées et les ajouts de nouvelles valeurs appliqués. Et n’oubliez pas de protéger vos fichiers .ini, par exemple via un .htaccess pour Apache (voir ci-dessus).
Complétement hors sujet : Batiste s’est trouvé un job dans le petit milieu du développement web (avec des technos proprios, mais qui ne demandent qu’à être remplacées, non ? forcément !)