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 :

script envois d'image


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien chez Free
    Inscrit en
    Septembre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien chez Free
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2011
    Messages : 65
    Points : 40
    Points
    40
    Par défaut script envois d'image
    Bonjour à tous !

    Je viens vers vous car j'ai un petit probléme que je n'arrive pas a régler en php/html.

    J'ai un script php qu'un ami ma donne, mais je n'arrive pas le faire fonctionner.

    voicis le script dans ma page php configurer pour mon utilisation

    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
     
    <?php
     
    //actavation de la session + connexion sql
    session_start();
    include('../fonction/config.php');
    connect_sql();
     
     
    //RECUPERATION DES id_user et création du nom du fichier final $time_$jour*$mois*$annee*$annee+$id_user.jpg
    $id_user = $_SESSION['id'];
    $time = time();
    $jour = date("d"); 
    $mois = date("m");  
    $annee = date("Y");
    $jourmoisanne = $jour*$mois*$annee*$annee+$id_user;
     
    $name_fichier_de_sortie = $time.'_'.$jourmoisanne;
     
     
     
    //fonction d'upload
    function cImage($max,$source,$dest){
    $size = getimagesize($source);
    $w = $size[0];
    $h = $size[1];
    $simg = imagecreatefromjpeg($source);
    $dimg = imagecreatetruecolor($max,$max);
    $wm = $w/$max;
    $hm = $h/$max;
    $h_height = $max/2;
    $w_height = $max/2;
    if($w > $h){
    $adjusted_width = $w / $hm;
    $half_width = $adjusted_width / 2;
    $int_width = $half_width - $w_height;
    imagecopyresampled($dimg,$simg,-$int_width,0,0,0,$adjusted_width,$max,$w,$h);
    }elseif(($w < $h) || ($w == $h)){
    $adjusted_height = $h / $wm;
    $half_height = $adjusted_height / 3;
    $int_height = $half_height - $h_height;
    if($int_height < 0) $int_height = 0;
    imagecopyresampled($dimg,$simg,0,-$int_height,0,0,$max,$adjusted_height,$w,$h);
    }else{
    imagecopyresampled($dimg,$simg,0,0,0,0,$max,$max,$w,$h);
    }
    imagejpeg($dimg,$dest,100);
    }
     
     
     
     
    //on effectue le script
    if(cImage(50,$_FILES['fichier']['name'],'../img/photo/50/'.$name_fichier_de_sortie.'.jpg'))
    {
      header('location: ../ok'); 
    }
    else 
    {
    // Sinon on affiche une erreur système
    header('location: ../erreur'); }
    ?>
    Mon soucis c'est que la fonction ne marche pas.

    L'image est bien crée avec imagejpg, l'image vas bien dans le repertoire demander avec son nom, mais l'image est noir. Enfaite le script ne trouve pas l'image envoyé.

    Pouvez vous m'aider SVP ?

    Merci a vous

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2004
    Messages : 108
    Points : 175
    Points
    175
    Par défaut
    Bonjour,

    Je pense que ton problème vient que tu ne pointe jamais le fichier présent sur le serveur justement .
    En effet dans ton appel tu utilises $_FILES['fichier']['name'] sauf que quand tu upload un fichier via un formulaire, php va lui donner un nom temporaire. Ce que tu as mis représente le nom du fichier tel qu'il est affiché sur le pc de l'utilisateur (image.jpg par exemple).
    Pour récupérer le fichier sur le serveur il faut te servir de $_FILES['fichier']['tmp_name'] qui représente le chemin du fichier temporaire créé par php.

  3. #3
    Membre du Club
    Homme Profil pro
    Technicien chez Free
    Inscrit en
    Septembre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien chez Free
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2011
    Messages : 65
    Points : 40
    Points
    40
    Par défaut
    donc il faut que je met un nom temporaire.

    mon form c'est ca :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form method="post" action="setting_fonction/avatar_change.php" enctype="multipart/form-data">
              <input type="file">    <br><br>
              <span class="input-bleu2"><input class="big button-bleu2" type="submit" value="Envoyer"></span>
    </form>

    il faudrais que je mette un nom comme ca au fichier :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="file" name="le_nom">

    et ensuite dans mon code exe php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(cImage(50,$_FILES['fichier']['le_nom'],'../img/photo/50/'.$name_fichier_de_sortie.'.jpg'))
    ca pourrais marché ca ?

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2004
    Messages : 108
    Points : 175
    Points
    175
    Par défaut
    Ah euh nan nan, c'est vrai que je suis peut être pas très compréhensible xD.
    Reprenons depuis le début :
    Dans ton formulaire tu as :
    <input type="file" name="le_nom"> donc premièrement le "name" est obligatoire en effet sinon le fichier ne passera pas . Donc tu lui as mis comme valeur "le_nom" mais ceci est le nom de ton champs. C'est grâce à lui que tu va cibler les données dans php. Tu vas le retrouver comme cela $_FILES['le_nom'].

    Ensuite php créé une structure qui est comme suit (je te donne juste ce qui t'es nécessaire) :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $_FILES['le_nom']['name'] // Le nom du fichier présent sur ton pc 
    $_FILES['le_nom']['tmp_name'] // Le nom du fichier présent sur ton serveur avant toute opération de ta part

    Pour le reste tu peux aller voir ici Php.net => upload via post.

    Bien donc dans ton code actuel remplace juste $_FILES['fichier']['le_nom'] par $_FILES['le_nom']['tmp_name']. Comme je l'ai dit précédemment le fichier existe sur le serveur en tant que "tmp_name", "name" n'est donné qu'à titre d'information pour pouvoir, si besoin est, renommer le fichier temporaire par la suite .

  5. #5
    Membre du Club
    Homme Profil pro
    Technicien chez Free
    Inscrit en
    Septembre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien chez Free
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2011
    Messages : 65
    Points : 40
    Points
    40
    Par défaut
    d'accord donc sur le code je met ca maintenant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(cImage(50,$_FILES['le_nom']['tmp_name'],'../img/photo/50/'.$name_fichier_de_sortie.'.jpg'))
    avec ce code j'ai une grosse erreur.

    si je comprends bien, il arrive pas aouvrir le fichier en tmp

    Warning: getimagesize(): open_basedir restriction in effect. File(/tmp/phpgM11GA) is not within the allowed path(s):
    (/hosting/monbahu.com/ssdomain/setting/web/:/hosting/SHARED/:/hosting/monbahu.com/web/) in /hosting/monbahu.com/web/setting/setting_fonction/avatar_change.php on line 21

    Warning: getimagesize(/tmp/phpgM11GA): failed to open stream: Operation not permitted in /hosting/monbahu.com/web/setting/setting_fonction/avatar_change.php on line 21
    Warning: imagecreatefromjpeg(): open_basedir restriction in effect. File(/tmp/phpgM11GA) is not within the allowed path(s): (/hosting/monbahu.com/ssdomain/setting/web/:/hosting/SHARED/:/hosting/monbahu.com/web/) in /hosting/monbahu.com/web/setting/setting_fonction/avatar_change.php on line 24
    Warning: imagecreatefromjpeg(/tmp/phpgM11GA): failed to open stream: Operation not permitted in /hosting/monbahu.com/web/setting/setting_fonction/avatar_change.php on line 24
    Warning: Division by zero in /hosting/monbahu.com/web/setting/setting_fonction/avatar_change.php on line 36
    Warning: imagecopyresampled() expects parameter 2 to be resource, boolean given in /hosting/monbahu.com/web/setting/setting_fonction/avatar_change.php on line 40

  6. #6
    Membre du Club
    Homme Profil pro
    Technicien chez Free
    Inscrit en
    Septembre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien chez Free
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2011
    Messages : 65
    Points : 40
    Points
    40
    Par défaut
    Je sais pas si ca peux influé quelque chose, mais j'exucute mon form sur un sous domaine et le traite dans un dossier de sous domaine

    form :
    http://setting.monbahu.com/

    traitement :

    http://setting.monbahu.com/setting_f...tar_change.php

  7. #7
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2004
    Messages : 108
    Points : 175
    Points
    175
    Par défaut
    Oui en gros il nous dit que php n'a pas l'autorisation d'accéder au dossier "/tmp/". As tu la possibilité de modifier le php.ini ?
    Si c'est possible recherche
    open_basedir =
    et ajoute
    :/tmp/
    à la fin de la valeur déjà présente .

    Edit : Hmmm si c'est un sous-domaine il est possible que la restriction soit directement dans le fichier httpd.conf mais regarde déjà dans php.ini

  8. #8
    Membre du Club
    Homme Profil pro
    Technicien chez Free
    Inscrit en
    Septembre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien chez Free
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2011
    Messages : 65
    Points : 40
    Points
    40
    Par défaut
    Le serveur est gerer par un ami, et j'ai pas acces au fichier .ini

    mais il m'as dit que j'avais acces a temp

  9. #9
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2004
    Messages : 108
    Points : 175
    Points
    175
    Par défaut
    Et bien non tu n'as pas accès à tmp, le message est clair. Tu as accès à :

    /hosting/monbahu.com/ssdomain/setting/web/
    /hosting/SHARED/
    /hosting/monbahu.com/web/

  10. #10
    Membre du Club
    Homme Profil pro
    Technicien chez Free
    Inscrit en
    Septembre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien chez Free
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2011
    Messages : 65
    Points : 40
    Points
    40
    Par défaut
    ok, ba je verais ca avec lui ce soir alors ^^

    Merci =)

  11. #11
    Membre du Club
    Homme Profil pro
    Technicien chez Free
    Inscrit en
    Septembre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien chez Free
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2011
    Messages : 65
    Points : 40
    Points
    40
    Par défaut
    re bonjour a tous

    alors lacces a tmp est maintenant ok.

    J'aile script ne marche toujorus pas :

    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
    function cImage($max,$source,$dest){
    $size = getimagesize($source);
    $w = $size[0];
    $h = $size[1];
    $simg = imagecreatefromjpeg($source);
    $dimg = imagecreatetruecolor($max,$max);
    $wm = $w/$max;
    $hm = $h/$max;
    $h_height = $max/2;
    $w_height = $max/2;
    if($w > $h){
    $adjusted_width = $w / $hm;
    $half_width = $adjusted_width / 2;
    $int_width = $half_width - $w_height;
    imagecopyresampled($dimg,$simg,-$int_width,0,0,0,$adjusted_width,$max,$w,$h);
    }elseif(($w < $h) || ($w == $h)){
    $adjusted_height = $h / $wm;
    $half_height = $adjusted_height / 3;
    $int_height = $half_height - $h_height;
    if($int_height < 0) $int_height = 0;
    imagecopyresampled($dimg,$simg,0,-$int_height,0,0,$max,$adjusted_height,$w,$h);
    }
    else{
    imagecopyresampled($dimg,$simg,0,0,0,0,$max,$max,$w,$h);
    }
    imagejpeg($dimg,$dest,100);
    }
     
    cImage(50,$_FILES['le_nom']['tmp_name'],'../img/photo/50/'.$name_fichier_de_sortie.'.jpg')
    vous avez des possibilités ??

    merci

  12. #12
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2004
    Messages : 108
    Points : 175
    Points
    175
    Par défaut
    Bonjour,

    C'est bien une image jpeg que tu essayes d'ajouter ?

  13. #13
    Membre du Club
    Homme Profil pro
    Technicien chez Free
    Inscrit en
    Septembre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien chez Free
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2011
    Messages : 65
    Points : 40
    Points
    40
    Par défaut
    oui bien sur

  14. #14
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2004
    Messages : 108
    Points : 175
    Points
    175
    Par défaut
    La fonction est sensé faire quoi en gros ? . Il faudrait tester les différents fonctions d'image je pense, pour voir si il n'y aurait pas un petit false qui se cache .

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/01/2009, 17h11
  2. [MySQL] Envoi d'images par formulaire et post-traitement
    Par mathieu7497 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 08/04/2006, 14h58
  3. [MySQL] Envoi d'image ds ma base ?
    Par arti2004 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 26/02/2006, 19h51
  4. script envoi mail et fax avec CDO
    Par RobinNono dans le forum ASP
    Réponses: 1
    Dernier message: 03/10/2005, 16h36
  5. [Forum][Script] Envoi pièce jointe
    Par valentin73 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 9
    Dernier message: 05/09/2005, 12h55

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