begin process at 2012 05 30 23:16:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Server Web

 > 

Apache

 > 

enregistrement d'un fichier via interface web


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

enregistrement d'un fichier via interface web

lundi 26 février 2007 à 14:01:35 | enregistrement d'un fichier via interface web

Ice_juice

Bonjour,

Un ami m'a proposé de venir demander de l'aide ici, suite à mon blocage par rapport à un petit soucis.

ma situation est la suivante : j'ai créé une interface web (php4, mysql4, phpmyadmin et apache2) qui doit gérer un fichier de configuration pour un serveur [ubuntu] (serveur tacacs+, qui est également serveur web donc, avec accès par sql, d'où la présence de ces packages, mais ils ne sont pas importants dans le cas présent), j'ai donc tacacs.conf à modifier par interface web.

Pour modifier un utilisateur, par exemple, vu que tac-plus n'est pas très bien fait je trouve, à avoir un fichier de configuration unique, enfin soit, avec un strpos et des recherche, je suis parvenu à prendre uniquement ce que je voulais dans une textarea, que je peux modifier pour la sauver, avec la partie avant et celle d'après inchangées, jusque là, tout va bien.

Mon soucis vient au niveau du fwrite (file_put_contents() ne passe pas en php4 ^^), du moins je pense : il enregistre bien le fichier à l'emplacement adéquat, mais si j'ai bien analysé le problème, c'est le fwrite qui ajoute aux caractères tels que quote et double quote un antislash.

j'ai conclu ça après avoir essayé la fonction stripslashes(), vu qu'au lieu d'en mettre 3 (vu que quand y en a une il la double, je suppose qu'il le faisait deux fois), il en mettait encore une, et la seule raison qui aurait pu le pousser à le faire, c'est le fwrite.

Me sont venues à l'esprit plusieurs idées :

créer un script bash qui le fait, si c'est possible, et l'appeler via php system() ou shell_exec() ;

utiliser system("echo ".$thetext." > ".$filename); [ qui a effacé mon fichier quand je l'ai essayé...]

ou trouver un moyen de le désactiver dans mon serveur apache : j'ai désactivé les magic quotes, mais ça n'a rien changé.

Voilà, pour en finir, je vous propose mon code (qui ne doit pas être des plus propres d'après ce que je sais, mais je suis un programmeur occasionnel :)) pour que vous y voyiez plus clair. :

<?php
$login=$_POST['nom'];    
$valider=$_POST['valider'];

if ($valider == true)
{
$content=file_get_contents("/etc/tac-plus/tacacs.conf");

$pos = strpos($content, "user ".$login);
$pos2 = strpos($content, "## fin ".$login);
$diff = 5+strlen($login);

$debut = substr($content, 0, $pos+($diff+2)); // 2 pour le retour à la ligne
$user = $_POST['user'];
$str1 = "\n";
$str2 = substr($content, $pos2, strlen($content));
$filename="/etc/tac-plus/tacacs.conf";
$fin = $str1.$str2;
$thetext = $debut.$user.$fin;

 if (is_writable($filename)) {
system("echo ".$thetext." > ".$filename);

//   if (!$handle = fopen($filename, 'w'))
//    {    echo "Impossible d'ouvrir le fichier ($filename)";
//        exit;    }
//   if (fwrite($handle, $debut) == FALSE)
//   {     echo "Impossible d'&eacute;crire dans le fichier ($filename)";
 //         exit;   }
//   if (!$handle = fopen($filename, 'a'))
//    {    echo "Impossible d'ouvrir le fichier ($filename)";
//         exit;    }
//   if (fwrite($handle, $user) == FALSE)
//    {    echo "Impossible d'&eacute;crire dans le fichier ($filename)";
//         exit;    }
//   if (!$handle = fopen($filename, 'a'))
//    {    echo "Impossible d'ouvrir le fichier ($filename)";
//         exit;    }
//   if (fwrite($handle, $fin) == FALSE)
 //   {    echo "Impossible d'&eacute;crire dans le fichier ($filename)";
  //       exit;    }
    
   echo "Configuration sauvegard&eacute;e";
 //  echo $user;
 }
else {
   echo "Le fichier $filename n'est pas accessible en &eacute;criture.";
     }
}
else
 { echo "cochez la case si vous voulez valider vos modifications." ;}
?>

mercredi 28 février 2007 à 13:18:42 | Re : enregistrement d'un fichier via interface web

cedriclomb

Bonjour

Pour les antislash ca doit etre toin serveur qui a le getmagicQuote active
ce que tu peux faire c'est un $_POST['tonchamp']=stripslashes($_POST['tonchamp']) et comme ca plus de \

Par contre pour le fait que tu ais \\\ a mon avis c'est paskle t'avais \ dans ta textarea
si c'est le cas tu peux forcer au moment du chargement dans le textarea un stripmslashes de plus !

Pour ce qui est de fwrite je pense pas que ca ajoute les \ mais bon si les solution ci dessus ne marche pas essaye fputs($fp,$contenu);


Cette discussion est classée dans : fichier, filename, echo, content, fwrite


Répondre à ce message

Sujets en rapport avec ce message

download de gros fichier avec header() [ par leg_yves ] Bonjour,   J'ai écris un code php qui permet au client de downloader un fichier d'un serveur. Tout marche bien, le client est capable de downloader de Fichier attaché avec ONLINE email() [ par wynelle ] Bonjour J'essaie d'envoyer un fichier attaché (pdf) via un script php qui ne peut utiliser la fonction mail car je s Erreur de fichier joint-mail [ par GillesWebmaster ] Bonjour ,j'utilises ce script mais il m'envoie un fichier qui pèse 87o il est donc vide et/ou illisiblele voici:$boundary = "-----=".md5(uniqid(rand() Lecture/écriture dans un fichier [ par FhX ] Voila, rare quand j'ai un problème, mais la ca devient un peu lourd :) Voici donc mon script : $filename = 'log.txt'; $write = 'Chaine à écrire'; $f PHP Speed Limit [ par Filipe35 ] bonjour à tous je désire créer un script qui limite la vitesse de téléchargement. N'ayant pas acces auw commandes sleep j'ai coder ce code mais il n probleme upload de fichiers [ par diemagenta ] Bonjour a tous,1) serait il possible que vous examiniez ma source? C´est mon script d´upload qui malheureusement ne fonctionne pas :(  tout le process Renommer un fichier [ par fredo35m ] Bonjour,j'ai un premier formulaire qui permet de téléchargé sur le serveur un fichier reçu. Sur ce même formulaire j'ai un champ qui permet d'attribué faire un echo ou un print dans un fichier htm [ par guest ] Salut tout le monde,en fait j'ai 5 pages php qui font  des interrogation de bdd mysql et m'affichent plusieurs balise select avec on va dire 1000entré Affichage données fichier csv [ par flopad ] Salut à vous!J'ai le code suivant : A la place d'afficher le fichier, je voudrais seulement afficher la ligne contenant la variable tapée dans le form


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales