UPLOAD

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

par ouckileou » 24 août 2005, 12:06

c'est quoi la fonction valeur_saisie() ? tu l'as définie dans ton script ?

et non, si il n'y a pas d'echo ou de print les messages ne s'afficheront pas tout seul :lol:

par m8sql » 24 août 2005, 11:57

ok cyrano, merci.
Moi ce que je ne comprends pas dans ce script :
la ligne 3 :
$message=""; 
la ligne 11 :
    $nom=valeur_saisie($informations["name"]); 
ligne qui m'affiche une erreur comme function undefined

et comme disait ouckileou , est ce les $messages s'affichent dans le switch vu qu'il y a pas d'echo ?

par Cyrano » 23 août 2005, 10:21

Tu dois écrire $_FILES et non $_files. et dans ton formulaire, dans l'attribut action, il faudrait indiquer echo ou print pour que quelque chose s'affiche dans la valeur de l'attribut...

Et quand ouckileou parle d'indentation, ça veut dire un code qui ressemblerait davantage à ceci, observe l'échelonnement logique:
<?php
// initialisation de la variable du message
$message="";
//traitement du formulaire
//récupérer les informations sur le fichier
if (isset($_POST["ok"]))
{
    $informations =$_FILES["fichier"];
    //en extraire
    // - son nom
    $nom=valeur_saisie($informations["name"]);
    // - son type Mime
    $type_mime =$informations["type"];
    // sa taille
    $taille=$informations["size"];
    // emplacement du fichier temporaire
    $fichier_temporaire=$informations["tmp_name"];
    // code d'erreur
    $code_erreur=$informations["error"];
    //contrôles et traitement
    switch ($code_erreur)
    {
        case UPLOAD_ERR_OK :
            //fichier bien reçu
            //déterminer sa destination finale
            $destination="e:/temp/$nom";
            //copier le fichier temporaire
            if (copy($fichier_temporaire,$destination))
            {
                //copie OK =>mettre un message de ocnfirmation
                $message ="Transfert terminé - fichier=$nom";
                $message .="Taille= $taille octets";
                $message .= "Type MIME =$type_mime.";
            }
            else
            {
                //problème de copie =>mettre un message d'erreur
                $message= "problème de copie sur le serveur.";
            }
        break;
        case UPLOAD_ERR_NO_FILE :
            //pas de fichier saisi
            $message = "pas de fichier saisi";
        break;
        case UPLOAD_ERR_INI_SIZE :
            //taille fichier > upload_max_filesize
            $message="Fichier '$nom' non transféré";
            $message .= "(taille > MAX_FILE_SIZE).";
        break;
        case UPLOAD_ERR_PARTIAL :
            //fichier partiellement transféré
            $message = "Fichier '$nom' non transféré";
            $message .= " (problème lors du transfert).";
        case 5 :
            //fichier partiellement transféré
            $message ="Fichier '$nom' non transféré";
            $message .= "(non trouvé).";
        break;
        default :
            //erreur non prévue !
            $message = "fichier non transféré";
            $message .= "(erreur inconnue : $code_erreur).";
    }
}
?>
<html>
<head>
  <title>saisie</title>
</head>
<body>
  <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" enctype="multipart/form-data">
    <input type="hidden" name="MAX_FILE_SIZE" value="10240">
    fichier: <input type="file" name="fichier"><br>
    <input type="submit" name="ok" value="ok">
  </form>
</body>
</html>
Ce que je ne comprends pas, c'Est pourquoi tu initialises une variable $information au lieu d'utiliser directement $_FILES ... :-k

par ouckileou » 23 août 2005, 10:17

Voici du code indenté que je trouve bien plus clair ;)
<?php
// initialisation de la variable du message
$message="";
//traitement du formulaire
//récupérer les informations sur le fichier
if (isset($_post["ok"])) {
	$informations =$_files["fichier"];
	//en extraire
	// - son nom
	$nom=valeur_saisie($informations["name"]);
	// - son type Mime
	$type_mime =$informations["type"];
	// sa taille
	$taille=$informations["size"];
	// emplacement du fichier temporaire
	$fichier_temporaire=$informations["tmp_name"];
	// code d'erreur
	$code_erreur=$informations["error"];
	//contrôles et traitement
	switch ($code_erreur){
		case UPLOAD_ERR_OK :
			//fichier bien reçu
			//déterminer sa destination finale
			$destination="e:/temp/$nom";
			//copier le fichier temporaire
			if (copy($fichier_temporaire,$destination)){
				//copie OK =>mettre un message de ocnfirmation
				$message ="Transfert terminé - fichier=$nom";
				$message .="Taille= $taille octets";
				$message .= "Type MIME =$type_mime.";
			} else {
				//problème de copie =>mettre un message d'erreur
				$message= "problème de copie sur le serveur.";
			}
			break;
		case UPLOAD_ERR_NO_FILE :
			//pas de fichier saisi
			$message = "pas de fichier saisi";
			break;
		case UPLOAD_ERR_INI_SIZE :
			//taille fichier > upload_max_filesize
			$message="Fichier '$nom' non transféré";
			$message .= "(taille > MAX_FILE_SIZE).";
			break;
		case UPLOAD_ERR_PARTIAL :
			//fichier partiellement transféré
			$message = "Fichier '$nom' non transféré";
			$message .= " (problème lors du transfert).";
			// <------------------------------------------------------ manque un break ici
		case 5 :
			//fichier partiellement transféré
			$message ="Fichier '$nom' non transféré";
			$message .= "(non trouvé).";
			break;
		default :
			//erreur non prévue !
			$message = "fichier non transféré";
			$message .= "(erreur inconnue : $code_erreur).";
	}
}
?> 
Tu offres la possibilité de stocker tout un tas de messages d'erreur, mais tu ne les affiche pas. Ca aiderait pourtant non ? :)

par m8sql » 23 août 2005, 10:11

<?php
		// initialisation de la variable du message
		$message="";
		//traitement du formulaire
		//récupérer les informations sur le fichier
		if (isset($_post["ok"])) {
		$informations =$_files["fichier"];
		//en extraire
		// - son nom
		$nom=valeur_saisie($informations["name"]);
		// - son type Mime
		$type_mime =$informations["type"];
		// sa taille
		$taille=$informations["size"];
		// emplacement du fichier temporaire
		$fichier_temporaire=$informations["tmp_name"];
		// code d'erreur
		$code_erreur=$informations["error"];
		//contrôles et traitement
			switch ($code_erreur){
			case UPLOAD_ERR_OK :
			//fichier bien reçu
			//déterminer sa destination finale
			$destination="e:/temp/$nom";
			//copier le fichier temporaire
			if (copy($fichier_temporaire,$destination)){
			//copie OK =>mettre un message de ocnfirmation
			$message ="Transfert terminé - fichier=$nom";
			$message .="Taille= $taille octets";
			$message .= "Type MIME =$type_mime.";
			} else {
			//problème de copie =>mettre un message d'erreur
			$message= "problème de copie sur le serveur.";
			}
			break;
			case UPLOAD_ERR_NO_FILE :
			//pas de fichier saisi
			$message = "pas de fichier saisi";
			break;
			case UPLOAD_ERR_INI_SIZE :
			//taille fichier > upload_max_filesize
			$message="Fichier '$nom' non transféré";
			$message .= "(taille > MAX_FILE_SIZE).";
			break;
			case UPLOAD_ERR_PARTIAL :
			//fichier partiellement transféré
			$message = "Fichier '$nom' non transféré";
			$message .= " (problème lors du transfert).";
			case 5 :
			//fichier partiellement transféré
			$message ="Fichier '$nom' non transféré";
			$message .= "(non trouvé).";
			break;
			default :
			//erreur non prévue !
			$message = "fichier non transféré";
			$message .= "(erreur inconnue : $code_erreur).";
			}
		}
			?>
<html>
<head><title>saisie</title></head>
<body>
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="10240">
fichier: <input type="file" name="fichier"><br>
<input type="submit" name="ok" value="ok">
</form>
</body>
</html>
quand je valide sur ok le traitement ne fonctionne pas...

par ouckileou » 23 août 2005, 10:00

erreur ou simplement pas de fichier à l'arrivée ?

tu n'indentes jamais ton code ?

par m8sql » 23 août 2005, 09:57

voilà j'ai trouvé un autre script que j'ai modifié quelque peu ,mais je ne ocmprends pas pourquoi ça ne marche pas.
<?php
// initialisation de la variable du message
$message="";
//traitement du formulaire
//récupérer les informations sur le fichier
if (isset($_post["ok"])) {
$informations =$_files["fichier"];
//en extraire
// - son nom
$nom=valeur_saisie($informations["name"]);
// - son type Mime
$type_mime =$informations["type"];
// sa taille
$taille=$informations["size"];
// emplacement du fichier temporaire
$fichier_temporaire=$informations["tmp_name"];
// code d'erreur
$code_erreur=$informations["error"];
//contrôles et traitement
switch ($code_erreur){
case UPLOAD_ERR_OK :
//fichier bien reçu
//déterminer sa destination finale
$destination="e:/temp/$nom";
//copier le fichier temporaire
if (copy($fichier_temporaire,$destination)){
//copie OK =>mettre un message de ocnfirmation
$message ="Transfert terminé - fichier=$nom";
$message .="Taille= $taille octets";
$message .= "Type MIME =$type_mime.";
} else {
//problème de copie =>mettre un message d'erreur
$message= "problème de copie sur le serveur.";
}
break;
case UPLOAD_ERR_NO_FILE :
//pas de fichier saisi
$message = "pas de fichier saisi";
break;
case UPLOAD_ERR_INI_SIZE :
//taille fichier > upload_max_filesize
$message="Fichier '$nom' non transféré";
$message .= "(taille > MAX_FILE_SIZE).";
break;
case UPLOAD_ERR_PARTIAL :
//fichier partiellement transféré
$message = "Fichier '$nom' non transféré";
$message .= " (problème lors du transfert).";
case 5 :
//fichier partiellement transféré
$message ="Fichier '$nom' non transféré";
$message .= "(non trouvé).";
break;
default :
//erreur non prévue !
$message = "fichier non transféré";
$message .= "(erreur inconnue : $code_erreur).";
}
}
?>
<html>
<head><title>saisie</title></head>
<body>
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="10240">
fichier: <input type="file" name="fichier"><br>
<input type="submit" name="ok" value="ok">
</form>
</body>
</html>


Il ne se passe rien.

par m8sql » 22 août 2005, 14:59

OK thx pour ces précisions.
@++++

par ouckileou » 22 août 2005, 14:46

ça sert à préciser que tu envoies un fichier avec ton formulaire justement

et le fichier est uploadé dans le répertoire temporaire du serveur, tu le récupères ensuite où tu veux avec la fonction : move_uploaded_file()

par m8sql » 22 août 2005, 14:40

oui d'accord, mais ca sert à quoi en fait denotifier cela ?
Etje l'ulpoad ou le fichier en fait ?
merci

par ouckileou » 22 août 2005, 14:34

C'est écrit ceci dans ton exemple , à quoi ça correspond ?
Il faut également spécifier la valeur multipart/form-data dans le type d'encodage des données du formulaire (enctype).
ça veut dire ça :
#
<form method="POST" action="notre_script.php" enctype="multipart/form-data">
;)

par m8sql » 22 août 2005, 14:25

C'est écrit ceci dans ton exemple , à quoi ça correspond ?
Il faut également spécifier la valeur multipart/form-data dans le type d'encodage des données du formulaire (enctype).
il le me met ou le fichier en fait ?


:?
  $dest_dossier = '/photos';
je le retrouve dans le c:\ ?

par mere-teresa » 22 août 2005, 14:19

UPLOAD

par m8sql » 22 août 2005, 14:16

Salut à tous les phpatators!
C'est avec joie que je vous retrouve sur phpfrance ;=)
qq'un pourrait me donner un script pour faire un upload de fichier , svp , merci ! (cours aussi si vous avez...merci :P )
P'tit coucou à Cyrano au passage ;)
:oops: