Prob dynamique perl->html->perl

Résolu
herve70 -  
 herve70 -
bonjour j ai créer une page html qui transmet des parametres a un perl qui va me générer un page html.jusque la tout fonctionne bien

Maintenant je veux crée la page html qui recoit les parametres a partir d un perl: ce que je fait c'est que j ouvre un fichier commencant par

#!/usr/bin/perl

use strict;
use warnings;
use CGI;

## creation d'objet CGI
my $Query = CGI->new();

je crée une entete html
suis de mon body qui est un copier coller de la page html fonctionnante
je crée la fin de ma page html et je print tout ca

resultat: j ai bien un bon affichage de ma page mais lorsque saisie le parametre en question et que je soumet mais j ai ce message d'erreur et je vois pas du tout ou faire la correction car a l endroit indiqué y a rien

message erreur:

Ligne : 11
Car : 1
Erreur : Objet attendu
Code : 0
URL : http://....................programme.pl

3 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    et la ligne 11 dit quoi? Affiche le code pour voir.

    lami20j
    0
    1. herve70
       
      ben en fait la ligne 11 est vide

      je pourrais t envoyé le code mais il est assez lourd a regarder
      0
  2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    mais il est assez lourd a regarder
    plus lourd que celui là ? perl reseaux#58

    Si tu l'envoie mets le code entre les balises (le bouton Code).
    Je vais le regarder ce soir.

    lami20j
    0
    1. herve70
       
      #!/usr/bin/perl

      ## Programme pour créer la structure----------------------------------------------------------------

      use strict;
      use warnings;
      use CGI;

      ## creation d'objet CGI
      my $Query = CGI->new();

      ## declaration de variable

      my $i=0;
      my $j=0;

      ## creation du header de la page html----------------------------------------------------------------------

      my $HTML = $Query->header(-expires=>'-1', pragma=>'no-cache');
      my $HEADER = $Query->start_html(-title=>"Page premiere",
      -meta=>({http_equiv=>'Content-type',content=>'text/html',charset=>'ISO-8859-1'}),
      );

      ## creation du body de la page HTML-------------------------------------------------------------------------

      my @Body;
      $i=0;
      $j=0;

      $Body[$i++] = '<script language="JavaScript" type="text/javascript">';
      $Body[$i++] = 'function lance()';
      $Body[$i++] = '{';
      $Body[$i++] = 'var chaine=document.FORM.P_PER.value;';
      $Body[$i++] = 'if((chaine.search(/^2[0-9][0-9][0-9][0-9][0-9]/) != -1)';
      $Body[$i++] = '{';
      $Body[$i++] = 'var Form = document.FORM;';
      $Body[$i++] = 'var ValPar = \'\';';
      $Body[$i++] = 'for ( var i=0; i<Form.elements.length; i++ )';
      $Body[$i++] = '{';
      $Body[$i++] = 'if ( Form.elements[i].name.match(/^P_/) )';
      $Body[$i++] = '{';
      $Body[$i++] = 'ValPar += \'{\' + Form.elements[i].name.replace(/^P_/,\'\') + \'::\' + Form.elements[i].value + \'}\';';
      $Body[$i++] = '}';
      $Body[$i++] = '}';
      $Body[$i++] = 'var Action = \'http://lance.pl?SHELL=\' + Form.SHELL.value + \'&URL=\' + Form.URL.value + \'&PARAMS=\' + ValPar;';
      $Body[$i++] = 'location = Action;';
      $Body[$i++] = '}';
      $Body[$i++] = 'else';
      $Body[$i++] = '{';
      $Body[$i++] = 'alert (\'Le champ per est errone\');';
      $Body[$i++] = '}';
      $Body[$i++] = '}';
      $Body[$i++] = '</script>';
      $Body[$i++] = '<center>';
      $Body[$i++] = '<table border=1>';
      $Body[$i++] = '<tr>';
      $Body[$i++] = '<td align=center>';
      $Body[$i++] = '<h2>';
      $Body[$i++] = '<center> <I> Transfert </I> </center>';
      $Body[$i++] = '</h2>';
      $Body[$i++] = '</td>';
      $Body[$i++] = '</tr>';
      $Body[$i++] = '</table>';
      $Body[$i++] = '</center>';
      $Body[$i++] = '<hr>';
      $Body[$i++] = '<ul type="circle">';
      $Body[$i++] = '<li>';
      $Body[$i++] = '<a href="page.html"> RETOUR </a>';
      $Body[$i++] = '</ul>';
      $Body[$i++] = '<center>';
      $Body[$i++] = '<table border=3 cellspacing=10 BORDERCOLOR="black">';
      $Body[$i++] = '<form name="FORM">';
      $Body[$i++] = '<tr>';
      $Body[$i++] = '<td width="5"></td>';
      $Body[$i++] = '<td valign="middle" align="center">';
      $Body[$i++] = 'Saisir la periode :';
      $Body[$i++] = '</td>';
      $Body[$i++] = '<td valign="middle" align="center" bgcolor="black">';
      $Body[$i++] = '<input type="text" name="P_PER" size="8" maxlength="6">';
      $Body[$i++] = '</td>';
      $Body[$i++] = '</tr>';
      $Body[$i++] = '<tr>';
      $Body[$i++] = '<td colspan="3">';
      $Body[$i++] = '<input type="hidden" name="SHELL" value="/dep/all.sh">';
      $Body[$i++] = '<input type="hidden" name="PARAMS" value="">';
      $Body[$i++] = '<input type="hidden" name="URL" value="http://pageall.html">';
      $Body[$i++] = '</td>';
      $Body[$i++] = '</tr>';
      $Body[$i++] = '<tr>';
      $Body[$i++] = '<td width="5"></td>';
      $Body[$i++] = '<td valign="bottom" align="right">';
      $Body[$i++] = '<input type="reset" value="Effacer" name="NoExec">';
      $Body[$i++] = '<input type="button" value="Retour" name="Back" onclick="javascript:history.back();">';
      $Body[$i++] = '</td>';
      $Body[$i++] = '<td valign="bottom" align="left">';
      $Body[$i++] = '<input type="button" value="Envoyer" name="Exec" onclick="javascript:if(confirm(\'aller go sinon retour\')){lance();} else {alert(\'resaisir\');};">';
      $Body[$i++] = '</td>';
      $Body[$i++] = '</tr>';
      $Body[$i++] = '</form>';

      my @Fin;
      $i=0;
      $Fin[$i++] = '</table></center></body></html>';

      ## envoi page Html-------------------------------------

      print "$HTML\n$HEADER\n@Body\n@Fin\n";
      0
  3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    Si tu l'envoie mets le code entre les balises (le bouton Code). Ben, tu ne l'as pas fait ;-)

    Déjà je t'annonce que ton code fonctionne chez moi sans problèmes.
    C'est peut être à cause de serveur.
    En revanche j'ai nettoyé un peut ton script :-)) ( c'est laide avec autant de $Body[$i++] quand tu peux utiliser une simple variable scalaire.
    Pareil pour @Fin, pas besoin
    Il manquais aussi une balise </li>

    $Body[$i++] = '<ul type="circle">';
    $Body[$i++] = '<li>';
    $Body[$i++] = '<a href="page.html"> RETOUR </a>';
    $Body[$i++] = '</ul>'; 
    Voici ton code
    #!/usr/bin/perl 
    
    ## Programme pour créer la structure ##
    
    use strict;
    use warnings;
    use CGI;
    
    ## creation d'objet CGI ##
    my $Query = CGI->new();
    
    ## creation du header de la page html ##
    
    my $HTML = $Query->header(-expires=>'-1', 
                               pragma =>'no-cache');
    
    my $HEADER = $Query->start_html(-title=>"Page premiere",
                                    -meta=>({http_equiv=>'Content-type',
                                             content   =>'text/html',
                                             charset   =>'ISO-8859-1'}),
    				);
    
    ## creation du body de la page HTML ##
    
    my $Body = q{<script language="JavaScript" type="text/javascript">
    function lance()
    {
    var chaine=document.FORM.P_PER.value;
    if((chaine.search(/^2[0-9][0-9][0-9][0-9][0-9]/) != -1)
    {
    var Form = document.FORM;
    var ValPar = \'\';
    for ( var i=0; i<Form.elements.length; i++ )
    {
    if ( Form.elements[i].name.match(/^P_/) )
    {
    ValPar += \'{\' + Form.elements[i].name.replace(/^P_/,\'\') + \'::\' + Form.elements[i].value + \'}\';
    }
    }
    var Action = \'http://lance.pl?SHELL=\' + Form.SHELL.value + \'&URL=\' + Form.URL.value + \'&PARAMS=\' + ValPar;
    location = Action;
    }
    else
    {
    alert (\'Le champ per est errone\');
    }
    }
    </script>
    <center>
     <table border=1>
      <tr>
       <td align=center>
        <h2><center> <I> Transfert </I> </center></h2>
       </td>
      </tr>
     </table>
    </center>
    <hr>
    <ul type="circle">
     <li><a href="page.html"> RETOUR </a></li>
    </ul>
    <center>
     <table border=3 cellspacing=10 BORDERCOLOR="black">
      <form name="FORM">
       <tr>
        <td width="5"></td>
        <td valign="middle" align="center">Saisir la periode  :</td>
        <td valign="middle" align="center" bgcolor="black">
         <input type="text" name="P_PER"  size="8" maxlength="6">
        </td>	
       </tr>
       <tr>
        <td colspan="3">
         <input type="hidden" name="SHELL" value="/dep/all.sh">
         <input type="hidden" name="PARAMS" value="">
         <input type="hidden" name="URL" value="http://pageall.html">
        </td>
      </tr>
      <tr>
       <td width="5"></td>
       <td valign="bottom" align="right">
        <input type="reset" value="Effacer" name="NoExec">
        <input type="button" value="Retour" name="Back" onclick="javascript:history.back();">
       </td>
       <td valign="bottom" align="left">
        <input type="button" value="Envoyer" name="Exec" onclick="javascript:if(confirm(\'aller go sinon retour\')){lance();} else {alert(\'resaisir\');};">
       </td>		
      </tr>
    </form>};
    
    
    my $Fin = '</table></center></body></html>';
    
    ## envoi page Html-------------------------------------
    
    print "$HTML\n$HEADER\n$Body\n$Fin\n";
    
    lami20j
    0
    1. herve70
       
      salut,

      c'est vrai que c'est plus efficace en terme de vision du code et ca évite de faire des erreurs de syntaxe si on part d un programme html qui fonctionne

      du coup maintenant je n ai plus de probleme ca fonctionne MERCI
      0