Mettre à jour un fichier de variable via un formulaire

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 : Mettre à jour un fichier de variable via un formulaire

par supercanard » 16 mai 2008, 22:24

Ryle je n'ai pas compris comment faire avec preg_match() car il faut que j'étudi un peu ça. Ca n'a pas l'air simple les expressions régulières.
Par contre j'ai un début de résultat avec eregi()

C'est à la fin que ça se passe. Je récupère donc la valeur des constantes qui sont entre des double quote. Il reste juste à supprimer les double quote, pas trop compliqué.

Au final donc il reste plus qu'à définir pour chaque champs de mon formulaire à quelle ligne ( $tableau[$i] il appartient.

C'est correct comme méthode ?
<?php
$fichier = 'config.php';
$DonneesTotal = NULL;

//On ouvre le fichier en mode "lecture seule"
if(file_exists($fichier))
{
    $fd = fopen($fichier, 'r');
    $i = 1; // compteur de ligne
    // Lorsque nous atteindrons la fin du fichier
    // foef($fd) retournera faux
    // et la boucle while s'arrêtera
	$TabLignes = array();
    while (!feof($fd))
    {
        // Il est temps de lire une ligne du fichier
        // et en tout cas au maximum 1024 caractères
        $ligne = fgets($fd, 1024);
        // Si la fin du fichier n'est pas atteinte
        // On peut maintenant afficher la ligne
        if (!feof($fd))
        {
			$DonneesTotal .= $ligne;
			$TabLignes[$i] = $ligne;
        }
        $i++;
    }
    // On a fini, on ferme !!
    fclose($fd);
	print_r($TabLignes);
	// Ligne à traiter
	$chaine = $TabLignes[3];
	// On récupére ce qui commence et qui finni par "
	eregi( '"(.*)"', $chaine, $resultat );
	echo '<p>Resultat :'.$resultat[0].'</p>';
}
?>

par supercanard » 05 mai 2008, 12:47

Merci pour les explications, maintenant que j'ai la méthode y'a plus qu' a ouvrir notepad... et on va bien voir ce que ça donne

Mais à mon avis vous allez me revoir sur ce topic :D

par Ryle » 05 mai 2008, 12:11

Première chose, tu ne peux pas éditer partiellement un fichier. Tu peux soit le compléter (en ajoutant des lignes à la fin), soit l'écraser (en recommençant à écrire depuis le début).

Il va donc te falloir regénerer le fichier entier à chaque fois. Pour cela, le plus simple est à mon avis
1. de lire tout le fichier (fopen(), fread(), ...)
2. de construire un tableau associatif à partir de chaque ligne de définition de constante (avec un preg_match() par exemple pour capturer le nom de la constante dans le fichier et la valeur associée)
3. de mettre à jour la valeur associée à la clé en fonction des données spécifiées dans le formulaire
4. de regénérer le fichier en écrivant dedans ligne à ligne (fopen(), fwrite())
5. de boucler sur le tableau associatif mit à jour avec un foreach (clé => valeur) pour reconstituer les lignes de définition et les coller dans le fichier

HTH :)

par supercanard » 05 mai 2008, 09:18

Bonjour,

Ta demande n'est pas très claire.
D'autre part, lorsque tu as quelque chose comme
 define("truc", "machin");
tu n'as des vairiables, mais des constantes....
Oups c'est vrai constantes pas variables, merci de me reprendre :wink:

Donc ce que je cherche à faire, c'est de mettre à jour un fichier contenant des constantes depuis un formulaire. Par exemple dans mon formulaire si j'ai un champ nom, c'ets à cette endroit que le contenu de la constante nom devrais se charger dans le value. Enssuite lorsque je poste le form, il faudrait que le contenu du champs nom s'écrive dans le fichier .php, sur le bonne ligne et à l'emplacement de la valeur de la constante.

Je sais juste pas par ou commencer et quelle méthode utiliser :?

par Anémone » 05 mai 2008, 00:52

Bonjour,

Ta demande n'est pas très claire.
D'autre part, lorsque tu as quelque chose comme
 define("truc", "machin");
tu n'as des vairiables, mais des constantes....

Mettre à jour un fichier de variable via un formulaire

par supercanard » 04 mai 2008, 23:28

Salut

Voilà, j'ai un fichier contenant des variables, par exemple :
define( 'NOM_SITE', "Titre du site" );
define( 'DESCRIPTION_SITE', "Description du site" );
Je voudrais pouvoir le mettre à jour via un formulaire, donc charger dans le formulaire les variables dans les champs et pouvoir écrire dans le fichier au moment de la validation.

Alors pour écrire je peut à la limite envoyer la totalité du fichier, bien que l'idéal serrait d'écrire seulement le contenu des champs au bon endroit, mais par contre pour charger le contenu des variables dans les champs, je sèche complètement.

Si quelqun à un début d'explication ou un petit lien, merci d'avance :wink: