upload d'une image

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : upload d'une image

par Django » 08 oct. 2007, 17:19

C'est un array. Donc c'est pour ca que c'est pas nul.

J'ai le meme soucis que toi en ce moment !

par pat » 02 oct. 2007, 18:17

Merci pour vos renseignements.

J'ai ajouté des condition mais çà ne fonctionne toujours pas.

Si le fournisseur n' a pas uploadé de photo je donne une valeur par default
$_FILES["monfichier"]["name"] = "article-default.gif";
Mais lorsque j'essai il me dit que le champs photo ne peut être null
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER'QUERY_STRING'])) {
  $editFormAction .= "?" . $_SERVER['QUERY_STRING'];
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form5"))
{

    $content_dir = '../image/image-article/'; // dossier où sera déplacé le fichier

    $tmp_file = $_FILES['monfichier']['tmp_name'];
	$monfichier = $_FILES['monfichier']['type'];
	
	
	/* si l'utilisateur a uploadé un fichier, je verifie le fichier */	
	if ($monfichier <> "" )
        {
    if( !is_uploaded_file($tmp_file) )
    {
		
		echo $_FILES['monfichier']['type'];
		exit("Le fichier est introuvable");
		
    }

    // on vérifie maintenant l'extension
    $type_file = $_FILES['monfichier']['type'];

    if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') )
    {
		
        exit("Le fichier n'est pas une image");
    }

    // on copie le fichier dans le dossier de destination
    $name_file = $_FILES['monfichier']['name'];

    if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
    {
        exit("Impossible de copier le fichier dans $content_dir");
    }

    echo "Le fichier a bien été uploadé";
	}
		
		/* si l'utilisateur n'a pas uploadé de photo. $monfichier est nul et je lui donne une valeur par default*/
	if ($monfichier = "" )
        {  
		$_FILES["monfichier"]["name"] = "article-default.gif";		
		}		   
				   
  $insertSQL = sprintf("INSERT INTO t_article (article, id_fourn, id_marque, id_prod, texte, nouveaute, promotion, photo, textepromo) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['article'], "text"),
                       GetSQLValueString($_POST['id_fourn'], "int"),
                       GetSQLValueString($_POST['id_marque'], "int"),
                       GetSQLValueString($_POST['id_prod'], "int"),
                       GetSQLValueString($_POST['texte'], "text"),
                       GetSQLValueString($_POST['nouveaute'], "text"),
                       GetSQLValueString($_POST['promotion'], "text"),
					   GetSQLValueString($_FILES["monfichier"]["name"], "text"),
                       GetSQLValueString($_POST['textepromo'], "text"));




  mysql_select_db($database_connectgl, $connectgl);
  $Result1 = mysql_query($insertSQL, $connectgl) or die(mysql_error());


}
C'est bon j'ai trouvé.
Merci pour vos renseignements

Re: upload d'une image

par Ryle » 02 oct. 2007, 16:07

Il serait certainement avantageux de vérifier si le champ est complété avant que ne soit soumis le formulaire

Code : Tout sélectionner

<form OnSumit="Verif(this)">
C'est un peu hors de propos sans voir le formulaire et sans donner plus d'infos sur ta fonction Verif()... s'il est soumit par une action javascript .submit() l'événement ne sera pas déclenché. De plus un contrôle javascript ne dispense pas d'une véritable validation sur le serveur. Dans tous les cas, le champ en question étant optionnel, ça ne changera pas grand chose :)


Quant à savoir si le fichier a été uploadé ou pas, tu peux le tester avec is_uploaded_file(). Par ailleurs utilise $_SERVER plutôt que $HTTP_SERVER_VARS

Re: upload d'une image

par Patriboom » 02 oct. 2007, 15:48

Bonjour,
Que le champs monfichier soit vide ou pas il exécute toujours la suite.
Dans ce cas, traite en le contenu de la variable.
if ($monfichier == "") { procédure pour vide } else { procédure pour non-vide }


Il serait certainement avantageux de vérifier si le champ est complété avant que ne soit soumis le formulaire

Code : Tout sélectionner

<form OnSumit="Verif(this)">

upload d'une image

par pat » 02 oct. 2007, 14:16

Bonjour,

J' ai fait un formulaire qui doit charger une image et quelques donnés.
Mon problème est que je souhaite insérer les données dans la table même si l'utilisateur ne met pas de photo. Par contre je ne veux pas insérer les données si l'image chargée ne correspond pas à mes critères.
J'ai essayé de résoudre le problème avec
if(isset($_FILES["monfichier"]["name"] ))
mais ça ne marche pas.
Que le champs monfichier soit vide ou pas il exécute toujours la suite.
$editFormAction = $HTTP_SERVER_VARS['PHP_SELF'];
if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
  $editFormAction .= "?" . $HTTP_SERVER_VARS['QUERY_STRING'];
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form5"))
{

    $content_dir = '../image/image-article/'; // dossier où sera déplacé le fichier

    $tmp_file = $_FILES['monfichier']['tmp_name'];
	
if(isset($_FILES["monfichier"]["name"] ))
        {
    if( !is_uploaded_file($tmp_file) )
    {
		
		echo $_FILES['monfichier']['type'];
		exit("Le fichier est introuvable");
		
    }

    // on vérifie maintenant l'extension
    $type_file = $_FILES['monfichier']['type'];

    if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') )
    {
		
        exit("Le fichier n'est pas une image");
    }

    // on copie le fichier dans le dossier de destination
    $name_file = $_FILES['monfichier']['name'];

    if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
    {
        exit("Impossible de copier le fichier dans $content_dir");
    }

    echo "Le fichier a bien été uploadé";
	}

				   
				   
  $insertSQL = sprintf("INSERT INTO t_article (article, id_fourn, id_marque, id_prod, texte, nouveaute, promotion, photo, textepromo) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['article'], "text"),
                       GetSQLValueString($_POST['id_fourn'], "int"),
                       GetSQLValueString($_POST['id_marque'], "int"),
                       GetSQLValueString($_POST['id_prod'], "int"),
                       GetSQLValueString($_POST['texte'], "text"),
                       GetSQLValueString($_POST['nouveaute'], "text"),
                       GetSQLValueString($_POST['promotion'], "text"),
					   GetSQLValueString($_FILES["monfichier"]["name"], "text"),
                       GetSQLValueString($_POST['textepromo'], "text"));




  mysql_select_db($database_connectgl, $connectgl);
  $Result1 = mysql_query($insertSQL, $connectgl) or die(mysql_error());


}