OVH Cloud OVH Cloud

Question CGI

2 réponses
Avatar
paul POULAIN
Bonjour,

Soit toujours mon appli web écrite en Perl, utilisant le mécanisme des CGI.

Mon problème du jour est le suivant :
- l'utilisateur appelle une URL du genre
http://www.site.fr/cgi-bin/koha/script.pl
avec un formulaire en POST, qui contient, entre autres, la variable
FaireUnTruc (+ d'autres choses qui le rendent trop long pour un GET)

Dans mon script Perl, il y a 2 cas :
* FaireUnTruc = 1 => je fais un truc en Perl, je reconstruit la page, et on
n'en parle plus.
* FaireUnTruc = 2 => c'est là que c'est compliqué : je voudrais appeler un
autre programme (en PHP en l'occurence), avec le formulaire post en l'état,
et c'est le PHP qui fait le reste (traitement, suite opération).

Je vois comment faire ça avec le perl qui reconstruit une page avec un
formulaire POST auto-submitté sur le OnLoad. Mais c'est compliqué.
* y a t'il un moyen de faire ce genre de chose avec un redirect-> simple ?
* y a t'il un moyen de faire ce genre de chose directement sur le serveur,
sans aller-retour réseau ?

Merci au bon génie qui se penchera sur cet épineux problème...

PS : pas la peine de me dire que je pourrais changer la destination du
submit au moment de la validation du 1er formulaire, l'exemple que j'ai
donné simplifie un peu, on ne peut pas faire ça.
--
Paul

2 réponses

Avatar
Pierre Génieys
paul POULAIN wrote:

Dans mon script Perl, il y a 2 cas :
* FaireUnTruc = 1 => je fais un truc en Perl, je reconstruit la page, et on
n'en parle plus.
* FaireUnTruc = 2 => c'est là que c'est compliqué : je voudrais appeler un
autre programme (en PHP en l'occurence), avec le formulaire post en l'état,
et c'est le PHP qui fait le reste (traitement, suite opération).


Bonjour,

je ne sais pas si c'est une question sur perl, mais une solution possible
(non testée) est de changer l'action de ton formulaire en fonction de la valeur
da FaireUnTruc


FaireUnTruc = 1 -> script perl
FaireUnTruc2 = 2 -> php

dans le html

<form id="myForm" method="POST" onSubmit="return setAction()" >
<input name="FaireUnTruc" id="zut">
etc...
</form>

un petit javascript
<script type="text/javascript">
function setAction() {

var url1 = " url n° 1";
var url2 = " url n° 2";

if (document.getElementById("zut").value == 1) {
document.getElementById("myForm").action = url1;
} else {
document.getElementById("myForm").action = url2;
}
}

</script>

Pierre.


________________________________________________________________
échangez opinions et commentaires dans les forums de discussion.
http://www.usenetgratuit.com/

Avatar
Martin
Allo,

Je vois comment faire ça avec le perl qui reconstruit une page avec un
formulaire POST auto-submitté sur le OnLoad. Mais c'est compliqué.


Moi je trouve ca plutôt simple alors tu préfères peut-être ne pas lire le
reste de ma réponse.

* y a t'il un moyen de faire ce genre de chose avec un redirect-> simple ?
* y a t'il un moyen de faire ce genre de chose directement sur le serveur,
sans aller-retour réseau ?


Il y a probablement une facon vraiment simple de le faire mais sinon, il
existe au moins une facon moins simple de le faire. Il s'agit de contruire
une nouvelle requette HTTP avec HTTP::Request et de faire toi-meme le POST
sur l'autre application. Tu retournes ensuite le résultat. Ce n'est pas
moins simple que la solution avec le OnLoad mais pas infiniment plus
compliqué non-plus.