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 :

Plupload : Passer une variable de session au fichier upload.php [PHP 5.6]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur web amateur
    Inscrit en
    Août 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur web amateur
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2012
    Messages : 84
    Points : 43
    Points
    43
    Par défaut Plupload : Passer une variable de session au fichier upload.php
    Bonjour,
    Pour gérer son compte et son profil, le membre inscrit doit pouvoir entre autres uploader/modifier un avatar via le plugin Plupload.

    Seulement,dans le fichier upload.php,lors de l'update de la bdd, j'ai besoin de l'id utilisateur donné par la variable de session $_SESSION['auth'].

    Cette variable existe bien dans la page profile.php: un var_dump(session $_SESSION['auth']) donne:

    C:\wamp\www\graf\profile.php:24:
    object(stdClass)[1]
    public 'id' => string '22' (length=2)
    public 'username' => string 'johndoe' (length=6)
    public 'email' => string 'john@doe.com' (length=17)
    public 'password' => string '$2y$10$nwS.6PlyuH7NQnRuPdRJnuLmPSJK/gzmcWomHYz5Uk3SOkDutnLQ.' (length=60)
    public 'confirmation_token' => null
    public 'confirmed_at' => string '2016-11-29 12:27:40' (length=19)
    public 'reset_token' => null
    public 'reset_at' => null
    public 'remember_token' => null
    public 'avatar' => string 'John-Doe.png' (length=12)

    Mais je n'arrive pas à la transmettre à upload.php. Éclairez-moi svp.

    profile.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
    <?php
        if(session_status() == PHP_SESSION_NONE){ session_start(); }
        require_once('inc/functions.php'); 
        require_once('inc/db.php');
        reconnect_from_cookie();
    ?><!DOCTYPE html>
    <html > 
    <head>
    	<meta charset="utf-8"/>
    	<title>Profil Membre</title>
    	<link href="css-up/style.css" rel="stylesheet" type="text/css"  />
    	<script src="js-up/jquery-1.11.3.js" type="text/javascript" ></script>
    </head>
    <body>
    	<div id="plupload">        
    		<div id="droparea">
    			<p>Déposez vos fichiers ici</p>
    			<span class="or">ou</span>
    			<a href="#" id="browse">Parcourir</a>
    		</div>
    		<div id="filelist">
    			<?php foreach(glob('uploads/*.*') as $v):?>
    			<div class="file">                
    				<img src="<?php  echo $v; ?>">
    				<?php  echo basename($v); ?>                
    				<div class="actions">
                        <a href="<?php  echo basename($v) ?>" class="del">&times;</a>
    				</div>
    			</div>
    			<?php endforeach; ?>
    		</div>
    	</div>    
        <script src="js-up/plupload/plupload.full.min.js" type="text/javascript" ></script>
        <script src="js-up/plupload/moxie.js" type="text/javascript" ></script>
        <script src="js-up/main.js" type="text/javascript" ></script> 
    </body>
    </html>
    main.js :
    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
        //var sessId = '<?php echo $_SESSION['auth']['id'] ; ?>';    
        var uploader = new plupload.Uploader({
    		runtimes          : 'html5,flash',
    		container         : 'plupload',
    		browse_button     : 'browse',
    		drop_element      : 'droparea',
    		url               : 'upload.php',
    		flash_swf_url     : 'js-up/plupload/Moxie.swf',
            multi_selection   : false,
    		multipart         : true,
    		urlstream_upload  : true,
    		multipart_params  : {directory:'test'},
    		max_file_size     : '1mb',
    		resize            : {width:320,height:240,quality:90},
    		filters           : [{ title: 'images', extensions:'JPEG,JPG,PNG,GIF'}]
     
    	});
     
    	uploader.bind('Init',function(up, params){  
    		if(params.runtime!='html5'){
    			$('#droparea').css('border','none').find('p,span').remove();
    		}
    	});
     
    	uploader.bind('UploadProgress',function(up, file){
    		$('#'+file.id).find('.progress').css('width',file.percent+'%');
    	});
     
    	uploader.init();   
     
    	uploader.bind('FilesAdded',function(up,files){    
    		var filelist=$('#filelist');
    		for(var i in files){
    			var file= files[i];
    			filelist.prepend('<div id="'+file.id+'" class="file">'+file.name+' ('+plupload.formatSize(file.size)+')'+'<div class="progressbar"><div class="progress"></div></div></div>');
    		}
    		$('#droparea').removeClass('hover');
    		uploader.start();
    		uploader.refresh(); 
     
    	}); 
     
    	uploader.bind('Error',function(up,err){
    		alert(err.message);
    		$('#droparea').removeClass('hover');
    		uploader.refresh();
    	});
    	uploader.bind('FileUploaded',function(up, file, response){    // upload terminé
    		data = $.parseJSON(response.response);
    		if(data.error){
    			alert(data.message);
    			$('#'+file.id).remove();
    		}else{
    			$('#'+file.id).replaceWith(data.html);
                /*
                $.ajax({
                    type: "POST",
                    cache: false,
                    url: "upload.php",
                    data: "sessId="+sessId
                }); 
                */            
    		}
    	});
     
    	jQuery(function($){ 
    		$('#droparea').bind({
    			dragover:function(e){
    				$(this).addClass('hover');
    			},
    			dragleave:function(e){
    				$(this).removeClass('hover');
    			}
    		});
     
    		$('.del').on('click',function(e){	
    			e.preventDefault();
    			var elem =$(this);
    			if(confirm('Voulez-vous vraiment supprimer cette image ?')){
    				$.get('upload.php', {action:'delete',file:elem.attr('href')});
    				elem.parent().parent().slideUp();
    			}
    			return false;
     
    		});
     
    	});
    upload: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
    <?php 
        if(session_status() == PHP_SESSION_NONE){ session_start();  }
     
    	if(isset($_GET['action']) && $_GET['action']== 'delete'){
    		unlink('uploads/'.$_GET['file']);
    		die();
    	}
        require_once('inc/functions.php'); 
        require_once('inc/db.php');
        reconnect_from_cookie();
     
        $extensions_allowed = array('.JPEG','.jpg', '.PNG','.GIF' ); 
        $extension = strrchr($_FILES['file']['name'], '.');  
        if(!in_array($extension, $extensions_allowed))  {      
            alert('Seuls les fichiers au format png, gif, jpg ou jpeg sont autorisés ');        
        }else{        
            $file=$_FILES['file'];    
            $name=$file['name'];
            if(filesize($file['tmp_name']) > 1000000){
                die('{"error":true, "message": "Le fichier est trop volumineux. Veuillez télécharger une image inférieure à  1 Mo."}');
            }        
    		if(file_exists('uploads/'.$name)){
                die('{"error":true, "message": "L\'image existe déjà"}');
            }  
     
            $name = strtr($name,'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ','~');        
            $name = preg_replace('/([^.a-zA-Z0-9]+)/i', '-', $name);        
            $u = mt_rand(0,1000000)."_".$name;
            move_uploaded_file( $_FILES['file']['tmp_name'],'uploads/'.$u );
     
            //Cette requête marche
    		$pdo->prepare("UPDATE users SET avatar=? WHERE id=22 ")->execute([$u]) ;  
            $pdo = null;		
    		/* Celle-ci ne marche pas
            $pdo->prepare("UPDATE users SET avatar=? WHERE id='$sessId' ")->execute([$u]) ;
            $pdo = null;
            */
            $v='uploads/'.$u;
            $html='<div class="file"><img src="'.$v.'" />'.basename($v).'<div class="actions"><a href="'.basename($v).'" class="del" >&times;</a></div></div>';
            $html=str_replace('"','\\"',$html);
            die('{"error":false, "html": "'.$html.'"}');
     
        }
     
    ?>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Où est défini $sessId ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur web amateur
    Inscrit en
    Août 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur web amateur
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2012
    Messages : 84
    Points : 43
    Points
    43
    Par défaut
    Si c'est à la ligne 35 de upload.php que vous faites allusion, eh bien, $sessId n'est définie nulle part dans ce fichier. Je pensait ainsi pouvoir récupérer sessId de la première ligne de main.js. Les lignes commentées le sont après mes essais infructueux.

    Autre essai non concluant qui me bloque tout upload:
    upload.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $_SESSION['auth'] = $user;
    $pdo->prepare('UPDATE users SET avatar=? WHERE id=? ')->execute([$u,$user->id]) ;

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est l'inverse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $user = $_SESSION['auth'];
    Concernant le fichier main.js, les variables PHP et Javascript ne partagent pas leurs variables.
    De plus le serveur n’interprétera pas le code PHP dans un fichier avec une extension .js
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur web amateur
    Inscrit en
    Août 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur web amateur
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2012
    Messages : 84
    Points : 43
    Points
    43
    Par défaut
    En remplaçant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(session_status() == PHP_SESSION_NONE){ session_start();  }
    par session_start(); et avec votre conseil, ça marche !
    Merci sabotage.

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

Discussions similaires

  1. Passer une variable de session dans un lien href
    Par benny-blanco dans le forum C#
    Réponses: 3
    Dernier message: 28/05/2012, 13h51
  2. [PHP 5.0] Passer une variable vide dans un fichier texte
    Par tarmo57 dans le forum Langage
    Réponses: 2
    Dernier message: 22/02/2009, 14h45
  3. passer une variable de session à la couche métier
    Par froulet dans le forum ASP.NET
    Réponses: 4
    Dernier message: 21/04/2008, 16h10
  4. passer une variable en url à un fichier xml
    Par el_bassir dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 29/06/2007, 13h50
  5. Réponses: 8
    Dernier message: 06/02/2006, 16h38

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