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
    Membre � l'essai
    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
    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 confirm�

    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    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 418
    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
    Membre � l'essai
    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
    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