Rechercher : dans
Par :

Upload fichier vers serveur : Probléme php

Dernière réponse le 5 avr 2009 à 02:04:08 lucas34, le 19 mar 2009 à 20:53:02 
 Signaler ce message aux modérateurs

Bonjour,

J'ai un petit probléme avec un script qui permet d'envoyé des fichier vers mon serveur.
Voici le code :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
  <head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <title>Lucasweb</title>
    <meta http-equiv="Cache-Control" content="no-cache" /> 
    <style type="text/css" media="all">@import "./css/css.css"; </style>
    <script type="text/javascript" src="java/xdir.js"></script>
  </head>
  <body>
<?php include('menu.html') ?>
<?php
if(isset($_GET['id'])){
//recup de lid posté en GET par le lien
        $file = $_GET['id'];
  }
// Taille maximum
$MAX_FILE_SIZE = 150000;
// Dossier de destination du fichier
$folder = "./photo/";

// Tableau array des différents types
$allowed_types = array("image/bmp", "image/gif", "image/pjpeg", "image/jpeg", "image/jpg");

// Variables récupérée par methode POST du formulaires
$ftype = $HTTP_POST_FILES['fichier']['type'];
$fsize = $HTTP_POST_FILES['fichier']['size'];
$ftmp = $HTTP_POST_FILES['fichier']['tmp_name'];

// Diverses test afin de savoir si :
// Le format de fichier correspond à notre tableau array
if(!in_array($ftype, $allowed_types)){$error = 1;}

// La taille du fichier n'est pas dépassée
if($fize > $MAX_FILE_SIZE){$error = 2;}

// Le fichier n'existe pas déjà
if(file_exists($folder."m_".$file)){$error = 3;}

// Si tout va bien, c'est bien déroulé
if(copy($ftmp,''.$folder.''.$file.'')) {$error = 0;}

// Switch servant simplement à la gestion des erreures
switch($error){
case'0':
echo("Fichier correctement envoyé.");
break;
case'1':
echo("Format de fichier incorrecte.");
break;
case'2':
echo("Fichier trop volumineux.");
break;
case'3':
echo("Fichier déjà existant.");
break;
}
?>
</body>
</html>


L'upload se fait parfaitement mais le fichier est renomé pour prendre le numéro de l'ID, jusque ici tout va bien.
Mais il n'y a pas l'extension. Je voudrais que le fichier se nomme :
$id.$extenssion

Mais je ne sais pas comment faire.

Merci Lucas
Configuration: Windows XP
Firefox 3.0.7

Meilleures réponses pour « Upload fichier vers serveur : Probléme php » dans :
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
Ajax - Javascript - Upload multiple VoirIntroduction Création de l'uploader Script côté serveur (upload.php) Téléchargement des Fichiers Multiples Génériques en Ajax Introduction AJAX Upload vous permet de facilement télécharger plusieurs fichiers sans rafraîchir la page et...
[Webmaster] Faire facilement un espace d'upload VoirPourquoi ? Il arrive que vous ayez besoin de mettre en place un petit espace de téléchargement (upload/download) pour stocker des fichiers sur votre site web. C'est en effet très pratique et peut dépanner quand vous n'avez pas de clé USB sous la...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...
Installation d'un serveur Web sous Linux (Apache, PHP et MySQL) VoirIntroduction Un serveur web est un logiciel permettant de rendre accessibles à de nombreux ordinateurs (les clients) des pages web stockées sur le disque. Cette fiche pratique explique comment installer le serveur web Apache sur un système de type...

1

lucas34, le 21 mar 2009 à 21:07:00

Personne ne sait ??? Lucas

Répondre à lucas34

2

lucas34, le 5 avr 2009 à 01:38:28

Up Lucas

Répondre à lucas34

3

benj, le 5 avr 2009 à 01:55:02

Déjà je te conseil d'utiliser des elseif au lieu des if parce que là si la variable $error prend une valeur ca ne top pas le script et ca n'empeche pas la copie du fichier.

ensuite je te conseil move_uploaded_file() au lieu de copy() qui et plus approprié à cette action.

pour ce qui est de l'extension:

move_uploaded_file($ftmp,$folder.'/'.$id.'.'.$extenssion);

Répondre à benj

4

 benj, le 5 avr 2009 à 02:04:08

J'oublier pense à proteger tes variables super global

tu peux par exemple mettre en tete de chaque page :

<?php

function ProtectArray($item) {
		$item = array_map('htmlentities',$item);
		if (@mysql_real_escape_string('blabla')) return array_map('mysql_real_escape_string',$item);
		else return $item;
	}

if (isset($_GET)) {
	$GET = ProtectArray($_GET);
}
if (isset($_POST)) {
	$POST = ProtectArray($_POST);
}

if (isset($_COOKIE)) {
	$COOKIE = $Sql->ProtectArray($_COOKIE);
}

?>


qui te les protègeras automatiquement

Répondre à benj