photo ne veux pas se mettre dans ma page

photo ne veux pas se mettre dans ma page - PHP - Programmation

Marsh Posté le 09-09-2014 à 16:13:39    

Bonjours, je vien de vous voir j'ai un soucy avec mon code avatar, quand je met une photo il me dit votre avatar a été ajouté sucée  
mais il ne met pas dans mon profil ni ans le serveur et ni dans la base sql
et pour temps il mets  
 

Citation :

Warning: getimagesize(images.jpg): failed to open stream: No such file or directory in /var/www/legtux.org/users/monsite/modules/membre/function.inc.php on line 1776
Votre avatar � �t� chang� avec succ�es


 
là il met votre avatar été changé avec succée mais il se met pas dans ma page  
 
voilà le code :
 

Citation :

               <?php
                 
                /*AUTH(membre,false,true);*/
                 
                if(isset($_GET['mid']) && id2level($_SESSION['id'])==ADMIN && (!isset($_GET['admincp']) || $_GET['admincp']!=tokenAdmin()))
                 
                redirect('Vous n\'avez pas le droit d\'accéder ici', "/" );
                 
                else if(isset($_GET['mid']) && id2level($_SESSION['id'])==ADMIN && (isset($_GET['admincp']) || $_GET['admincp']==tokenAdmin())){
                 
                $getMid = intval($_GET['mid']);
                 
                }
                 
                echo '<a name="avtChangerCenter"></a>';
                 
                $mid = (!isset($getMid) ? $_SESSION['id'] : intval($getMid));
                 
                $mid = (empty($mid)) ? 0 : $mid;
                 
                $query = $pdo->prepare("SELECT * FROM forum_membres WHERE membre_id=?" );
                 
                $query->execute(array($mid));
                 
                if($query->rowCount() > 0){
                 
                if(isset($_POST['send'])){
                 
                $status = UpdateAvatarById($mid,'avatar');
                 
                if(array_key_exists("ERROR",$status)){
                 
                if($status["ERROR"] == null)
                 
                echo "Votre avatar à été changé avec succées";
                 
                else
                 
                echo "Une ou des erreur(s) s'est/se sont produite(s) : " . $status["ERROR"] . "<a href=\"".$_SERVER['REQUEST_URI']."?nocache=".rand(1000,95000)."#avtChangerCenter\">Retour au formulaire</a>";
                 
                }
                 
                }else{
                 
                echo '<form action="'.preg_replace("#\?nocache=([0-9]+)#","",$_SERVER['REQUEST_URI']).'#avtChangerCenter" method="post" enctype="multipart/form-data">
                 
                           
                <div class="cadre_avatar_change_photo">'. GetAvatarById($mid['membre_id'],"avatar_forum_index_topic avatar_membre" ) . '</div>';
                 
                ?>
                 
                 
                <?php
                 
                echo '<input type="file" name="avatar" />
                      <br /><br />
                      <label></label><input type="submit" name="send" value="Changer" />
                   </form>';
                   
                   }
                   
                   }else{
                   
                   //CODE 0x77 Membre not found
                   
                   redirect("Problème technique, code 0x" . ord("MDLMEMBRENOTFOUND" ));
                   
                   }
                   
                   ?>


 
et la fonction
 

Code :
  1. function UpdateAvatarById($mid,$IAvt='avatar'){
  2.  
  3.        global $pdo;
  4.  
  5.        
  6.  
  7.        if(isset($_FILES[$IAvt]) && !empty($_FILES[$IAvt]['name']))
  8.  
  9.                                {
  10.  
  11.                                        $avatarName = basename($_FILES[$IAvt]['name']);
  12.  
  13.                                        $target = "avatar/avatar_membres/" . $avatarName ;
  14.  
  15.                                
  16.  
  17.                                        $isImageValid = true;
  18.  
  19.                                        
  20.  
  21.                                        $avatarSize = getimagesize($_FILES[$IAvt]['name']);
  22.  
  23.                                        $extension_upload = strtolower(substr(  strrchr($_FILES['avatar']['name'], '.')  ,1));
  24.  
  25.                                
  26.  
  27.                                        $extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png', 'bmp' );
  28.  
  29.                                        $messageImage = '';
  30.  
  31.                                        
  32.  
  33.                                        if($avatarSize[0]>500 || $avatarSize[1]>500)
  34.  
  35.                                        {
  36.  
  37.                                                $isImageValid = false;
  38.  
  39.                                                $messageImage .= 'Votre image fait plus de 500 sur 500';
  40.  
  41.                                        }
  42.  
  43.                                        if(!in_array($extension_upload,$extensions_valides))
  44.  
  45.                                        {
  46.  
  47.                                                $isImageValid = false;
  48.  
  49.                                                $messageImage .= 'Votre extension d\'image n\'est pas acceptée, extentions valides : ';
  50.  
  51.                                                        foreach($extensions_valides as $v)
  52.  
  53.                                                                $messageImage .= $v . ' ';
  54.  
  55.                                        }
  56.  
  57.                                        if($isImageValid){
  58.  
  59.                                                $temp = $_FILES[$IAvt]['tmp_name'];
  60.  
  61.                                                
  62.  
  63.                                                        $query = $pdo->prepare("UPDATE forum_membres SET membre_avatar=? WHERE membre_id=?" );
  64.  
  65.                                                                $query->execute(array($temp,$mid));
  66.  
  67.                                                        if($query->rowCount() < 1)
  68.  
  69.                                                                return array("ERROR" => "Impossible de modifier l'avatar d'un membre introuvable, merci de contacter le support en specifiant le code d'erreur 0x" . ord("FUNC_UPD_AVT_ERROR_MEMBER404" ));
  70.  
  71.                                                        else{
  72.  
  73.                                                                move_uploaded_file($temp,$target);
  74.  
  75.                                                                return array("ERROR" => null);
  76.  
  77.                                                        }
  78.  
  79.                                        }else{
  80.  
  81.                                                return array("ERROR" => $messageImage);
  82.  
  83.                                        }
  84.  
  85.                                }else{
  86.  
  87.                                        return array("ERROR" => "Merci choisir une image avant d'envoyer le formulaire" );      
  88.  
  89.                                }
  90.  
  91. }


ligne de la notice
 
                                        $avatarSize = getimagesize($_FILES[$IAvt]['name']);
 
 
merci de vote aide

Reply

Marsh Posté le 09-09-2014 à 16:13:39   

Reply

Marsh Posté le 09-09-2014 à 16:55:45    

C'est quand même clair : la fonction getimagesize() n'a pas réussi à ouvrir le fichier mentionné ligne 1776 du script situé à /var/www/legtux.org/users/monsite/modules/membre/function.inc.php
 
Le fichier/répertoire en question est $_FILES[$IAvt]['name']. Effectivement, ça risque aps de marcher, car tu ne précsie pas le chemin d'accès complet, $_FILES[$IAvt]['name'] ne contenant que le nom du fichier. D'ailleurs, en faisant un print_r($_FILES), tu vas vite comprendre que tu ne peux pas traiter cette variable comme ça. Quand on upload un fichier, généralement, il va dans le répertoire /tmp/ du serveur (voir le php.ini pour savoir où les upload se font). Au passage, faut vérifier que le user que php utilise pour accéder aux système de fichier a bien les droits en écriture sur ce répertoire /tmp/.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 09-09-2014 à 17:23:23    

j'ai mis un print mais ca n'affiche une page blanche
 
et urll des avatars : avatar/avatar_membres/

Reply

Marsh Posté le 09-09-2014 à 17:32:50    

Sauf que lorsque tu fais l'upload, le fichier est stocké temporairement dans /tmp/ en général. A toi, dans ton script d'upload, de déplacer le fichier dans son répertoire définitif. Et j'ai pas l'impression que tu le fais, d'où ton pb :o


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 09-09-2014 à 17:40:00    

je te croit mais pk ds le code avatar/avatar_membres/" . $avatarName ;
 
donc bon dossier si c pas le bon

Reply

Marsh Posté le 09-09-2014 à 18:02:18    

Code :
  1. move_uploaded_file($temp,$target);


 
Le fichier est bien move vers la destination finale. Donc le problème est antécédent, probablement un mauvais paramétrage du fichier de stockage temporaire.

Reply

Marsh Posté le 09-09-2014 à 18:04:53    

merci, j'ai compris que mon dossier n'est pas bon mais vous avez pas une solution modifier ca par un autre code pour tester

Reply

Marsh Posté le 09-09-2014 à 20:53:05    

Commence par vérifier ton php.ini, ce doit être là dedans je pense.

Reply

Marsh Posté le 09-09-2014 à 22:07:18    

j'ai changer ligne 59
 
$temp = $_FILES[$IAvt]['tmp_name'];
 
par
 
$temp = $_FILES[$IAvt]['name'];
 
là je prends une photo donc il aparait bien sur tout les pages enfin pas tous je ne sais pas pour quoi
 
et j'ai choisit une autre photo juste pour tester il la mets pas juste une photo et pas d'autre  
 
et la ligne 13 j'ai mis
 
 echo '<div class="photo_upload">';
                                        $target = "avatar/avatar_membres/" . $avatarName ;
 
 
 echo '</div>';
 
afin de fixer une taile minimum mais ca ne fonctione pas
 
merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed