modifier une ligne de config dans un fichier texte

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : modifier une ligne de config dans un fichier texte

par new morning » 24 févr. 2009, 23:26

:D Excellentissime :D

Ca marche du tonnerre !

Redoutablement efficace cette fonction var_export, merci beaucoup !

par naholyr » 24 févr. 2009, 08:54

Si tu tiens à avoir un fichier de config au format PHP, et qu'il soit éditable, le plus simple est d'utiliser un tableau :
<?php $config = array(
'variable1' => 'toto',
'variable2' => 12345,
'variable3' => 'super',
...

); ?>
Pourquoi ?
- tant qu'à avoir une affreuse variable globale pour la config, autant se limiter à n'en avoir qu'une seule, ici $config, on limite donc : 1. le nombre de variables dont il faut se souvenir de faire attention à ne pas les écraser, 2. le risque d'écraser une de ses variables.
- c'est beaucoup plus facile de faire ainsi un affichage exhaustif de la config (une seule variable à traiter, la liste des options = la liste des clés du tableau).
- c'est tout autant lisible.
- mais surtout, ça permet de répondre à ton problème avec var_export() ;)
<?php 

// Charger la config
include 'config.php';

// Modifier la config
$config['variable1'] = 'Marcel';

// Sauvegarder la config
$configTxt = '<'.'?php $config = ' . var_export($config, true) . '; ?'.'>'; // Nouveau contenu
copy('config.php', 'config.php-bak'.date('YmdHis')); // Sauvegarde de l'ancien
file_put_contents('config.php', $configTxt); // Ecriture du nouveau

modifier une ligne de config dans un fichier texte

par new morning » 24 févr. 2009, 00:27

Bonjour,

Je voudrais écrire la configuration dans config.php à partir d'un formulaire :
<?php
//config.php : ici se trouvent toutes mes variables
$variable1 = 'toto';
$variable2 =12345;
$variable3 = "super";

...

$variableN = "derdesder"
<?php
//transforme.php : ce script devrait récupérer $_POST d'un formulaire et l'écrire dans config.php a condition de l'écrire correctement!

$handle = fopen (config.php, r+);

foreach ($_POST as $cle=> $valeur) 
{
	/*trouve la ligne où il est écrit */ '$' . $cle . '=' . /*ancienne valeur que je ne connais pas et qui peut être une chaine entre guillemets ou un nombre*/ .';' ;
	/*remplace cette ligne par */ '$' . $cle . '=' . $valeur /*qu'il faut mettre entre guillemet si c'est une chaine*/  . ';' ;
}

fclose ($handle);
Quelqu'un saurait m'aider là-dessus ?