modifier un fichier en PHP

VaN
Mammouth du PHP | 1107 Messages

23 janv. 2008, 02:09

Bonsoir,

je souhaite permettre à un utilisateur (un admin) de modifier un fichier php contenant des variables servant pour le site.
J'ai bien réussi à faire ce que je souhaitais, en bidouillant, et me servant un peu de la doc, mais je ne suis pas sûr que mon script soit vraiment optimisé.

En jetant un coup d'oeil, voyez-vous des choses qui vous semblent améliorables ?
// On lit le fichier vars.php
	$varsFile = file('../vars.php');
	$file = '';
	// On scan chaque ligne, si on trouve la variable de points, on modifie sa valeur
	foreach($varsFile as $line) {
		if(substr_count($line, 'points_parrain') == 1) {
			$line = '$points_parrain = '.$_POST['parrain'].';'."\n";
		}
		if(substr_count($line, 'points_filleul') == 1) {
			$line = '$points_filleul = '.$_POST['filleul'].';'."\n";
		}
		// on recrée de fichier ligne par ligne
		$file .= $line;
	}
	// On ouvre le fichier vars.php en effaçant tout son contenu, on remplace son contenu, et on le ferme
	$varsFile = fopen('../vars.php', 'w+');
	$file = fwrite($varsFile, $file);
	fclose($varsFile);

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

23 janv. 2008, 14:24

Hmm... la méthode est mauvaise je dirais.
On ne change pas le code d'un fichier mais le contenu d'une variable.

Dans ce sens l'admin ne doit pas avoir à modifier du php mais juste remplir un champ de formulaire pour aller modifier une valeur en BD qui correspond à "points_parrain".

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

VaN
Mammouth du PHP | 1107 Messages

23 janv. 2008, 14:51

Je m'en doutais, sauf que créer une table exprès pour une variable, je trouve ça un peu lourd. Pour ma part, je vois les bases de données comme un système de sauvegarde de contenu, pas une sauvegarde de la configuration du site.
On ne change pas le code d'un fichier mais le contenu d'une variable.
La je ne peux qu'etre d'accord. C'est d'ailleurs pour ça que je venais poster ce bout de code. N'existe t'il pas un moyen de modifier seulement la variable qui m'interesse dans mon fichier vars.php, plutot que de le ré-ecrire en entier (ça se fait tout de meme facilement grâce au for() ) et de l'enregistrer ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

23 janv. 2008, 15:10

bof... base de données, fichier de configuration, flux xml... la source de données importe peu... c'est pas terrible que ce soit sous la forme d'un code php qui soit directement inclu, mais c'est surtout parce que c'est pas habituel...
Un fichier xml du genre

Code : Tout sélectionner

<points> <parrain>xxx</parrain> <filleul>xxx</filleul> </points>
qu'il te suffirait de parser serait peut être une alternative plus légère que la base de données et moins effrayante que la modification en ligne d'un script php...

Y a pas de moyen de modifier le milieu ou le début d'un fichier sans le réecrire complètement.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

23 janv. 2008, 15:43

Certes je me suis limité à BD mais Ryle fait bien de compléter la liste :)

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute