IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

formulaire d'upload MP3


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Points : 16
    Points
    16
    Par défaut formulaire d'upload MP3
    Bonjour à tous.

    Voilà j'ai tenté de rédiger un formulaire d'upload de fichiers mp3 mais j'obtiens un erreur récurrente : "Extension incorect"

    Je ne trouve pas l'erreur quelqu'un serait-il m'aider?

    formulaire.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    <?php
    /*
    Neoterranos & LkY
    Page index.php
    
    Index du site.
    
    Quelques indications : (utiliser l'outil de recherche et rechercher les mentions données)
    
    Liste des fonctions :
    --------------------------
    Aucune fonction
    --------------------------
    
    
    Liste des informations/erreurs :
    --------------------------
    Aucune information/erreur
    --------------------------
    */
     
     
    session_start();
    header('Content-type: text/html; charset=utf-8');
    include("../includes/config.php");
     
    /********Actualisation de la session...**********/
     
    include("../includes/fonctions.php");
    connexionbdd();
    actualiser_session();
     
     
     
    if(isset($_SESSION['membre_id']) =='')
    	{
    		$informations = Array(/*Membre qui essaie de se connecter alors qu'il l'est déjà*/
    						true,
    						'Vous devez être connecté pour vous inscrire au contest',
    						'Vous devez être connecté pour vous inscrire au contest',
    						' - <a href="'.ROOTPATH.'index.php">Retour à l\'acceuil</a>',
    						ROOTPATH.'membres/connection.php',
    						5
    						);
     
    		require_once('../information.php');
    		exit();
    	}
     
    else
    {
    /********Entête et titre de page*********/
     
    $titre = 'Accueil';
     
    include("../haut.php"); //contient le doctype, et head.
     
    /**********Fin entête et titre***********/
    ?>
     
     
    <body>
    <script type="text/javascript">
      var rpxJsHost = (("https:" == document.location.protocol) ? "https://" : "http://static.");
      document.write(unescape("%3Cscript src='" + rpxJsHost +
    "rpxnow.com/js/lib/rpx.js' type='text/javascript'%3E%3C/script%3E"));
    </script>
    <script type="text/javascript">
      RPXNOW.overlay = true;
      RPXNOW.language_preference = 'en';
    </script>
     
    <div id="content" >
    	<div id="content2">
    		<div id="divcontent">
    			<?php include("../left_menu.php"); ?>
                <?php include("../right_menu.php"); ?>
     
            <div id="content1" style="z-index:-1;" >
    			                	<table id="inscription" width="100%">
                                <tr>
                                    <th colspan="2" align="left"> 
                                        <div id="map">
                            <!-- Absence de lien à Inscription 2/2 volontaire -->
                                            <a href="../index.php">Accueil</a> => Inscription 2/2
                                        </div>
                                        <br />    
                                    </th>
                               </tr>
                       </table>
     
    <?php
    	$title = '';
    ?>
    <form method="post" action="trait-upload.php" enctype="multipart/form-data">
    	<p>Titre : <input type="text" size="30" name="titre" value="<?php echo $title; ?>" /></p>
    	<label for="icone"></label><br />
        <input type="hidden" name="MAX_FILE_SIZE" value="200000000">
    	<input type="file" name="icone" id="icone" /><br /><br />
    	<input type="submit" name="submit" value="Envoyer" />
    </form>
     
    <?php
    }
    ?>
     
        </div>
    </div>
     
    		<?php include("../footer.php");?>
     
    </body> 
    </html>





    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    Et voici le traitement du formulaire(trait-upload-php):
     
    <?php
    	$dossier = 'membres/$pseudo/';
    	$maxsize = '200000000';
     
    	if (isset($_FILES['icone']['error']) && $_FILES['icone']['error'] > 0) 
    	{
    		$erreur = 'Erreur lors du transfert';
    	}
    	else
    	{
    		if (isset($_FILES['icone']['size']) && $_FILES['icone']['size'] > $maxsize)
    		{
    			$erreur = 'Le fichier est trop gros';
    		}
    		else
    		{
    			$extensions_valides = array('.mp3');
    			$extension_upload = strtolower(  substr(  strrchr(isset($_FILES['icone']['name']), '.'),1));
     
    			if (in_array($extension_upload,$extensions_valides))                         
    			{
    					$nom = "{$_FILES['icone']['name']}.{$extension_upload}";
    					$resultat = move_uploaded_file($_FILES['icone']['tmp_name'],$dossier.$nom);
     
    					if ($resultat)
    					{
    						$title = addslashes($_POST['titre']);
     
    						echo 'Transfert réussi';
    						mysql_query("INSERT INTO membres_mp3 VALUES(".$id.", '".$nom."', '".$title."' '', ".time().", 1)");
     
    					}
    					else
    					{
    						echo 'Echec du transfert';
    					}
     
    			}
    			else
    			{
    				echo 'Extension incorect';
    			}
    		}
    	}
    ?>
    Merci

  2. #2
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isset($_FILES['icone']['name'])
    renvoie TRUE ou FALSE
    donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $extension_upload = strtolower(  substr(  strrchr(isset($_FILES['icone']['name']), '.'),1));
    ne contiendra pas l'extension ?
    Me trompe-je ?
    Fred

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    pigé pour le isset chef (je suis débutante)...
    Mais quand je l'enlève j'obtiens une erreur...
    KEZAKO??!!

  4. #4
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    A priori,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $extension_upload = strtolower(strrchr($_FILES['icone']['name'], "."));
    devrait suffire pour récupérer l'extension sous la form '.mp3'.
    Fred

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    apres avoir retiré le isset j'ai toujours la mm erreur

  6. #6
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Quelle erreur ? Fais un copier/coller du message.

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    excuse moi je n'avais pas vu ta réponse... et.... victoire ca à l'air de marcher... J'ai une petite erreur de dossier de destination mais je sais d'ou ca vient donc après une journée de galère je te dis merci de tout coeur Fred (mon homonyme)


    Donc il fallait bien mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $extension_upload = strtolower(strrchr($_FILES['icone']['name'], "."));


    Merci mille fois

  8. #8
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    bon et bien je me suis surestimee j'ai desormais cette erreur:

    "Warning: move_uploaded_file(membres//new1.mp3..mp3) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/www/7c84953f7458b8a615c78a6a726b8b19/web/betahsauhusda/membres/trait-upload.php on line 24"

    J'ai bien compris que c'est parce que je ne parviens pas à récupérer le pseudo du membre mais pourquoi?

    voici le code que j'ai mis:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <?php
    	$dossier = "membres/$pseudo/";
    	$maxsize = '200000000';
     
    	if (isset($_FILES['icone']['error']) && $_FILES['icone']['error'] > 0) 
    	{
    		$erreur = 'Erreur lors du transfert';
    	}
    	else
    	{
    		if (isset($_FILES['icone']['size']) && $_FILES['icone']['size'] > $maxsize)
    		{
    			$erreur = 'Le fichier est trop gros';
    		}
    		else
    		{
    			$extensions_valides = array('.mp3');
    			$extension_upload = strtolower(strrchr($_FILES['icone']['name'], "."));
     
    			if (in_array($extension_upload,$extensions_valides))                         
    			{
     
    					$nom = "{$_FILES['icone']['name']}.{$extension_upload}";
    					$resultat = move_uploaded_file($_FILES['icone']['tmp_name'],$dossier.$nom);
     
    					if ($resultat)
    					{
    						$title = addslashes($_POST['titre']);
     
    						echo 'Transfert réussi';
    						mysql_query("INSERT INTO membres_mp3 VALUES(".$id.", '".$nom."', '".$title."' '', ".time().", 1)");
     
    					}
    					else
    					{
    						echo 'Echec du transfert';
    					}
     
    			}
    			else
    			{
    				echo 'Extension incorect';
    			}
    		}
    	}
    ?>

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    927
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 927
    Points : 2 113
    Points
    2 113
    Par défaut
    Bonjour,

    Il faudrait voir le code avant ça. Le code qui initialise la variable $pseudo.

  10. #10
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Effectivement, ...
    Citation Envoyé par goomazio Voir le message
    Bonjour,

    Il faudrait voir le code avant ça. Le code qui initialise la variable $pseudo.
    Peut-être que $pseudo=$_SESSION['membre_id'] ?

    Mais je rajouterais que tu compliques en faisant ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $nom = "{$_FILES['icone']['name']}.{$extension_upload}";
    $resultat = move_uploaded_file($_FILES['icone']['tmp_name'],$dossier.$nom);
    d'où ton fichier appelé new1.mp3..mp3 (voir ta warning).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $resultat = move_uploaded_file($_FILES['icone']['tmp_name'],$_FILES['icone']['name'])
    suffirait largement.
    Fred

  11. #11
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    BON BAH JE SAIS PLUS QUOI FAIRE LA... J'AI MIS ÇA:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $pseudo= $_SESSION['membre_pseudo']
    $dossier = 'membres/$pseudo/';
    $maxsize = '200000000';
    et j'obtiens ça:

    "Parse error: syntax error, unexpected T_VARIABLE in /home/www/7c84953f7458b8a615c78a6a726b8b19/web/betahsauhusda/membres/trait-upload.php on line 3"

    J'ai également modifié la ligne que tu m'as donnée Fred (
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat = move_uploaded_file($_FILES['icone']['tmp_name'],$_FILES['icone']['name'])
    )

  12. #12
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Tu as oublié le ";".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $pseudo= $_SESSION['membre_pseudo'];
    Fred

  13. #13
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    ah oui effectivement Fred :S merci

    mais maintenant un autre apparait (je vais jamais m'en sortir!!):

    "Notice: Undefined index: icone in C:\wamp\www\sick local 2\membres\trait-upload.php on line 20
    Extension incorect"

    et l'erreur est ici (je peux mettre isset mais alors je retournais à mon erreur d'origine qui etait "extension incorrect"):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $extension_upload = strtolower(strrchr($_FILES['icone']['name'], "."));

  14. #14
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    peut- etre qu'inclure directementle traitement du formulaire sur la meme page reglerais le probleme mais je ne sais pas comment faire :S il faut juste changer
    cette partie non?:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form method="post" action="trait-upload.php" enctype="multipart/form-data">

  15. #15
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Juste après ton affectation $maxsize = '200000000';,
    tu devrais placer le bout de code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      echo '<pre>';
      var_dump($_FILES);
      echo '</pre>';
    Cela te permettra de vérifier le contenu de $_FILES.
    Fred

  16. #16
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    Merci vraiment Fred pour ta réactivité.

    J'obtiens ceci maintenant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Notice: Undefined variable: _SESSION in C:\wamp\www\sick local 2\membres\trait-upload.php on line 3
    array(1) {
      ["icone"]=>
      array(5) {
        ["name"]=>
        string(7) "new.mp3"
        ["type"]=>
        string(0) ""
        ["tmp_name"]=>
        string(0) ""
        ["error"]=>
        int(1)
        ["size"]=>
        int(0)
      }
    }
    ça veut dire quoi ce charabia?

  17. #17
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    rapport à ce que j'ai posté juste avant : Ne fais pas attention a ca:
    Notice: Undefined variable: _SESSION in C:\wamp\www\sick local 2\membres\trait-upload.php on line 3

  18. #18
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    waaaaaaaaaaaaaaa ca a marche mais ça me l'a pas enregistree au bon endroit pas ca me l'as mis dans /membres
    au lieu de l e mettre dans /membres/$pseudo

  19. #19
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    A priori, si tu as ceci,
    tu dois également avoir le message "Erreur lors du transfert"
    puisque $_FILES['icone']['error']==1 donc >0.
    La signification de cette erreur se trouve .

    Edit : Bon, ben si ça marche, je n'ai rien dit.
    En revanche, tu devrais essayer de faire afficher ta variable de session (comme pour $_FILES) pour voir ce qu'elle contient.

  20. #20
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    927
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 927
    Points : 2 113
    Points
    2 113
    Par défaut
    Si tu n'avais pas vu ou que tu débute : note que pour que PHP considère le $pseudo comme une variable, il faut encercler la chaîne de double guillemets.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $pseudo = 'martinne';
     
    $dossier = 'membres/$pseudo/'; // PAS OK : affiche membres/$pseudo/ 
    $dossier = "membres/$pseudo/"; // OK : affiche membres/martinne/
    $dossier = 'membres/'.$pseudo.'/'; // OK : idem

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. PERL CGI Formulaire et upload
    Par minusette dans le forum Web
    Réponses: 3
    Dernier message: 20/07/2007, 12h08
  2. [Upload] Formulaire puis Upload via FTP
    Par FredMines dans le forum Langage
    Réponses: 11
    Dernier message: 13/07/2006, 17h36
  3. [Upload] upload + mp3
    Par kanzarih dans le forum Langage
    Réponses: 1
    Dernier message: 09/04/2006, 06h12
  4. formulaire avec upload
    Par sami_c dans le forum ASP
    Réponses: 2
    Dernier message: 23/01/2006, 13h04
  5. Probleme de formulaire d'upload
    Par Oberown dans le forum ASP
    Réponses: 5
    Dernier message: 26/10/2004, 15h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo