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

Contribuez / Téléchargez Sources et Outils PHP Discussion :

Classe d'Upload et Redimensionnement


Sujet :

Contribuez / Téléchargez Sources et Outils PHP

  1. #21
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    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 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Bonjour,

    La classe de téléchargement à été mise à jour, version 2.7

    1/ Deux nouvelles fonctions :

    - Set_Message_champVide ()
    - Set_Max_poidsFicher ()

    Set_Message_champVide () permet de retourner un message si aucun fichier n'a été proposé au téléchargement ou si un champ particulier de téléchargement à été laissé vide (accepte une chaine de caractère ou un tableau).

    Set_Max_poidsFicher () permet de limiter le poids maximum des fichiers téléchargés. C'est une alternative plus sécurisée par rapport à l'utilisation d'un champ "MAX_FILE_SIZE" ..." placé dans le formulaire. Cette fonction accepte des octets ou un nombre suivi des unités de poids standard par exemple Set_Max_poidsFicher ('2,5 Mo')

    Ces deux fonctions sont documentées dans le (nouveau) mode d'emploi.


    2/ Correction d'un bug induit dans la version 2.6 qui retournait un tableau de résultats erroné en cas de téléchargement d'un fichier dont le nom comprenait un espace vide (ce bug n'avait pas d'incidence sur les autres fonctionnalités).


    3/ Optimisation des équivalents des paramètres optionnels true/false pour une utilisation plus conviviale des fonctions (précédemment '0' = true)
    '0' = 0 = false = '' = ' ' = null
    '1' = 1 = true = 'toto'


    4/ Nettoyage de printemps et simplification de quelques "lourdeurs" dans le code dues à la compatibilité 5.1.
    Le temps passe ... la fonction n'est maintenant compatible qu'à partir de php >= 5.2

    Mode d'emploi et code ici

    EDIT : quelques petits pb sur le forum font que le lien de téléchargement renvoie pour l'instant un fichier vide Je fais le nécessaire pour trouver une solution.

  2. #22
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    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 380
    Points : 10 410
    Points
    10 410
    Par défaut
    le disfonctionnement des téléchargements est réparé, le fichier source est maintenant hébergé sur ce lien.

    J'en profite pour :

    - corriger un petit bug qui pouvait se produire avec les renommages incrémentiels pour des fichiers source sans extension (cas rares puisque habituellement on filtre les fichiers autorisés suivant leurs extensions).
    - ajout de la préservation de la transparence pour les png avec transparence lors les redimensionnements.

    Classe maintenant en version 2.8.

  3. #23
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    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 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Rectificatif : concerne uniquement le code donné en exemple dans ce message

    Citation Envoyé par bibi67290 Voir le message
    @ABCIWEB

    Merci beaucoup super !

    Juste un point c normal que les images portrait télécharger ce mette en paysage ?
    Citation Envoyé par ABCIWEB Voir le message
    J'ai testé le code que j'ai donné dans le message précédent et tout se passe normalement : les photos paysage s'affichent horizontalement et les photos portraits s'affichent verticalement, elles sont conformes à ce qu'elles affichent initialement dans l'explorateur de fichiers. L'origine de ton pb ne vient pas du code, il est autre part.
    Bah non y'avait bien une erreur mais je ne pouvais pas la voir avec mon test car dans mon exemple la largeur maximale était égale à la hauteur maximale pour l'affichage des vignettes. Mais effectivement j'avais inversé l'ordre des deux paramètres dans l'appel de la fonction dimimage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $dim_vignette = dimimage($img_size, $max_hauteur, $max_largeur);
    à remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $dim_vignette = dimimage($img_size, $max_largeur, $max_hauteur);

  4. #24
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    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 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Version 2.9 en ligne

    3 nouvelles fonctions :

    - Set_Max_nombreFichers() contrôle le nombre maximum de fichiers (pour un téléchargement multiple).

    - Dim_Prop_max() retourne des dimensions proportionnelles maximales (équivalent de la fonction dimimage() utilisée dans le code de ce message).

    - Return_Config_serveur() retourne la configuration du serveur utile à l'upload/redimensionnement.


    Des améliorations :

    - Les messages d'erreurs post_max_size, upload_max_filesize et max_file_uploads renvoient maintenant le maximum possible en complément.

    - Le tableau des extensions autorisées est formaté en minuscule (il fallait auparavant implicitement le fournir en minuscules).

    Le mode d'emploi a été mis à jour et possède maintenant des exemples complets, dont celui-ci qui représente un formulaire d'inscription avec champ d'upload, redimensionnement de la photo téléchargée, persistance des champs texte en cas d'erreur, affichage de la vignette correspondant à la photo téléchargée et gestion complète des erreurs.

    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
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    <?php 
    header('Content-type: text/html; charset=UTF-8');
    require('Classe_Upload.php');
     
    /* Doit être un fichier valide dans $dossier_destination si vous voulez qu'il s'affiche pour le test */
    $avatar_par_defaut = 'avatar_par_defaut.jpg';
     
    /* Initialisation de la classe en dehors de toute condition $_POST (et $_FILES) */
    $dossier_destination = 'AVATARS';
    $up = new Telechargement($dossier_destination,'form1','photo');
     
    /* paramétrage extensions autorisées */
    $extensions = array('jpg','jpeg'); 
    $up->Set_Extensions_accepte ($extensions);
     
    /* redimensionnement en maximum 200x200 (si nécessaire) */
    $up->Set_Redim (200,200);
     
    /* On défini le séparateur de dimension. Permet d'avoir un code générique pour trouver les dimensions des images dans le tableau des résultats */
    $separateur_dimensions = 'x';
    $up->Set_Separateur_dimImg($separateur_dimensions);
     
    /* Utilisée sans argument cette fonction permet de n'afficher que les messages d'erreurs d'upload */
    $up->Set_Message_court();
     
    /* !******! Si on souhaite que l'upload d'un fichier soit obligatoire il suffira de décommenter la ligne ci-dessous (dans notre contexte) */
    /*$up->Set_Message_champVide('Champ de téléchargement vide. Un fichier est requis !'); */
     
    /* Note*: il faudrait compléter la configuration de la classe avec Set_Renomme_fichier() ou Set_Controle_fichier() si vous souhaitez éviter l'écrasement de fichiers déjà existants sur le serveur. */
     
    /* Petite fonction pratique dans notre contexte pour exploiter le tableau des résultats de l'upload */
    function Result_upload($upload_result,$dossier_destination, $index, $num = 0)
    {
    	return isset($upload_result['resultat'][$num][$dossier_destination][$index])? $upload_result['resultat'][$num][$dossier_destination][$index] : null;
    }
     
    /* Condition $_POST si le formulaire est envoyé */
    if (isset($_POST['form1']))
    {
    	$_SESSION['form1_inscr'] = null;
    	/* Enregistrement des résultats en session pour la persistance des données après reload de la page */
    	$tab_ses =& $_SESSION['form1_inscr'];
     
    	$erreur_texte = array();
     
    	$pseudo = $tab_ses['pseudo'] = trim($_POST['pseudo']);
    	if ($pseudo == '') $erreur_texte[] = 'le pseudo doit être renseigné';/* il faudrait compléter le contrôle...*/
     
    	$mail = $tab_ses['mail'] = trim($_POST['mail']);
    	if ($mail == '') $erreur_texte[] = 'le mail doit être renseigné';/* il faudrait compléter le contrôle avec filter_validate_email pour tester le mail */
     
    	$tab_ses['erreur_texte'] = $erreur_texte;
     
    	if(count($erreur_texte) == 0)
    	{
    		$up->Upload();
    		/* Tableau de résultat de l'upload (enregistré en session pour afficher la vignette d'upload) */
    		$upload_result = $tab_ses['upload_result'] = $up->Get_Tab_upload();
     
    		/* Tableau des messages d'information de l'upload = messages d'erreur puisque Set_Message_court est utilisé sans paramètre */
    		$erreur_upload = $tab_ses['erreur_upload'] = $up->Get_Tab_message();
     
    		if(count($erreur_upload) == 0)/* si pas d'erreur d'upload */
    		{
    			/* nom final du fichier d'upload après éventuelle correction automatique (à enregistrer en bdd). */
    			$nom_final_fichier = Result_upload($upload_result,$dossier_destination,'nom');
    			/* Si pas de fichier on met l'avatar */
    			$nom_final_fichier = isset($nom_final_fichier) ? $nom_final_fichier : $avatar_par_defaut; 
     
    			/* ici l'insertion de $pseudo, $mail et $nom_final_fichier en bdd ...  */
    			/*... */
     
    			/* Confirmation d'enregistrement */
    			$tab_ses['succes'] = true; 
    		}
    	} 
    	$up->Get_Reload_page();
    }
     
    /* On récupère les variables de session */
    $tab_ses = isset($_SESSION['form1_inscr'])? $_SESSION['form1_inscr'] : null;
    unset($_SESSION['form1_inscr']);
     
    /* Si erreur "post_max_size" du serveur lors d'un téléchargement, on ne passe pas dans la condition post car $_POST est vide. On récupère donc cette erreur ici avec  $up->Get_Tab_message(); */
    $erreur_post_max_size = $up->Get_Tab_message();
    $erreur_upload = isset($tab_ses['erreur_upload']) ? $tab_ses['erreur_upload'] : $erreur_post_max_size;
     
    /* Récupération des messages d'erreur des champs textes */
    $erreur_texte = isset($tab_ses['erreur_texte'])? $tab_ses['erreur_texte']:array();
     
    /* Récupération de la confirmation de l'enregistrement du formulaire */
    $succes = isset($tab_ses['succes'])? $tab_ses['succes'] : false;
     
    /* Pour la persistance des données du formulaire si erreur dans les champs ou erreur d'upload (si $succes = false) */
    $pseudo = isset($tab_ses['pseudo']) && !$succes ? htmlspecialchars($tab_ses['pseudo']) : null;
    $mail = isset($tab_ses['mail']) && !$succes ? htmlspecialchars($tab_ses['mail']) : null;
     
    /* ECRITURE DES MESSGES D'INFORMATION en php pour avoir un HTML propre */
    $message_titre = !empty($erreur_upload)? 'Un problème est survenu lors du téléchargement du fichier' : null;
    $message_titre = !empty($erreur_texte)? 'Erreur dans les champs du formulaire' : $message_titre;
    /* Titre de message affiché */
    $message_titre = $succes ? 'Formulaire enregistré !' : $message_titre;
     
    $message = null;
    if (isset($message_titre)) $message .= '<p class="message_titre">'.htmlspecialchars($message_titre).'</p>'."\n";
     
    foreach ($erreur_texte as $value) $message .= '<p>- '.htmlspecialchars($value).'</p>'."\n";
     
    foreach ($erreur_upload as $num) foreach ($num as $value) $message .= '<p>- '.htmlspecialchars($value).'</p>'."\n";
     
    $upload_result = isset($tab_ses['upload_result']) ? $tab_ses['upload_result'] : array();
    /* nom du fichier original (ou par défaut) pour écriture du message */
    $avatar = Result_upload($upload_result,$dossier_destination,'nom_ini');
    $avatar = isset($avatar) ? $avatar : $avatar_par_defaut;
     
    if($succes) $message .= '<p>Pseudo "'.htmlspecialchars($tab_ses['pseudo']).'", mail "'.htmlspecialchars($tab_ses['mail']).'", avatar "'.htmlspecialchars($avatar).'"</p>'."\n";
     
    /* Code pour afficher la photo téléchargée ou l'avatar par défaut */
    $vignette_html = null;
     
    /* Pour permettre l'affichage aussi bien en local que sur un serveur distant */
    $http = !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https://' :  'http://';			
    $adresse_serveur = $http.$_SERVER['SERVER_NAME'].'/';
     
    $nom_final_fichier = Result_upload($upload_result,$dossier_destination,'nom');
    $dimensions = Result_upload($upload_result,$dossier_destination,'dim');
     
    if (isset($nom_final_fichier,$dimensions))
    {	
    	$largeur_max = 150; /* largeur maximum de la vignette affichée */
    	$hauteur_max = 100; /* hauteur maximum de la vignette affichée */
     
    	$img_size = explode($separateur_dimensions,$dimensions);
    	/* on utilise la fonction "Dim_Prop_max" pour limiter la taille d'affichage de la vignette */
    	$dim_vignette = $up->Dim_Prop_max($img_size[0],$img_size[1],$largeur_max,$hauteur_max);
     
    	$adresse_html = $adresse_serveur.$dossier_destination.'/'.$nom_final_fichier;
     
    	$vignette_html .= '<img alt="'.htmlspecialchars($nom_final_fichier).'" src="'.$adresse_html.'" width="'.$dim_vignette[0].'" height="'.$dim_vignette[1].'" />';
    }
    /* Pour afficher l'avatar par défaut (sans redimensionnement) */
    else if($succes && empty($erreur_upload) && is_file($_SERVER['DOCUMENT_ROOT'].'/'.$dossier_destination.'/'.$avatar_par_defaut))
    { 
    	$adresse_avatar = $adresse_serveur.$dossier_destination.'/'.$avatar_par_defaut;	
    	$vignette_html .= '<img alt="'.$avatar_par_defaut.'" src="'.$adresse_avatar.'" />';
    }
    ?>
    <!doctype html>
    <html lang="fr">
    <head>
    <meta charset="UTF-8" />
    <title>Formulaire avec upload de fichiers, affichage des résultats/erreurs et vignette d'upload</title>
    <style type="text/css">
    body {font-family:Arial, Helvetica, sans-serif; font-size:12px;}
    #form1 form{width:370px; left:20px; border:1px solid black; padding:0 20px 20px 20px; background-color:#F4F4F4;}
    #form1 p {margin:0; padding:20px 0 0 0;}
    #form1 p label{display:inline-block;width:60px;text-align:right;}
    #form1 p input{margin-left:15px;}
    #form1 #photo{width:270px;}
    #form1 #pseudo{width:100px;}
    #form1 #mail{width:170px;}
    #form1 #envoyer_form1{text-align:right;}
    .message_titre {font-size:15px}
    </style>
    </head>
    <body> 
     
    <!-- FORMULAIRE --> 
    <div id="form1">
    <form enctype = "multipart/form-data" action = "#" method = "post">	  
    <p><label for="pseudo">pseudo *</label><input name="pseudo" id="pseudo" type="text" value="<?= $pseudo?>" /></p>
    <p><label for="mail">mail *</label><input name="mail" id="mail" type="text" value="<?= $mail?>" /></p>
    <p><label for="photo">avatar</label><input name="photo" id="photo" type="file" /></p>
    <p id="envoyer_form1"><input type="submit" name="form1" value="Envoyez" /></p>
    </form>
    </div>
    <!-- AFFICHE LES MESSAGES DE RETOUR DE FORMULAIRE -->
    <div>
    <?= $message ?>
    </div>
    <!-- AFFICHE LES VIGNETTES DES IMAGES TELECHARGEES-->
    <div>
    <?= $vignette_html ?>
    </div>
    </body>
    </html>

  5. #25
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    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 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Version 3.0 en ligne ici !

    1/ La classe permet désormais de gérer des suffixes et/ou préfixes pour permettre plusieurs redimensionnements d'une même image vers un même répertoire. Il suffit pour cela de passer un tableau comme troisième paramètre à la fonction "Set_Redim()"

    2/ La fonction "Set_Renomme_fichier()" accepte maintenant un second paramètre pour permettre de respecter la casse lors de la recherche de fichiers de nom identiques pour le renommage en mode incrémentiel. A n'utiliser que si besoin et uniquement sur les serveurs unix (ou serveurs qui respectent la casse...).

    3/ Le mode d'emploi à été mis à jour.

    4/ Un répertoire pré configuré nommé "Tests-Scripts-Upload" est maintenant proposé dans le zip de téléchargement pour permettre des tests rapides. Copiez simplement ce répertoire sur votre serveur d'évaluation pour tester les fichiers d'exemples fournis Que cela ne vous dispense pas de lire le mode d'emploi

  6. #26
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 147
    Points : 52
    Points
    52
    Par défaut Erreur sur serveur free
    Bonjour

    La class fonctionne bien sous WAMP, mais dés que je l'utilise sur ma page Free j'ai erreur :

    Quand j'envoi une photo, c'est ok

    Quand j'envoi plusieurs photos , j'ai cette erreur

    Fatal error: Class 'RegexIterator' not found in /mnt/154/sda/4/7/......../Classe_Upload.php on line 1149
    Pourquoi et que faire ?

    Merci

    Cordialement

  7. #27
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    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 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Arf c'est sans doute que Free utilise encore une version php 5.1.

    Quelles fonctionnalités utilises-tu dans la classe ? Je peux éventuellement remettre en ligne la version 2.5 qui est compatible php 5.1.

  8. #28
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 147
    Points : 52
    Points
    52
    Par défaut re
    Re

    J'ai installé un fichier .htaccess contenant la ligne php 1 et cela semble aller un peu mieux... A voir sur la durée !!!

    Sinon la ligne qui pose problème:
    $files = new RegexIterator(new DirectoryIterator($dossier),$match);
    Merci

  9. #29
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    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 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Je sais pas comment fonctionne free et comment changer la version de php dans le htaccess (cela peut-être différent en fonction des hébergeurs).

    En tous cas si tu ne peux pas avoir accès à une version php >= 5.2, la classe en version 3.0 ne fonctionnera pas correctement car il y a d'autres fonctions utilisées (en plus de la classe RegexIterator) qui ne sont pas compatibles php 5.1.

    Dans le lien de téléchargement je viens de remettre en complément la dernière version de la classe (version 2.5) qui était compatible php 5.1. Bien entendu toutes les fonctionnalités ne sont pas disponibles par rapport à la version 3.0. J'ai mis une note dans ce sens

    Si tu as des questions sur comment paramétrer free, merci d'ouvrir un autre sujet dans le forum php afin de réserver celui-ci aux questions concernant plus spécifiquement le fonctionnement interne de la classe

  10. #30
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 147
    Points : 52
    Points
    52
    Par défaut Re
    Re

    Merci pour les infos. JE vais étudier tout ça à tête reposée....

    Cordialement

  11. #31
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 147
    Points : 52
    Points
    52
    Par défaut Petite aide
    Re

    J'aimerai avoir une petite aide:

    Est-il possible que je puisse ajouter un champs texte dans la form
    <input name="perso" type="text" size="50" value="" />
    par exemple

    et pouvoir le récupérer dans une variable exploitable dans la class ?

    Comment faire ?

    Merci

    Cordialement

  12. #32
    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
    La variable sera $_POST['perso'] et elle sera exploitable dans la classe puisque superglobale.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #33
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 147
    Points : 52
    Points
    52
    Par défaut Re
    re

    mes connaissances sont un peu faible pour savoir et pouvoir l'intégrer dans la classe et form existante...
    J'utilise : Upload_multiple_multiple

    Une petite aide me serait bien utile.

    Merci


  14. #34
    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
    Il n'y a rien a faire.
    La variable sera disponible dans la classe.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #35
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    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 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Pas tout à fait dans la classe puisque la classe ne traite que des champs de type file et je n'ai pas fait de fonction particulière pour récupérer les autres variables. A vrai dire je n'y ai jamais pensé. Tu y vois un intérêt particulier ?


    @ didpoy
    Cela dit tous les champs input que tu mets en plus dans ton formulaire seront récupérables naturellement dans la superglobale $_POST. Si bien que pour ton exemple il suffira de faire (par exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $perso = isset($_POST['perso'])? $_POST['perso'] : false;
    Enfin bon merci d'ouvrir un sujet dans le forum débutant pour ce type question car cela n'a rien à voir avec le fonctionnement de la classe. Il s'agit simplement de récupérer les données d'un formulaire et l'emploi (ou non) de la classe ne modifie en rien le principe.

  16. #36
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 147
    Points : 52
    Points
    52
    Par défaut re
    Bonjour

    Le but était de pouvoir connaitre la personne (pseudo) qui envoie les fichiers soit en modifiant le nom des fichiers avec ce pseudo ou en m'envoyant un mail avec ce pseudo pour être averti et savoir les fichiers associés au pseudo.

    Donc il me fallait pouvoir utiliser les infos de la class en y ajoutant ce pseudo et l'envoi de mail ou la modif des fichiers...

    Merci pour les infos.

    Cordialement

  17. #37
    Membre habitué Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Points : 144
    Points
    144
    Par défaut
    Bonjour

    j'ai installé cette classe dans un fichier d'inscription de membre pour remplacer mon ancien script d'upload

    j'ai des questions pour l'intégrer car dans mon script, je dois tester si le upload a été fait avant d'insérer le nouveu nom de la photo dans ma table

    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
     
    <?php
    if (isset($envoi) && ($envoi = true))  {
    				echo $envoi;
    				$erreur_img == false;
    				}else{
    				$erreur_img == true;
    				echo' erreur Class image :' .$erreur_img;
    				}
    					print_r($erreur_img).'<br/>';
    			if ($erreur == false && $erreur_img == false) {
    				$photo = '';
     
    					if (isset($fichier) && ($erreur_img == false)) {
    						$photo = mysql_real_escape_string($nouveau_nom);
    					?>
    suite aux tests, je vois que la variable $ envoi n'indique rien, alors

    1- quel serait le nom de la variable qui m'indiquerait par true ou false si le upload a été fait ?

    2- quel est le nom de la variable qui indique le nom de la nouvelle image ?

    3- Et finalement avec la fontion ->Set_Redim, peux-t-on indiquer seulement une hauteur fixe et laisser calculer le rapport de la largeur avec la fonction ->Set_Redim ?


    merci
    Ils ne savaient pas que c'était impossible, alors ils l'ont fait!
    Mark Twain.

  18. #38
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    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 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Bonjour,

    1/ Il y a un exemple type qui répond à tes besoins. Dans le dossier des exemples (fourni avec la classe, à partir de la version 3.0) il se nomme "Formulaire_inscription_complet_affichage_vignette.php".

    Regarde la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nom_final_fichier = isset($nom_final_fichier) ? $nom_final_fichier : $avatar_par_defaut;
    C'est dans cette ligne que je teste si un fichier a été téléchargé, et sinon je mets un avatar par défaut mais tu peux bien faire ce que tu veux et affecter une valeur nulle en faisant par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nom_final_fichier = isset($nom_final_fichier) ? $nom_final_fichier : null;
    Par ailleurs j'indique dans les notes (toujours dans ce fichier) que l'on peut rendre très facilement l'upload d'une photo obligatoire si besoin. Donc tu as beaucoup de configurations possibles qui sont expliquées dans cet exemple.

    2/ Bien entendu avec Set_Redim() on peut n'indiquer que la hauteur maximale et la largeur sera définie proportionnellement. En reprenant le code du même fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $up->Set_Redim (200,200);
    à remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $up->Set_Redim ('',200);
    si tu veux une hauteur maximale de 200 pixels et une largeur proportionnelle.


    Tout cela est expliqué dans le mode d'emploi fourni avec la classe

    Lien vers la classe

  19. #39
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 147
    Points : 52
    Points
    52
    Par défaut Problème avec class 2.5
    Bonjour

    Je rencontre un problème avec la class v2.5 et le Formulaire_inscription_simple:


    Sous Wamp, elle fonctionne..

    Sur free:
    A la fin de l'envoi des données du formulaire, j'ai une erreur de redirection !!!

    Petit problème... Google Chrome n'est pas parvenu à trouver la page sites.

    Mon lien pour tester est: http://xxxx.free.fr//sites/essai/
    et quand j'ai l'erreur le lien devient: http://sites/essai/index.php#

    Je ne vois pas d'où cela vient ?

    Merci de votre aide.

    Cordialement

  20. #40
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    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 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Bonjour,

    1/ Ton lien pour tester ne peut pas être "http://xxxx.free.fr//sites/essai/" car cette adresse est celle d'un dossier et non pas d'un fichier.

    2/ Dans l'exemple "Formulaire_inscription_simple", la redirection se fait à la ligne "$up->Get_Reload_page();".
    Supprime cette ligne pour voir si c'est un problème de redirection.
    Mais bon je ne vois pas bien comment ce code pourrait poser problème puisqu'il renvoie sur la même page. Enfin essaies pour voir.

    3/ Je précise au passage (si besoin) que les fichiers d'exemples sont prévus pour fonctionner dans le dossier "Tests-Scripts-Upload". Si tu les externalise alors il faudra supprimer la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require('../adresses_dossiers.php');
    et renseigner manuellement les dossiers (dans ton exemple c'est la variable "$dossier_photo") avec l'adresse des dossiers par rapport la racine du serveur (ex: "PHOTO" si tu as un dossier nommé "PHOTO" à la racine du serveur).

Discussions similaires

  1. upload et redimensionnement d'image
    Par tim1789 dans le forum Langage
    Réponses: 2
    Dernier message: 20/06/2011, 10h52
  2. upload puis redimensionnement d'image limité à 2 Mo
    Par franckcl dans le forum Langage
    Réponses: 2
    Dernier message: 22/08/2010, 13h38
  3. [GD] Upload et redimensionnement d'images volumineuses
    Par migli dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 10/06/2010, 12h12
  4. Réponses: 1
    Dernier message: 18/01/2008, 17h18

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