8797 sujets

Développement web côté serveur, CMS

Windows XP Easyphp php4
Bonjour
Je veux envoyer 1 fichier client nommé toto.doc de type word et contenant 1 image vers le dossier listes de mon site, de façon à ce que tous les clients puissent le lire. Ca marche en local mais pas en réel.

Fichier d'appel saisie_document.php :
<html>
<head>
<title>Saisie texte</title>
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<Link rel="stylesheet" type="text/css" href="../../styles/style.css">
</head>

<body>
<H1>Saisie du chemin du plat pour création de la recette</H1>
<br>

<form method='post' action='result_image.php' enctype='multipart/form-data'>
<table width="450">

<tr>
<td width="200">Chemin du plat</td>
<td width="200">
<input type='file' name='nom_du_fichier' size="30"><br>
</td>
</tr>

<tr>
<td width="200">&nbsp;</td>
<td width="200">
<input type='submit' value='Envoyer'>
</td>
</tr>

</table>
</form>

</body>
</html>




Fichier de récupération document result_document.php provenant du serveur local
<?php
session_start();
$plat=$_SESSION['plat'];//récupération du nom du plat venant d'un 1°formulaire
// avec echo $plat; il y a bien affichage du nom toto que j'ai saisi

if (isset($_FILES['nom_du_fichier'])){
$nomfichier="$plat.doc";
//$chemin="../recettes/";
$chemin_destination="../listes/";
//le dossier listes est 1 autre dossier mais du même niveau que celui ou est //result_document.php

move_uploaded_file($_FILES['nom_du_fichier']['tmp_name'],$chemin_destination.$nomfichier);

}//Ca marche en local. Après, pas de souci, petit traitement pour lire le document.


1° Fichier de récupération document result_document.php provenant du serveur free.fr result_document.php

<?php
print_r($_FILES);
?>

Résultat :
Array ( [nom_du_fichier] => Array ( Smiley name => toto.doc Smiley type => application/msword [tmp_name] => /mnt/123/free.fr/7/e/bridge.encheres/phpTDhrk8 Smiley error => 0 Smiley size => 39936 ) )
Donc, pas d'erreur, le fichier toto.doc du client a bien été envoyé au serveur


2° Fichier result_document.php avec move_uploaded_file et free.fr :
<?php
session_start();
$plat=$_SESSION['plat'];

if (isset($_FILES['nom_du_ficher'])){
$nomfichier="$plat.doc";
$chemin_destination="../listes/";

move_uploaded_file($_FILES['nom_du_fichier']['tmp_name'],$chemin_destination.$nomfichier);

}//même scripts qu'en loca. Ca ne marche pas
?>


3° Fichier result_document.php avec move_uploaded_file et free.fr :

//$nom_du_fichier est le chemin de $plat.doc
if (isset($_FILES['nom_du_fichier']['$plat'])){
$chemin_destination="../listes/";

//move_uploaded_file($_FILES['nom_du_fichier']['tmp_name'],$chemin_destination.$_FILES['nom_du_fichier']['name']);
}


?>

Ne marche pas non plus.
J'ai essayé sans succès dans le 3° fichier de changer le chemin destination, en mettant successivement :

$chemin_destination='/var/http://bridge.encheres.free.fr/Cuisine/listes/';
$chemin_destination=http://bridge.encheres.free.fr/Cuisine/listes/';

Merci d'avance pour votre aide
Modifié par yadonzers (12 Jul 2008 - 16:27)
Bonjour
Désolé de vous avoir dérangé pour rien.
Je me suis cassé la tête alors que tout marchait depuis le début sans que je m'en rende compte.

Le bout de code est :
[mon code]
<?php
session_start();
$plat=$_SESSION['plat'];
//
if (isset($_FILES['nom_du_fichier'])){
$chemin_destination="../listes/";
$nomfichier=$_FILES['nom_du_fichier']['name'];
//
move_uploaded_file($_FILES['nom_du_fichier']['tmp_name'],$chemin_destination.$nomfichier);
}
[//code]
NB: les 2 premières lignes n'ont rien à voir avec le problème mais sont nécessaires pour 1 traitement ultérieur en rapport avec la BDD

Il y a 1 sacré piège : Je publie avec FTP expert. Quand après avoir lancé le script je vérifiais si le document était placé dans le dossier listes, il n'y avait rien. En fait, il faut arrêter le FTP puis le relancer. J'ai perdu 2 jours à cause de ça.
Bien entendu, il ne faut pas publier tel que ce script, mais le sécuriser en indiquant la taille maxi du document, le type seulement doc, et éventuellement enlever les accents.

Je vous embêterai sans doute prochainement avec des questions sur fckeditor
Modifié par yadonzers (13 Jul 2008 - 09:26)
Modérateur
Salut Yadonzer,

Pense à mettre ton code entre les deux balises code et /code SVP. Les boutons sont en bas dans le panneaux de mise en forme.

Du style :

//mon code php
//....


++
Modifié par Nolem (12 Jul 2008 - 16:47)