Editeur de fichier html & PHP

pinouf42 Messages postés 384 Statut Membre -  
pinouf42 Messages postés 384 Statut Membre -
Bonjour,
Je voudrais faire un editeur de fichier html & php pour mon site, histoire de pouvoir le gérer sans logiciel.

J'ai fait ceci (le chemin du fichier étant déjà indiqué précédemment et le code de la page est bien affiché):
Disons que $fichier = "../index.php"
-----------------------------------------
PAGES2.PHP:
-----------------------------------------
<?php
$fichier = $_POST['chemin'];
if($_POST['Submit']){
$open = fopen($fichier,"w+");
$text = $_POST['update'];
fwrite ($open, stripslashes($text));
fclose($open);
echo ("Fichier mis à jour.<br />");
$file = file($fichier);
foreach($file as $text) {
echo ($text."<br />");
}
}else{
$file = file($fichier);
echo ("<form action=".$PHP_SELF." method='post'>");
echo ("<textarea Name='update' cols='115' rows='20'>");
foreach($file as $text) {
echo ($text);
}
echo ("</textarea>");
echo ("<br /><br /><center><input name='Submit' type='submit' value='Changer la page' />\n
</center></form>");
}
?>


Quand je clique sur le bouton Changer la page. Ca ne change rien.
Merci d'avance
--
Cordialement
Pinouf42
Configuration: Microsoft Windows 7
Firefox 3.6 Beta 5

29 réponses

  • 1
  • 2
Résumé de la discussion

Un éditeur de fichier HTML et PHP est envisagé pour gérer le site sans logiciel, via un script qui reçoit le chemin du fichier et tente d’écrire le contenu transmis par un formulaire. Des soucis apparaissent lorsque le bouton soumetteur déclenche la mise à jour, car la condition if($_POST['Submit']) peut rester fausse, ce qui empêche l’écriture et l’affichage du nouveau contenu. Les réponses suggèrent notamment d’utiliser isset sur les champs 'update' et 'chemin', puis d’écrire avec fopen($_POST['chemin'], 'w+') afin d’éviter que l’envoi du formulaire ne soit pas reconnu. En parallèle, les échanges évoquent aussi des tests simples comme initialiser $fichier directement ou ajuster l’emplacement du chemin après vérification, sans conclure sur une solution définitive.

Bobot (l'IA à votre service)
  1. Utilisateur anonyme
     
    Un submit n'est peut-être pas considéré comme un champ... La condition if($_POST['Submit']) n'est peut-être jamais vraie. Essaye de mettre if(isset($_POST['update'],$_POST['chemin'])
    1
  2. Utilisateur anonyme
     
    Je ne vois pas l'erreur...
    Perso j'utilise :
    unlink($fichier);$open=fopen($fichier,"a+");
    Essaye peut-être...

    A part action=".$PHP_SELF." où il faudrait mettre des apostropes comme action='".$PHP_SELF."', tout est parfait, apparemment
    0
  3. Harricote Messages postés 424 Statut Membre 41
     
    Si tu regardes le code source, y a-t-il quelque chose qui est bizarre ?
    0
  4. pinouf42 Messages postés 384 Statut Membre 31
     
    C'est à dire?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Harricote Messages postés 424 Statut Membre 41
     
    Vois-tu une erreur quelconque ? une balise non refermée, des guillemets mal placés...
    0
    1. Utilisateur anonyme
       
      Si il met un post, la réponse est probablement non...
      0
  7. Harricote Messages postés 424 Statut Membre 41
     
    Si tu enlèves le "\n" ???
    0
  8. pinouf42 Messages postés 384 Statut Membre 31
     
    Le \n n'est pas dans la partie d'ecriture du fichier. Normalement il ne change en rien le probleme.
    0
  9. Harricote Messages postés 424 Statut Membre 41
     
    Qu'entends-tu par "Quand je clique sur le bouton Changer la page. Ca ne change rien. " ?
    0
    1. Utilisateur anonyme
       
      On peut facilement penser qu'il s'agit de la page qu'il veut modifier, puisque c'est le sujet...
      0
  10. pinouf42 Messages postés 384 Statut Membre 31
     
    Et bien, sa exécute la page mais il n'y a aucune modification.

    J'utilise ce même code pour une autre page mais au lieu d'avoir $fichier, j'ai une valeur bien définie: texte.txt

    Et lorsque je clique sur changer, ca fonctionne !!!

    PS: si je change en if(isset($_POST['update'],$_POST['chemin']) j'ai une erreur:
    Parse error: syntax error, unexpected '{' in /homepages/24/d284401489/htdocs/admin/pages2.php  on line 126

    La ligne 126 est : if(isset($_POST['update'],$_POST['chemin']){
    0
    1. Utilisateur anonyme
       
      Pour ton PS, désolé, il faut mettre une autre parenthèse ")" à la fin :
      if(isset($_POST['update'],$_POST['chemin'])){
      0
      1. pinouf42 Messages postés 384 Statut Membre 31 > Utilisateur anonyme
         
        Que je suis débile ^^
        Merci :p

        EDIT: toujours pareil =(
        0
  11. Utilisateur anonyme
     
    C'est donc qu'il y a 2 instruction contraire :
    Disons que $fichier = "../index.php" 
    ----------------------------------------- 
    PAGES2.PHP: 
    ----------------------------------------- 
    <?php
    $fichier = $_POST['chemin']


    La 1ère dit que $fichier='../index.php', la 2ème dit que c'est égale à $_POST['chemin']. Supprime l'une des deux !
    0
  12. pinouf42 Messages postés 384 Statut Membre 31
     
    En fait quand j'ai dit disons que $fichier="../index.php" c'est parce que j'ai un formulaire avant qui me demande le chemin vers le fichier. Et je dit que dedans j'ai inséré ../index.php donc la valeur $fichier est égale à ../index.php

    Merci d'avance
    0
  13. Utilisateur anonyme
     
    Et alors essaye de mettre au début de cette page l'instruction $fichier="../index.php" à la place de $_POST['chemin'] (juste pour tester). Ca donne quoi ?
    0
  14. pinouf42 Messages postés 384 Statut Membre 31
     
    Ca fonctionne, je ne sais pas comment cela ce fait???
    0
  15. pinouf42 Messages postés 384 Statut Membre 31
     
    Mais je voudrais pouvoir specifier avant le fichier que je veux modifier =(
    0
  16. Utilisateur anonyme
     
    On avance ;-)
    Test numéro 2 : met ça au début du code (en re-modifiant le test 1, biensur) :
    echo ('"'. $_POST['chemin'] .'"');
    En haut de ta page (quand tu la visualise) il doit y avoir des guillemets. Il y a-t-il un texte dedan :-p ?
    C'est juste pour vérifier que $_POST['chemin'] possède bien une valeur
    0
  17. pinouf42 Messages postés 384 Statut Membre 31
     
    Oui il y a bien le texte ../index.php
    0
  18. Utilisateur anonyme
     
    Et fait pareil juste après $fichier = $_POST['chemin']; avec $fichier cette fois ?
    0
  19. pinouf42 Messages postés 384 Statut Membre 31
     
    J'ai encore le même texte ;)
    0
  20. Utilisateur anonyme
     
    Ou le vilain :-P
    Essaye de mettre $fichier = $_POST['chemin']; juste APRES le if(isset($_POST['update'],$_POST['chemin'])){,
    et/ou de mettre $open = fopen($_POST['chemin'],"w+");
    0
  21. pinouf42 Messages postés 384 Statut Membre 31
     
    J'avais déjà essayé de le mettre après le if(isset... mais sa ne fonctionnais pas, il ne m'ouvrait aucun fichier.
    En mettant $_POST['chemin'] dans fopen sa ne change rien.
    0
  • 1
  • 2