IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Modification de fichier via FTP


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 171
    Points : 68
    Points
    68
    Par défaut Modification de fichier via FTP
    j'ai un fichier que je dois modifier via ftp sur un autre serveur mais le probléme est quand j'éxécute le code tous le fichier est éffacé voic i mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    require_once("libe/file_modifier.php");
    $file="ftp://login:passw@www.serveur.com/voicemail_test.conf";
     $newvoicemail="".$mail.",,attach=yes|saycid=yes|envelope=yes|delete=no";
    	$objFileModifier = new FileModifier();
    	$objFileModifier->ModifyFile($file, $num6[0], $newvoicemail);
    	echo $objFileModifier->GetLastMessage();
    voici le code du fichier file_modifier.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    <?
    class FileModifier
    {
    	var $openMode;
    	var $lastMessage;
     
    	function FileModifier()
    	{
    		$this->openMode = "w"; // open for read / writing text
    	}
     
    	function ModifyFile($fileName, $primaryKeyValue, $newEntry)
    	{
    		$my_ftp_context = stream_context_create(array('ftp' => array('resume_pos' => TRUE)));
    	//$fd=fopen($file, 'w', FALSE, $my_ftp_context);
    		$this->lastMessage = '';
    		$fp = fopen($fileName,$this->openMode,0, $my_ftp_context);
     
    		if ($fp == null)
    		{
    			$this->lastMessage = 'Error opening file for read / write.';
    			return false;
    		}
     
    		$fileSize = filesize($fileName);
    		$fileContent = fread($fp, $fileSize); // read file
     
    		if (strlen($fileContent) > 0) // if not empty content;
    		{
    			$pattern = '/('.$primaryKeyValue.'\s*=>\s*\d+,\d+,).+/i'; // regex pattern to search for the given key
    			$replacement = '${1}'.$newEntry; // replacement string 
    			$newFileContent = preg_replace($pattern, $replacement, $fileContent); // replace the content
     
    			if ($newFileContent != $fileContent) // if replacement was made
    			{
    				fseek($fp, SEEK_SET); // move pointer to begining of file
    				fwrite($fp, $newFileContent); // write new content
    				$this->lastMessage = 'File was modified.'; // if key didn't exists
    			}
    			else
    				$this->lastMessage = 'Key was not found.'; // if key didn't exists
    		}
    		else
    			$this->lastMessage = 'File content empty.';
     
    		fclose($fp); // close the file pointer
     
    		return true;
    	}
     
    	function GetLastMessage()	{ return $this->lastMessage; }
    }
    ?>
    merci

  2. #2
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 171
    Points : 68
    Points
    68
    Par défaut
    Voici un exemple du fichier voicemail_test.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    01251=> 0000,01251,,attach=no|saycid=yes|envelope=no|delete=no
    01221 => 0000,01221,aaaaa@yahoo.fr,,attach=no|saycid=yes|envelope=no|delete=no
    12222 => 12200,12222,,,attach=no|saycid=yes|envelope=no|delete=no
    on doit insérer le mail comme cest fait a la 2éme ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    01221 => 0000,01221,aaaaa@yahoo.fr,,attach=no|saycid=yes|envelope=no|delete=no

  3. #3
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 171
    Points : 68
    Points
    68
    Par défaut
    j'ai pu trouvé la solution c'était un probléme avec ftp au fait on ne peut pas faire la lecture/écriture en méme temps dans le fichier.il fallait louvrir en lecture et faire l'écriture aprés
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    <?
    class FileModifier
    {
    	var $openMode;
    	var $lastMessage;
     
    	function FileModifier()
    	{
    		$this->openModeRead = "r"; // open for read / writing text
    		$this->openModeWrite = "w";
    	}
     
    	function ModifyFile($fileName, $primaryKeyValue, $newEntry)
    	{
    		$my_ftp_context = stream_context_create(array('ftp' => array('resume_pos' => TRUE)));
    		$this->lastMessage = '';
    		$fp = fopen($fileName,$this->openModeRead);
    		if ($fp == null)
    		{
    			$this->lastMessage = 'Error opening file for read / write.';
    			return false;
    		}
     
    		$fileSize = filesize($fileName);
    		$fileContent = fread($fp, $fileSize); // read file
     
    		if (strlen($fileContent) > 0) // if not empty content;
    		{
    			$pattern = '/('.$primaryKeyValue.'\s*=>\s*\d+,\d+,).+/i'; // regex pattern to search for the given key
    			$replacement = '${1}'.$newEntry; // replacement string 
    			$newFileContent = preg_replace($pattern, $replacement, $fileContent); // replace the content
    			fclose($fp);//fermeture du fichier aprés lecture
    			if ($newFileContent != $fileContent) // if replacement was made
    			{
    				$my_ftp_context = stream_context_create(array('ftp' => array('overwrite' => TRUE)));
    				$fp=fopen($fileName, $this->openModeWrite , FALSE, $my_ftp_context);//ouverture du fichier pour l'écriture
    				//fseek($fp,SEEK_SET); // move pointer to begining of file
    				fwrite($fp, $newFileContent); // write new content
    				$this->lastMessage = 'File was modified.'; // if key didn't exists
    			}
    			else
    				$this->lastMessage = 'Key was not found.'; // if key didn't exists
    		}
    		else
    			$this->lastMessage = 'File content empty.';
     
    		fclose($fp); // close the file pointer
     
    		return true;
    	}
     
    	function GetLastMessage()	{ return $this->lastMessage; }
    }
    ?>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Impossibilité d'upload un fichier via FTP
    Par Griffith dans le forum Internet
    Réponses: 6
    Dernier message: 13/06/2007, 19h38
  2. Envoyer un fichier via FTP via un socket
    Par JnJp28 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 24/05/2007, 20h37
  3. Upload de fichier via FTP / OpenFileDialog
    Par Pokerstar dans le forum VB.NET
    Réponses: 2
    Dernier message: 18/05/2007, 03h34
  4. [applet ]envoyer fichier via ftp? quelle solution?
    Par chouchou93 dans le forum Applets
    Réponses: 5
    Dernier message: 27/03/2006, 15h35
  5. []transfert de fichiers via FTP
    Par ista9im dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 01/10/2005, 23h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo