PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Forum Général PHP » Script d'upload de photo: modif » 05-07-2009 11:05:51

umo
Réponses : 1

Bonjour,

Je suis occupé de modificier un petit script, celui-ci contient un code php pour uploader des photos JPG, PNG, GIF, j'aurai voulu modifier ce script légèrement pour pouvoir uploader aussi des fichiers. rar, le problème c'est que je comprend pas certaines choses, merci de m'aider! J'ai déjà regarder certains tutoriaux pour l'upload bien entendu, mais c'est ce code que j'aimerai adapter pour avoir un code identique dans tout le site web, merci ...

Cette fonction est faite pour l'envoi d'image et très sécurisée graçe à la fonction getimagesize car c'est uniquement des images qui peuvent être uploadées, mais si je voudrai mettre des fichiers .rar comment pourrais je faire?

J'ai lu ce tutorial très intéressant aussi: http://www.vulgarisation-informatique.c … ad-php.php

Formulaire pour ajouter un fichier photo
[c]<tr>
                                <td nowrap="nowrap" bgcolor="#dadada">Photo  1 :</td>
                                <td bgcolor="#e9e9e9"><input name="photo1" type="text" id="photo1" size="30" value="<?php echo $data_annonce['photo']; ?>" />
                                  <a href="#null" onclick="OpenCenterPopUp('upload.php?champ=photo1')"><img src="images/disque-dur.jpg" alt="upload" width="21" height="21" border="0" align="middle" style="vertical-align:middle" /></a> <?php echo $language['info_add_photo']; ?></td>
                              </tr>[/c]


Source de upload.php

[c]if(isset($_POST['upload_photo']))
    {
       
    //-- On lance l'upload de la photo
   
    $resultat = $petite_annonces -> upload_photo($_FILES['fichier']['name'],$_FILES['fichier']['size'],$_FILES['fichier']['tmp_name'],"../");
       
    //-- Preparation des variables
   
    $nom_fichier     = $resultat['image_reel'];
    $url_reel         = $resultat['image_reel'];
    $poids             = $resultat['poids'];
    $resolution        = $resultat['resolution'];
    $resultat        = $resultat['resultat'];
   
    //-- Traitement du résultat
   
    if($resultat=="succes")
        {
        header("location:upload.php?fichier=".urlencode($url_reel)."&champ=".$_POST['champ']."&MoveUrlFile=1&msg=1");
        }
    else
        {
        header("location:upload.php?error=1&champ=".$_POST['champ']."");
        }
   
    }

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Uploader une photo</title>
<script>
<?php if(isset($_GET['MoveUrlFile'])) { ?>

function MoveUrlFile()
    {
   
    window.opener.document.getElementById('<?php echo $_GET['champ']; ?>').value='<?php echo urldecode($_GET['fichier']); ?>';
   
    //window.close();

    }
   
<?php } ?>

//--

function GoUpload()
    {
    document.getElementById('load').style.display='block';
    }

</script>
<style>
body {
    font-family:Arial, Helvetica, sans-serif;
    font-size:12px;
    color:#000;
    margin:0px;
    padding:0px
}
h1 {
    font-size:16px;
    font-weight:bold
}
a {
    color:#F60;
    text-decoration:none
}
</style>
</head>
<?php if(isset($_GET['MoveUrlFile'])) echo '<body onload="MoveUrlFile()">'; else echo '<body>'; ?>

<div id="load" style="height:344px; background-color:#FFF; display:none; position:absolute; width:396px; text-align:center">
  <p><strong>Veuillez patienter, chargement en cours.</strong></p>
  <p><img src="images/progressbar10.gif" width="200" height="10" /></p>
  <p>Cela peut prendre plusieurs minutes</p>
  <p><img src="images/floppy_disk_48.png" width="48" height="48" /></p>
</div>
<div style="background-image:url(images/fenetre-upload-script-petite-annonces_03.jpg); width:396px; height:344px; top:0px">
  <div style="padding-left:20px; padding-top:50px; padding-right:10px;">
    <?php

if(isset($_GET['msg']))
{
echo '<p align="center"><img src="images/accepted_48.png" width="48" height="48" alt="ok" /></p>
<p align="center">La photo a bien été ajoutée</p>
<p align="center">[ <a href="javascript:window.close();">Fermer la page</a> ]';
}
else if(isset($_GET['error']))
{
echo '<p align="center"><img src="images/cancel_48.png" width="48" height="48" alt="ok" /></p>
<p align="center">Erreur lors de l\'enregistrement de la photo</p>
<p align="center">[ <a href="javascript:window.close();">Fermer la page</a> ]';
}
else
{

?>
    <p>Format de photo acceptés : JPG, PNG, GIF (MAX 2Mo)</p>
    <form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
      <input type="hidden" name="upload_photo" value="1" />
      <input type="hidden" name="champ" value="<?php echo $_GET['champ']; ?>" />
      <table border="0" cellspacing="0" cellpadding="3">
        <tr>
          <td><input name="fichier" type="file" id="fichier" size="25" /></td>
          <td><input type="submit" name="button" id="button" value="Envoyer" onclick="GoUpload()" /></td>
        </tr>
      </table>
    </form>
    <p>Sélectionnez le fichier sur votre ordinateur, l'envoi peut prendre plusieurs minutes.</p>
    <?php } ?>
  </div>
</div>
</body>
</html>[/c]



Fonction upload

[c]function upload_photo($fichier_name,$fichier_size,$fichier_tmp_name,$destination)
    {
   
    //-- Generation du de l'avatar
       
    $nom_fichier = time();
   
    //-- Definition des variables
   
    $target             = $destination.'upload/';  // Repertoire cible
    $nom_file              = strtolower($fichier_name);
    $taille             = $fichier_size;
    $tmp                = $fichier_tmp_name;
    $max_size            = 5000;
    $width_max            = 100;
    $height_max            = 100;
   
    //-- Verification du poids de l'image
   
    if($taille>=2097100)
        {
       
        //-- On retourn les parametres
       
        return array(
                    "resultat"             => "false",
                    "message"             => "La photos est trop lourde",
                    );
                   
        }
   
    //-- Preparation des variables

    $nom_du_fichier      = $nom_fichier.".".strtolower(substr($nom_file, -3));
    $image_reel          = "photo-".$nom_fichier.".".strtolower(substr($nom_file, -3));

    //-- Upload de l'image
   
    if(move_uploaded_file($tmp,$target.$nom_file))
        {
        $this->miniature($target.$nom_file,800,600,$target.$image_reel,75);
        }
    else
        {
       
        //-- On retourn les parametres
        
        return array(
                    "resultat"             => "false",
                    );
                   
        }
   
    // On récupère les dimensions du fichier
   
    list($width_orig, $height_orig, $type) = getimagesize($target.$image_reel);

    //-- Calcule du poids du fichier

    $poids_photo = filesize($target.$image_reel);

    //-- Suppression de l'image temporaire
   
    unlink($target.$nom_file);
   
    //-- On retourn les parametres
   
    return array(
                "message"             => "La photo a bien été enregistrée",
                "fichier"             => $image_reel,
                "image_reel"         => $image_reel,
                "poids"             => $poids_photo,
                "resolution"         => $width_orig."x".$height_orig,
                "resultat"             => "succes",
                );
    }

//-- Fonction : Deconnexion d'une annonce[/c]


Fonction miniature, plus utile ici dans mon cas:

[c]function miniature($image,$width,$height,$rep,$qualite)
    {
   
    //-- On augmente la memoire de php
   
    ini_set("memory_limit","50M");
   
    // Cacul des nouvelles dimensions
   
    list($width_orig, $height_orig, $type) = getimagesize($image);
   
    //-- On calcule les proportio,
   
    if($width_orig > $width or  $height_orig > $height)
        {
       
        $ratio_orig = $width_orig/$height_orig;
       
        if ($width/$height > $ratio_orig)
            {
            $width = $height*$ratio_orig;
            $lance_resize = 1;
            }
        else
            {
            $height = $width/$ratio_orig;
            $lance_resize = 1;
            }
       
        }
    else
        {
        $lance_resize = 0;
        $width  = $width_orig;
        $height = $height_orig;
        }
   
    // Redimensionnement
   
    $image_p = imagecreatetruecolor($width, $height);
   
    //-- Type 1 : GIF
   
    if($type == "1")
        {

        copy($image,$rep);
       
        }
   
    //-- Type 2 : JPG
   
    if($type == "2")
        {
       
        //-- Creation d'une image jpeg
       
        $image  = imagecreatefromjpeg($image);
   
        //-- On copy la nouvelle image
       
        imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
   
        //-- Enregistrement de la miniature
       
        imagejpeg($image_p, $rep, $qualite);
        }
   
    //-- Type 3 : PNG
   
    if($type == "3")
        {
       
        if($lance_resize==1)
            {
            $image = imagecreatefrompng($image);
   
            $transparent = imageColorAllocate($image_p, 0, 0, 0);
            $red = imageColorAllocate($image_p, 255, 50, 50);
            imageColorTransparent($image_p, $transparent);
            imageFilledRectangle($image_p, 0, 0, 640-1, 100-1, $transparent);
       
            imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
            }
       
        //--
       
        if($lance_resize==1)
            {
            imagepng($image_p, $rep,0);
            }
        else
            {
            copy($image,$rep);
            }
           
        }

    //--
   
    return true;
    }


//-- Enregistrement de la photo sur le serveur[/c]

#2 Re : Forum Général PHP » Les différentes pages du sites » 25-06-2009 15:17:02

umo

Ce code ici j'ai assez du mal à comprendre, je le trouve pas très clair,
je voudrai par exemple ajouter une page en + pour une autre fonction au niveau des annonces

if(empty($_GET['id_categorie']) and empty($_GET['details'])) => Vérifie si catégorie vide et si pas de détail des annoncs
echo $petite_annonces -> display_liste_categorie();              => Affiche fonction de la liste des catégories
else if(isset($_GET['view_list']))                                           => Sinon si view liste est utilisée
echo $petite_annonces -> display_liste_petites_annonces("ALL"); => Il affiche cette fonction
else
echo $petite_annonces -> display_details_annonce(); Sinon pour celle ci, je comprend pas bien


merci d'avance

#3 Forum Général PHP » Les différentes pages du sites » 25-06-2009 15:17:02

umo
Réponses : 2

Bonjour, très bonne idée ce nouveau forum! wink

Je suis occupé de modifier un peu un script que j'ai acheté mais j'arrive pas à faire un truc,

Voila la démo:
http://www.service-webmaster.fr/scripts … /index.php

Au niveaux des différentes pages, voila les codes qui gèrent cela:

Partie 1
[c]
if(isset($_GET['view_list']))
    {
    $InfoCategorie     = $petite_annonces -> Get_Name_Categorie($_GET['id_categorie']);
    $titre_page        = TITRE_MODULE." - ".$InfoCategorie['name'];
    }
else if(isset($_GET['details']))
    {
    $InfoAnnonce     = $petite_annonces -> Get_Name_Annonce($_GET['id_annonce']);
    $titre_page        = TITRE_MODULE." - ".$InfoAnnonce['name'];
    }
else
    {
    $titre_page        = TITRE_MODULE;
    }
[/c]

Partie 2
[c]//-- Affichage des differentes pages

if(empty($_GET['id_categorie']) and empty($_GET['details']))
echo $petite_annonces -> display_liste_categorie();
else if(isset($_GET['view_list']))
echo $petite_annonces -> display_liste_petites_annonces("ALL");
else
echo $petite_annonces -> display_details_annonce();[/c]

J'ai fait la fonction  display_details_annonce_commentaires, qui gère les commentaires  mais le problème, c'est que j'ai toujours des erreurs, je comprend pas très bien le code au dessus!

Par exemple j'aimerai que ca apparaisse en mettant ceci:
http://www.service-webmaster.fr/scripts … annonce=25&commentaires

Merci d'avance!

Pied de page des forums

Propulsé par FluxBB