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

AJAX Discussion :

Passage variable PHP-AJAX-PHP


Sujet :

AJAX

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Passage variable PHP-AJAX-PHP
    Bonjour,

    Voici 2 fichiers PHP qui permettent de télécharger un fichier du disque local vers le serveur. J'aimerai que le fichier soit copié dans un dossier du serveur qui reprenne une variable venant de PHP. Hors, je n'arrive pas à transférer cette variable $num dans la fonction AJAX afin de la transiter dans le fichier upload.php
    quelqu'un aurait-il une idée ?
    merci
    voici les 2 fichiers PHP

    fichier index160.php ci-dessous qui appelle upload.php :
    Code html : 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
    <!DOCTYPE html>
    <html lang="fr">
    	<head>
    		<meta charset="utf-8" />
    		<script>        
                            function _(elmt)        { return document.getElementById(elmt); } 
                    
                            function uploadFichier() {                                                                              
                                    var file = _('file').files[0];
                                    var data = new FormData();                      
                                    data.append('file', file);
                                    var ajax = new XMLHttpRequest();
                                    ajax.upload.addEventListener("progress", progressHandler, false);
                                    ajax.addEventListener("load", completeHandler, false);
                                    ajax.addEventListener("error", errorHandler, false);
                                    ajax.addEventListener("abort", abortHandler, false);
                                    ajax.open("POST", "index160/upload.php");
                                    ajax.send(data);
                            }                       
                                                    
                            function progressHandler(event) {
                                    _('status_bytes').innerHTML = event.loaded + ' octets chargés sur ' + event.total + ' octets'; 
                                    var pourcentage = (event.loaded / event.total) * 100;   
                                    _('progressBar').value = Math.round (pourcentage);      
                                    _('status').innerHTML = Math.round (pourcentage) + '% chargé... patientez'; 
                            }
                            
                            function completeHandler(event) {       
                                    _('status').innerHTML = event.target.responseText;      
                                    _('progressBar').value = 0;
                            }
                            
                            function errorHandler() {       _('status').innerHTML = "L'upload a échoué!";         }                       
                            function abortHandler() {       _('status').innerHTML = "L'upload a été annulé!";    }
                    </script>
    	</head>
    	<body>
    		<h2>Upload fichier dans dossier comme variable</h2>
    		<?php $_POST['num'] = 123456789;  $num = $_POST['num']; ?>
    		<h2>Dossier cible souhaité = files/<?php echo $num; ?> </h2>
     
    		<form method="post" enctype="multipart/form-data" id="form">	
    			<input type="file" multiple id="file" name="file" /></br><br>
    			<input type="button" value="Télécharger le fichier" onclick="uploadFichier()" /></br> <br>
    			<input type="hidden" name="num" value=<?php echo $num; ?> />
    			<progress id="progressBar" value="0" max="100" style="width:500px"></progress>
    			<input type="hidden" name="num" value="888888888" /> 
    		</form>
    		<h2 id="status"></h2>	
    		<p id="status_bytes"></p>
    	</body>
    </html>


    et upload.php ci-dessous dans le dossier \index160\
    PS : les fichiers téléchargés viennent se copier dans le dossier \index160\files\temp
    lorsque le transfert de variable échoue.
    j'ai essayé également de passer une variable $_POST via javascript sans réussir ...

    Code html : 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
     
    <html>
    <meta charset="utf-8" /> <?php
     
    function skip_accents( $str, $charset='utf-8' ) 
    {
        $str = htmlentities( $str, ENT_NOQUOTES, $charset );
        $str = preg_replace( '#&([A-za-z])(?:acute|cedil|caron|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $str );
        $str = preg_replace( '#&([A-za-z]{2})(?:lig);#', '\1', $str );
        $str = preg_replace( '#&[^;]+;#', '', $str );
        return $str;
    }
     
    // ****************  GESTION DU DOSSIER DE DESTINATION   **********************
    $numdossier = "temp";
     
    if(isset($_GET['num'])) $numdossier = $_GET['num'];
    if(isset($_POST['num'])) $numdossier = $_POST['num'];
    $dir = 'files/'.$numdossier;
    if( is_dir($dir) === false )    mkdir($dir);
     
    // ***********************  COPIE FICHIER  ***************************
     
    if (!empty($_FILES))    //Vérifie la présence d'un fichier dans la superglobale $_FILES.
    {       
            $nomFichier = $_FILES['file']['name'];
            $nomFichier = skip_accents($nomFichier); 
            $tempRep = $_FILES['file']['tmp_name']; 
            $error = $_FILES['file']['error'];
            
            if ($error !=0 || !$tempRep) { echo '<font color=red>Erreur: Le fichier n\'a pas pu être uploadé</font>';     die();  }
            
            if(move_uploaded_file($tempRep, $dir.'/'.$nomFichier))
            {
                    echo '<font color=blue>Chargement du fichier <font color=brown>'.($nomFichier).'<br>';
                    echo '<font color=blue>Dossier effectif = <font color=brown>'.$dir.'/'.$nomFichier.'<font color=blue> </font>';
            }
            else {  echo '<font color=red>Une erreur est survenue lors de l\'envoi du fichier</font>';      }
    }
    ?>
    </html>

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Citation Envoyé par GENESTE Voir le message
    J'aimerai que le fichier soit copié dans un dossier du serveur qui reprenne une variable venant de PHP. Hors, je n'arrive pas à transférer cette variable $num dans la fonction AJAX afin de la transiter dans le fichier upload.php
    Si cette variable vient de php, normalement le mieux c'est qu'elle reste dans php. Pourquoi n'utilises-tu pas une variable de session ? En passant par ajax tu prends le risque qu'un utilisateur malveillant modifie cette variable.

    Sinon il y a une solution complète d'upload de fichier ajax/php ici. Toutes les variables que tu mettras dans le formulaire seront également transmises vers le fichier php d'upload, en complément des fichiers. Ce module permet aussi un retour d'informations en temps réel, de surpasser les limitations serveur pour les gros fichiers etc.

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    merci pour ta réponse. Effectivement en passant par AJAX ça pose un problème de sécurité. j'ai téléchargé ton outil, je suis en train de le mettre en place.
    merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. passage variable php -> js
    Par Daviloppeur dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/09/2009, 13h39
  2. passage variable PHP par javascript depuis popup
    Par nicomax34 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 26/03/2009, 07h21
  3. passage variables php par URL
    Par tremeur53 dans le forum Langage
    Réponses: 3
    Dernier message: 30/10/2008, 15h45
  4. [FLASH MX2004] Passage variable PHP<->Flash
    Par PeZ dans le forum Flash
    Réponses: 4
    Dernier message: 03/04/2006, 14h00

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