Prob dynamique perl->html->perl

Résolu/Fermé
herve70 - 13 nov. 2006 à 13:08
 herve70 - 14 nov. 2006 à 10:55
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
A voir également:

3 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
13 nov. 2006 à 13:44
Salut,

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

lami20j
0
ben en fait la ligne 11 est vide

je pourrais t envoyé le code mais il est assez lourd a regarder
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
13 nov. 2006 à 15:36
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
#!/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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
13 nov. 2006 à 19:38
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
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