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 :

[langage]Appel script perl à partir d'un script perl


Sujet :

Langage Perl

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut [langage]Appel script perl à partir d'un script perl
    Bonjour,

    J'ai une petite appli web.
    Ma 1ère page est un formulaire.

    J'aimerai lorsque l'utilisateur le valide qu'un script de vérification de mot de passe soit lancé (script1) et qu'en fonction du résultat de celui-ci, qu'un autre script soit lancé (script2 ou script3).

    J'ai l'impression que tout script perl doit générer du code html or moi je e veux pas que mon script1 en génère (il réalise juste le test et lance script2 ou script3).
    Comment dois-je faire ?

    pour info : dans une console cela fonctionne mais ac le serveur web apache j'ai tjs le message d'erreur suivant :
    " malformed header from script. Bad header= "

    Merci d'avance

  2. #2
    Membre actif Avatar de Gamdwin
    Inscrit en
    Avril 2005
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 186
    Points : 207
    Points
    207
    Par défaut
    " malformed header from script. Bad header= "
    Ca ressemble plutôt à une erreur du genre "je ne connais pas ton fichier, c'est quoi comme langage ?"
    Tu as bien mis un shebang au début de chacun de tes scripts ?
    Comment sont-ils appelés ?


    J'ai l'impression que tout script perl doit générer du code html or moi je e veux pas que mon script1 en génère (il réalise juste le test et lance script2 ou script3).
    Comment dois-je faire ?
    Absolument pas. Tout script CGI devrait générer du HTML, mais le PERL ne sert pas qu'à concevoir des CGI.


    J'aimerai lorsque l'utilisateur le valide qu'un script de vérification de mot de passe soit lancé (script1) et qu'en fonction du résultat de celui-ci, qu'un autre script soit lancé (script2 ou script3).
    Qu'entends-tu par "en fonction du résultat de celui-ci" ?
    S'agit-il du code retour ?
    Comment est exécuté "script1" ?

    Tu peux faire un truc comme ça, si ça peut t'aider :

    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
     
    # Admettons que nous soyions ici dans le script qui gere le formulaire
     
    # <generer le formulaire machin tout ca>
    ...
     
    # Admettons que nous soyions maintenant a la verification du mot de passe
    my $code_retour = system("script1.pl");
     
    if ( $code_retour == $nombre_signifiant_password_ok )
    {
       system("script2.pl");
    }
    else
    {
       system("script3.pl");
    }


    Et si tout ça ne répond pas à tes questions, poste ton code. Parce que là j'avance personnellement à l'aveuglette.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Ton idée de fin avec les appels système me paraîssaient bien ms g tjs le mess d'erreur. g vérifié les chemins tout est bon dc je ne vois po la source de ce pb.

  4. #4
    Membre actif Avatar de Gamdwin
    Inscrit en
    Avril 2005
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 186
    Points : 207
    Points
    207
    Par défaut
    Peux-tu poster tes scripts ou, mieux, une version minimaliste qui montre le problème ?

    Parce que tu donnes trop peu de détail pour que je puisse t'aider (mais peut-être que d'autres auront mieux compris que moi).

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut code
    script 1 censé faire la verif :
    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
    sub main ()
    {
    	#my $donnees = $ENV{'QUERY_STRING'};
    	my $donnees  = "Text1=Release&Password1=Release&config=ZZ&Submit1=Valider";
    	$donnees =~ s/\+/ /g;
     
    	(my $user, my $password, my $config, my $submit) = split(/&/, $donnees);
    	$user =~ s/Text1=(.*)/$1/g;
    	$password =~ s/Password1=(.*)/$1/g;
    	$config =~ s/config=(.*)/$1/g;
     
    	my $ssCmd = &initSS($user, $password);
    	my $var=system($ssCmd, ('cp', $project));
     
    	if ($var == 0)
    	{
    		system ( "perl traitement_donnees.pl" );
    	}
    	else
    	{
    		system ( "perl recup_config.pl" );
    	}
    }
     
    ###########################################################################
    sub initSS(@)
    {
    	my ($user, $pswd) = @_;
    	$ENV{SSUSER} = $user;
    	$ENV{SSPWD}  = $pswd;
     
    	#emplacement de mon srcsafe.ini
    	$ENV{SSDIR} = 'chemin réseau/';
     
    	#emplacement des utilitaires comme ss.exe   
    	$ENV{PATH}   = 'D:\Pierre\VSS\win32;'. $ENV{PATH};
     
    	#charge une biblio d'objets
    	$ENV{OS_AUTH} = "NONE";										
     
    	#je concatène pour conserver le précedent contenu de mon PATH    																								
    	print "---------------------------ENVIRONNEMENT DE TRAVAIL--------------------------\n";																			
    	print "#SSUSER =" ." ".$ENV{SSUSER}."\n";
    	print "#SSPWD  =" ." ".$ENV{SSPWD}."\n";
    	print "#SSDIR  =" ." ".$ENV{SSDIR}."\n";
    	print "-----------------------------------------------------------------------------\n";
     
    	return q(ss.exe);
    }

    script 2 si code retour correct :

    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
     
    sub main ()
    {
    	my @champs_formulaire = ();
    	my $pElement;
    	#my $donnees = $ENV{'QUERY_STRING'};
    	my $donnees = "Text1=rh&Password1=ez&config=Essor+Bull&Submit1=Valider";
    	my $ligne;
     
    	$donnees =~ s/\+/ /g;
     
    	(my $user, my $var2, my $password, my $var4) = split(/&/, $donnees);
     
    	$user =~ s/Text1=(.*)/$1/g;
    	$password =~ s/config=(.*)/$1/g;
    	print ("VAR3 : $password\n");
    	unless ( open (MODELE_HTML, "./temp/modèle2.html"))
    	{print ("erreur lors de l'ouverture du modèle HTML\n");}
    	open (P2, ">../htdocs/p2.html");
     
    	&Date ();
    	$ligne = <MODELE_HTML>;
    	while ( defined ($ligne) )
    	{
    		chomp ($ligne);
    		if ( $ligne =~ /<td(.*)?>CONFIG<\/td>/io )
    		{
    			$ligne =~ s/CONFIG/$password/g;
    			print P2 ("$ligne\n");
    		} 
    		elsif ( $ligne =~ /<td(.*)?>USER<\/td>/io )
    		{
    			$ligne =~ s/USER/$user/g;
    			print P2 ("$ligne\n");
    		}
    		elsif ( $ligne =~ /<td(.*)?>DATE<\/td>/io )
    		{
    			$ligne =~ s/DATE/$date/g;
    			print P2 ("$ligne\n");
    		}
    		elsif ( $ligne =~ /<td(.*)?>HEURE<\/td>/io )
    		{
    			$ligne =~ s/HEURE/$heure/g;
    			print P2 ("$ligne\n");
    		}
    		else
    		{
    			print P2 ("$ligne\n");
    		}
    	$ligne = <MODELE_HTML>;
    	}
    	close (MODELE_HTML);
    	close (P2);
     
    open (P2, "../htdocs/p2.html");
    print header;
     
     
    $ligne = <P2>;
    while ( defined ($ligne) )
    {
    	print"$ligne";
    	$ligne = <P2>;
    }
     
    print ("LANCEMENT\n");
     
    system ( "perl doc_test.pl compilation.cfg \"Essor IBM V3.0\" "); 
     
    }

Discussions similaires

  1. Appeler un code java à partir d'un script shell
    Par supcomingenieur dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 06/06/2013, 16h01
  2. Réponses: 1
    Dernier message: 28/12/2007, 18h14
  3. Réponses: 4
    Dernier message: 03/11/2005, 12h14
  4. Réponses: 7
    Dernier message: 30/09/2004, 12h19
  5. Réponses: 4
    Dernier message: 16/01/2003, 14h42

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