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 Perl Discussion :

Appliquer un script perl sur un fichier uploadé


Sujet :

Langage Perl

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mars 2007
    Messages : 72
    Points : 39
    Points
    39
    Par défaut Appliquer un script perl sur un fichier uploadé
    Bonjour c'est encore moi
    A l'aide d'un script en php, je souhaite uploader un fichier texte, sur lequel je souhaite appliquer un script Perl avant de mettre le fichier sur un serveur.

    Voila le code que j'utilise pour uploader mon fichier ^^ :
    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
    <html>
     
      <body>
        <form name="exportcarnet" action="thunderbird_to_ldif.pl" method="get" enctype="multipart/form-data">
     
    		<tr>
            <td>
    			<table border="0" cellpadding="0" cellspacing="7">			
    			<tr>
                    <td nowrap>
                      <font face="Arial,Helvetica">
                        <b>Chemin du fichier&nbsp;:</b>
                      </font>
                    </td>
    				<td><input type="file" name="fichier_ldif"></td>
                </tr>
     
                    <td colspan="2" align="center">
    				<input type="submit" value="Envoyer">
    				<input type="reset" value="Annuler">
                    </td>
                </tr>
                </table>
            </form>
    		</td>
     
    	</body>
    </html>
    je pensais que c'etait possible d'executer le script Perl sur le fichier en mettant le nom du fichier Perl dans action="". Malheureusement, ca m'affiche juste le code du fichier Perl

    Au cas ou, je met le code Perl que j'utilise :
    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
    use MIME::Base64;
    use warnings;
     
    # Initialisation du programme
    if(not defined $sn_exists){
      $sn_exists = 0;
      $cn_exists = 0;
      # Chemin de la base LDAP ou seront stockés les contacts
      $basedn=",ou=plopme,ou=carnets,dc=plopplop,dc=fr";
      $unknown_index = 1;
    }
     
    	if($_ =~ /^sn:/){
    		$sn_exists = 1;
    	}
     
    	if($_ =~ /^cn:/){
    		$cn_exists = 1;
    	}
     
    	if($_ =~ /^$/){
    		if($sn_exists == 0){
    			print "sn: not given\n";
    		}
     
    		# Si l'attribut "cn" n'existe pas, on doit en créer un
    		# sinon LDAP va compléter le champ avec LDAP_NAMING_VIOLATION
     
    	if($cn_exists == 0){
    		print "cn: " . $cn . "\n";
    	}
     
    	$sn_exists = 0;
    	$cn_exists = 0;
    	}
     
    	# On décode les lignes encodée en BASE64 pour notre substitution
    	if($_ =~ /^(\w+):: (.*)/){
    		$_ = sprintf("%s: %s\n", $1, decode_base64($2));
    	}
     
    # On doit vérifier l'attribut "cn" de la ligne "dn" car certains contacts
    # n'ont pas d'attribut "mail=" définit, on doit donc ajouter notre champ
    # à la fin de la ligne
    if($_ =~ /^(dn:+\s*)/){
      $prefix = $1;
      $cn = $_;
     
      # On enlève le retour à la ligne
      chop $cn;
     
      # Extraction du champ cn de la ligne dn
      $cn =~ s/^dn:+\s*cn=([^=]+)(,\s*mail=.*)??$/$1/;
     
      # Si la ligne cn n'est pas renseignée, elle doit commencer par "dn:"
      # on doit donc vérifier cela, et donner un nom unique pour cette entrée
     
      if($cn =~ /^dn:/){
    	$cn = "NoName " . $unknown_index++;
      }
     
      # On effectue une vérification sur le champ cn (pas de virgules)
      $cn =~ s/,/ /g;
     
      # On créer un nouveau champ "dn"
      $_ = $prefix . "cn=" . $cn . $basedn . "\n";
    }
     
    	if($_ =~ /^(cn:+\s*)/){
    		$_ = $1 . $cn . "\n";
    	}
     
    # Suppression ou modification des champs inutiles, et non reconnu par Iplanet Directory Server
    s/^homeStreet:/mozillaHomeUrl:/;
    s/^modifytimestamp.*\n//;
    s/^xmozillausehtmlmail.*\n//;
    s/^nsAIMid.*\n//;
     
    # Modification des champs Objectclass et ajout du champ groupeunix (necessaire pour les ACL)
    s/^objectclass: mozillaAbPersonObsolete.*\n//;
    s/^objectclass: mozillaAbPersonAlpha.*\n//;
    s/^objectclass: organizationalPerson.*\n//;
    s/^objectclass: mozillaOrgPerson*\n//;
    s/^objectclass: inetOrgPerson.*/groupeunix: ditiric/;
    s/^objectclass: person.*/objectclass: extensibleObject/;
    Ma question est la suivante ^^ :
    - comment faire pour appliquer le script sur le fichier que j'upload ?

    Merci

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mars 2007
    Messages : 72
    Points : 39
    Points
    39
    Par défaut
    Oui je suis de coté serveur

    Edit : Ok, dans ce cas la, A L'AIDE Jedai

  3. #3
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Tu peux effectivement effectuer un script perl en en mettant le nom dans "action", mais uniquement si ton serveur est configuré pour cela ! Regarde si ton hébergeur supporte les scripts CGI (ou Perl, sauf exception s'il dit qu'il supporte Perl il veut dire les scripts CGI en Perl, bien qu'il y ait d'autre manière d'interfacer Perl et un serveur http). Par ailleurs il va falloir modifier légèrement ton script pour qu'il prenne en compte les paramètres envoyés, regarde le module CGI (qui fait partie du CORE) pour ça.
    Si tu as des difficultés, n'hésite pas à nous poser d'autres questions.

    --
    Jedaï

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mars 2007
    Messages : 72
    Points : 39
    Points
    39
    Par défaut
    Merci, j'avais commencé à m'orienté vers les CGI
    je vais travailler dessus maintenant !!

    PS : Ca a rien à voir, mais bravo pour la FAQ, elle est vraiment complète

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mars 2007
    Messages : 72
    Points : 39
    Points
    39
    Par défaut
    Je choisis mon fichier à traiter avec un formulaire en php, je clique sur le bouton envoyer, et la j'execute mon script Perl (contenant les CGI)

    ma question est la suivante :
    - comment inclure mon script d'upload a tout ca ?

    Est ce que je dois l'inclure dans le script perl ? dans la page en php ?
    j'ai en effet l'habitude d'utiliser cette forme la : "action=*.php"
    alors la je bloque un peu en mettant : "action=*.pl" ou "action=*.cgi"

    Si vous avez des pistes ....

Discussions similaires

  1. Script Perl sur Linux : Accéder à des fichiers Windows
    Par zets22 dans le forum Programmation et administration système
    Réponses: 5
    Dernier message: 24/03/2014, 08h32
  2. [Upload] Filtre sur les fichiers uploadés
    Par fantazya_z dans le forum Langage
    Réponses: 3
    Dernier message: 14/06/2007, 23h51
  3. Exécuter un script perl sur une page HTML
    Par natie_49 dans le forum Web
    Réponses: 13
    Dernier message: 05/03/2007, 16h50
  4. Réponses: 4
    Dernier message: 03/04/2006, 08h50
  5. [XSLT] Appliquer un traitement xslt sur un fichier XML distant
    Par mabig dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 14/03/2006, 09h38

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