Ftp en php caracteres speciaux

Fermé
Mj7 - 9 janv. 2009 à 12:33
 Mj7 - 9 janv. 2009 à 13:16
Bonjour,


j utilise un ftp pour modifier les textes d un xml en ligne.

le probleme c est que cette application ne gere pas les caracteres speciaux

é donne é

comment regler ce probleme ?
A voir également:

3 réponses

Estydral Messages postés 39 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 23 janvier 2016 6
9 janv. 2009 à 12:41
Bonjour,

La fonction htmlentities($texte) devrait pouvoir résoudre tes problèmes :)
0
Bonjour,

je viens d essayer $txt = htmlentities($txt);


mais l affichage de ma page xml en line é donne toujours é

et si j essaye de faire un modification,

c est un carré qui est a la place du é

une idée ?

je vais envoyer mon script peut etre y cerrais vous plus clair :)
0
<?php

$txt = htmlentities($txt);

$cheminimages = './fichiers_systeme';

$ordretri = '0'; // 0 pour l'affichage par type de fichier, 1 pour l'ordre alphabétique





$suppressioncomplete = true;

function supprimer_rep ($dir) { // fonction pour supprimer un ou plusieurs repertoires et tout ce qu'il y a dedans
if (file_exists ($dir)) {
$dh = opendir ($dir);
while (($file = readdir ($dh)) !== false ) {
if ($file !== '.' && $file !== '..') {
if (is_dir ($dir.'/'.$file)) {
supprimer_rep ($dir.'/'.$file); // si on trouve un repertoire, on fait un appel recursif pour fouiller ce repertoire
}
else {
if (file_exists ($dir.'/'.$file)) {
unlink ($dir.'/'.$file); // si on trouve un fichier, on le supprime
}
}
}
}
closedir ($dh);
if (is_dir ($dir)) {
rmdir ($dir); // on supprime le repertoire courant
}
return true;
}
}



function cmp($ar1, $ar2){

global $ordretri;

if($ordretri == 0){
$key1 = 0;
$key2 = 1;
}
else{
$key1 = 1;
$key2 = 0;
}

if(strtoupper($ar1[$key1]) > strtoupper($ar2[$key1])){
return 1;
}
elseif(strtoupper($ar1[$key1]) === strtoupper($ar2[$key1])){

if(strtoupper($ar1[$key2]) > strtoupper($ar2[$key2])){
return 1;
}
else {
return -1;
}

}
else {
return -1;
}
}

function tri($array){

usort($array, 'cmp');
return $array;
}



function ftphp(){

global $cheminimages;


$dossier='.';
if(isset($_GET['dossier'])){
$dossier = stripslashes($_GET['dossier']);
if(!is_dir($dossier)){
$dossier = '.';
}
}
if(!isset($_GET['dossier2'])){

$handle = opendir($dossier);

$fichier = array();

while (false!==($file = readdir($handle))) {

if(!in_array($file, array('.'))){

$ext_fichier = substr(strrchr($file, '.'), 1);

if($dossier.'/'.$file != './..' and !is_file($dossier.'/'.$file)) {
$file = '/'.$file;
}

if($dossier.'/'.$file != './..'){
array_push($fichier, array(strtolower($ext_fichier), $file));
}
}
}


closedir($handle);


$fichier = tri($fichier); //si l'on préfère classer les résultats par ordre alphabétique plutôt que par type de fichiers, il suffit de remplacer 1 par 0

foreach($fichier as $value){

if(ereg ('/', $value[1])){
$value[1] = str_replace ('/', '', $value[1]);
if($value[1] == '..'){
if($dossier != '.'){
$dossierprecedent = str_replace(strrchr($dossier, '/'), '', $dossier);
echo '<img src="./fichiers_systeme/dossier.jpg"><a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossierprecedent).'"> '.$value[1].'</a><br />';
}
}
else {
echo '<img src="./fichiers_systeme/dossier.jpg"><a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier.'/'.$value[1]).'"> '.$value[1].'</a><br />';
}
}
else {

if((in_array($value[0], array('htm', 'html'))) and is_file($cheminimages.'/htm.jpg')){ echo '<img src="'.$cheminimages.'/htm.jpg"> ';}
if((in_array($value[0], array('gif', 'jpg', 'jpeg', 'bmp'))) and is_file($cheminimages.'/img.jpg')){ echo '<img src="'.$cheminimages.'/img.jpg"> ';}
if((in_array($value[0], array('php', 'php3'))) and is_file($cheminimages.'/php.jpg')){ echo'<img src="'.$cheminimages.'/php.jpg"> ';}
if($value[0]=='css' and is_file($cheminimages.'/css.jpg')){ echo '<img src="'.$cheminimages.'/css.jpg"> ';}

echo '<a href="'.$_SERVER['PHP_SELF'].'?fichier='.urlencode($value[1]).'&dossier2='.urlencode($dossier).'&action=sommaire"> '.$value[1].'</a><br />';
}
}


echo '<br /><br /><table border="0" cellspacing="0" cellpadding="0"><tr><td>
<form action="'.$_SERVER['PHP_SELF'].'?fichier=aucun&dossier2='.urlencode($dossier).'&action=creerdossier" method="post">
<input type="submit" value="Créer un nouveau dossier ici">

</td></form></tr><tr><td>

<form action="'.$_SERVER['PHP_SELF'].'?fichier=aucun&dossier2='.urlencode($dossier).'&action=renommerdossier" method="post">
<input type="submit" value="Renommer ce dossier">

</td></form></tr><tr><td>

<form action="'.$_SERVER['PHP_SELF'].'?fichier=aucun&dossier2='.urlencode($dossier).'&action=uploader" method="post">
<input type="submit" value="Ajouter des fichiers ici">

</td></form></tr><tr><td>

<form action="'.$_SERVER['PHP_SELF'].'?fichier=aucun&dossier2='.urlencode($dossier).'&action=supprimerdossier" method="post">
<input type="submit" value="Supprimer ce dossier" style="color:#ff0000" onclick="return confirm(\'Supprimer l\\\'intégralité du dossier?\');">

</td></form></tr></table>';
}
else {
$dossier = stripslashes($_GET['dossier2']);

//initialisation des variables
$cible=0;
$fichier='';
if(isset($_GET['fichier'])){ $fichier = $_GET['fichier'];}
$action='';
if(isset($_GET['action'])){ $action = $_GET['action'];}
if(isset($_POST['cible'])){ $cible = stripslashes($_POST['cible']);}

//actions selon la demande precisée dans l'url

//sommaire: affichage des differentes actions possibles pour le fichier
if($action == 'sommaire'){
if(is_file($dossier.'/'.$fichier)){

$adresse = (str_replace('bzzz', '/', rawurlencode(str_replace('/', 'bzzz', $dossier.'/'.$fichier)))); //astuce pour bien encoder l'adresse de l'iframe, je ne m'en sortais pas avec les méthodes classiques

echo '<table border="1" cellpadding="2" width="410"><tr><td colspan="2">Fichier: <b>'.$fichier.'</b></td></tr>
<tr><td rowspan="6"><iframe src="'.$adresse.'"></iframe></td>';

echo '
<td><a href="'.$_SERVER['PHP_SELF'].'?fichier='.urlencode($fichier).'&dossier2='.urlencode($dossier).'&action=supprimer" onclick="return confirm(\'Supprimer le fichier?\');">
supprimer</a></td></tr>
<tr><td><a href="'.$_SERVER['PHP_SELF'].'?fichier='.urlencode($fichier).'&dossier2='.urlencode($dossier).'&action=copier">
copier</a></td></tr>
<tr><td><a href="'.$_SERVER['PHP_SELF'].'?fichier='.urlencode($fichier).'&dossier2='.urlencode($dossier).'&action=deplacer">
deplacer</a></td></tr>
<tr><td><a href="'.$_SERVER['PHP_SELF'].'?fichier='.urlencode($fichier).'&dossier2='.urlencode($dossier).'&action=renommer">
renommer</a></td></tr>
<tr><td><a href="'.$_SERVER['PHP_SELF'].'?fichier='.urlencode($fichier).'&dossier2='.urlencode($dossier).'&action=telecharger">
telecharger</a></td></tr>
<tr><td><a href="'.$_SERVER['PHP_SELF'].'?fichier='.urlencode($fichier).'&dossier2='.urlencode($dossier).'&action=modifier">
modifier</a></td></tr></table>';
}
else {
echo 'Ce fichier n\'existe pas.';
}
}

//action supprimer demandée
if($action == 'supprimer'){
if(is_file($dossier.'/'.$fichier)){
unlink($dossier.'/'.$fichier);
echo 'Le fichier a bien été supprimé.<a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';
}
else {
echo 'Le fichier n\'a pas été trouvé. <a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';
}
}



//action copier demandée
if($action == 'copier'){
if(is_file($dossier.'/'.$fichier)){

echo 'Choissez le dossier cible:
<form action="'.$_SERVER['PHP_SELF'].'?dossier2='.urlencode($dossier).'&fichier='.urlencode($fichier).'&action=copier1" method="post">
<input type="text" size="20" name="cible" value="..">
<input type="submit" value="copier"></form>';

}
else {
echo 'Ce fichier n\'existe pas. <a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';
}
}


//action copier1 demandée (suite de copier)
if($action == 'copier1'){
if(is_file($dossier.'/'.$fichier)){
copy($dossier.'/'.$fichier, $cible.'/'.$fichier);
echo 'Le fichier a bien été copié. <a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($cible).'">Revenir au dossier</a>';
}
else {
echo 'Ce fichier n\'existe pas. <a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';
}
}

// action deplacer demandée
if($action == 'deplacer'){
if(is_file($dossier.'/'.$fichier)){
echo 'Choisissez le dossier cible:
<form action="'.$_SERVER['PHP_SELF'].'?dossier2='.urlencode($dossier).'&fichier='.urlencode($fichier).'&action=deplacer1" method="post">
<input type="text" size"20" name="cible" value="..">
<input type="submit" value="deplacer"></form>';
}
else {
echo 'Ce fichier n\'existe pas. <a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';
}
}


//action deplacer1 demandée (suite de deplacer)
if($action == 'deplacer1'){
if(is_file($dossier.'/'.$fichier)){
rename($dossier.'/'.$fichier, $cible.'/'.$fichier);
echo 'Le fichier a bien été déplacé. <a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($cible).'">Revenir au dossier</a>';
}
else {
echo 'Ce fichier n\'existe pas. <a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';
}
}

//action renommer demandée
if($action == 'renommer'){
if(is_file($dossier.'/'.$fichier)){

echo 'Choisissez le nouveau nom :
<form action="'.$_SERVER['PHP_SELF'].'?dossier2='.urlencode($dossier).'&fichier='.urlencode($fichier).'&action=renommer1" method="post">
<input type="text" size"20" name="cible" value="'.$fichier.'">
<input type="submit" value="renommer"></form>';
}
else {
echo 'Ce fichier n\'existe pas. <a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';
}
}

//action renommer1 demandée (suite de renommer)
if($action == 'renommer1'){
if(is_file($dossier.'/'.$fichier)){

rename($dossier.'/'.$fichier, $dossier.'/'.$cible);
echo 'Le fichier a bien été renommé.
<a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';
}
else {
echo 'Ce fichier n\'existe pas. <a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';
}
}

//action telecharger demandée
if($action == 'telecharger'){

echo '
<script language="javascript">
w = window.open("ftphp.php","Telechargement","location=no,width=40,height=40,toolbar=no,scrollbars=no,resizable=no");
w.parent.location.href="ftphp.php?dossier2='.$dossier.'&fichier='.$fichier.'&action=telecharger1";
</script>
<a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';

}

if($action == 'telecharger1'){
header('Content-disposition: attachment; filename='.$fichier);
header('Content-Type: application/force-download');
header('Content-Transfer-Encoding: fichier');
header('Content-Length: '.filesize($dossier.'/'.$fichier));
header('Pragma: no-cache');
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
readfile($dossier.'/'.$fichier);
}

//action modifier demandée
if($action == 'modifier'){
if(is_file($dossier.'/'.$fichier)){
$fp = fopen($dossier.'/'.$fichier, 'r+');
$contenu = fread($fp,5000000);
$contenu = str_replace('</textarea>', '/textarea', $contenu);
echo '
<form action="'.$_SERVER['PHP_SELF'].'?dossier2='.urlencode($dossier).'&fichier='.urlencode($fichier).'&action=modifier1" method="post">
<textarea rows="20" cols="49" name="cible">'.$contenu.'</textarea><br>
<input type="hidden" name="fp" value="'.$fp.'">';

echo '
<input type="submit" value="modifier">
<input type="reset" value="annuler les modifs">
</form>';

}
else {
echo 'Ce fichier n\'existe pas.
<a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';
}

}

//action modifier1 demandée (suite de modifier)
if($action == 'modifier1'){
if(is_file($dossier.'/'.$fichier)){
$fp = fopen($dossier.'/'.$fichier, 'w+');
$cible = str_replace('/textarea', '</textarea>', $cible);
fputs($fp, $cible);
fclose($fp);
echo 'Le fichier a bien été modifié.
<a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';
}
else {
echo 'Ce fichier n\'existe pas.
<a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';
}
}

//action creerdossier demandée
if($action == 'creerdossier'){
echo 'Tapez le nom du dossier:
<form action="'.$_SERVER['PHP_SELF'].'?dossier2='.urlencode($dossier).'&action=creerdossier1" method="post">
<input type="text" size"20" name="cible">
<input type="submit" value="creer"></form>';
}

//action creerdossier1 demandée (suite de creerdossier)
if($action == 'creerdossier1'){
if(is_dir($dossier) and !is_dir($dossier.'/'.$cible)){
mkdir($dossier.'/'.$cible, 0777);
echo 'Dossier créé. <a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';
}
else {
echo 'Ce dossier existe déjà.
<a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';
}
}


//action renommerdossier demandée
if($action == 'renommerdossier'){
$anciennom = substr(strrchr($dossier, '/'), 1);
echo 'Tapez le nouveau nom du dossier:
<form action="'.$_SERVER['PHP_SELF'].'?dossier2='.urlencode($dossier).'&action=renommerdossier1" method="post">
<input type="text" size"20" name="cible" value="'.$anciennom.'">
<input type="submit" value="Renommer"></form>';
}

//action renommerdossier1 demandée (suite de renommerdossier)
if($action == 'renommerdossier1'){
if(!is_dir($dossier.'/'.$cible)){
$dossierprecedent = explode('/', $dossier);
$nb = count($dossierprecedent);
$dossierprec = $dossierprecedent[0];
for ($i = 1; $i < $nb-1; $i++){
$dossierprec .= '/'.$dossierprecedent[$i];
}

rename ($dossier, $dossierprec.'/'.$cible);
echo 'Dossier renommé.
<a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossierprec).'/'.urlencode($cible).'">Revenir au dossier</a>';
}
else {
echo 'Il existe déjà un dossier portant ce nom.
<a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';
}
}

//action supprimerdossier demandée
if($action == 'supprimerdossier'){
supprimer_rep ($dossier);
echo 'Le dossier a été supprimé.
<a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';

}

//action uploader demandee
if($action == 'uploader'){

echo '<form action="'.$_SERVER['PHP_SELF'].'?dossier2='.urlencode($dossier).'&action=uploader1" method="post" enctype="multipart/form-data">';
echo '<table><tr><td>';

for ($i = 1; $i < 11; $i++){
echo '<input type="file" name="'.$i.'"><br>';
}

echo '</td><td>';

for ($i = 11; $i < 21; $i++){
echo '<input type="file" name="'.$i.'"><br>';
}

echo '</td></tr></table>';
echo '<input type="submit" value="uploader"></form>';
}

//action uploader1 demandée (suite de uploader)
if($action == 'uploader1'){
for($i=1;$i!=21;$i++){
if(!empty($_FILES[$i]['name'])){
$nom_destination = $_FILES[$i]['name'];
$nom_fichier = $_FILES[$i]['tmp_name'];
$poidsFichier = $_FILES[$i]['size'] ;

if($poidsFichier<100000000){ // taille max du fichier : vaut ici 100 Mo pour l'exemple

$page = explode('.', $nom_destination);
$nb = count($page);
if(copy($nom_fichier, $dossier.'/'.$nom_destination)){
echo $_FILES[$i]['name'].' : fichier envoyé.<a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'"> Revenir au dossier</a><br />';
}
else {
echo $nom_destination.' : erreur dans l\'envoi du fichier.<a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'"> Revenir au dossier</a><br />';
}
}
else {
echo $nom_destination.' : le fichier dépasse la taille maximale autorisée.<a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'"> Revenir au dossier</a><br />';
}
}
}
}
}
}

ftphp();

?>
0
Estydral Messages postés 39 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 23 janvier 2016 6
9 janv. 2009 à 12:55
Ta variable $txt doit correspondre à ton texte à convertir:

$txt = "Caractères spéciaux €";
$txt = htmlentities($txt);

Voilou!
0
alors


en rajoutant header('Content-type: text/html; charset=UTF-8');

je n ai plus de problemes de modification en ligne :)

mais (evidement) a present j ai des erreures d ecriture sue la page php elle meme

été donne �t�

je brule...
0