処理終了後、他のプログラムへPOST方式でsubmitする方法はないでしょうか。
GET方式を使えば出来ますが、POST方式で値を渡したいのですが、可能でしょうか。
という質問があり、とても参考になりましたが、その後の処理がわかりません。

ユーザーが登録後、自分のサーバで処理終了し、
他のサーバーにある、パスワードとIDをPost方式で受け取るcgiへ引継ぎ、ログイン後の画面へ移行したいです。
そのプログラムは、GETでは、受け取れないようです。

LWPモジュールが使えないため、socketで、サーバ間の通信を考えていますが、どのようにして、ユーザーの接続を他のサーバ側に引き継いでよいのかわかりません。

お力をお貸しください。
よろしくお願いいたします。

A 回答 (2件)

はい。


"document.form.submit()"の効果は,フォームのSubmit(送信)ボタンを押すのと全く同じなんです。

実験的HTMLソースを作成しました。
これを見ていただけば,理解しやすいでしょうか?
このHTMLソースはページを開いたとき,Javascriptのボタンを押したとき,Submitのボタンを押したとき,3つのいずれかでフォームの送信動作(action)を実行します。

<FORM name=MYFORM action="javascript:alert('送信')">

<input type=submit>

<input type=button value="JavaScriptのボタン"
onClick="javacsript:document.MYFORM.submit()">

</FORM>

<SCRIPT language="JavaScript">
<!--
document.MYFORM.submit();
-->
</SCRIPT>
    • good
    • 0
この回答へのお礼

ページを開いたときそのまま送るのは、まさに必要としていた機能です。
おかげさまで出来そうです。ありがとうございました。

お礼日時:2001/12/13 11:51

1.元サーバ:


POSTさせたい内容のフォームを含むHTMLを元サーバで作成。
そのHTMLの最後に,JavaScriptの"document.form.submit()"含ませておく。
この作成したHTMLページをユーザへ返送。

2.クライアント側ブラウザ:
JavaScriptの実行により,次のサーバへのPOSTリクエストを発行。

上のような方法で,うまくいきませんか?


サーバ間通信をどうしても使いたいのなら,元サーバは一時的にReverseProxyとして動作させる必要がありますね。具体的には以下のような流れ。
元サーバ:次のサーバへPOSTリクエスト

次のサーバ:元サーバへその結果を返す。

元サーバ:次のサーバから受け取った結果をクライアント側ブラウザへ返す。

クライアントには,次のサーバの結果のみが返る。
    • good
    • 0
この回答へのお礼

早速のご指導ありがとうございます。

なにも、サーバー間通信しなくても、良いのですね。
相手側が、Refererで制限をかけてくれるようなら、JavaScriptを使いたいと思います。

サーバ間通信は、なるべくなら避けたかったので、とても参考になりました。

JavaScriptは、あまり詳しくないのですが、
document.form.submit()を使うと、cgiへフォームして、その結果を見て、別のところに、フォームをさらに投げられると言うことが出来るのでしょうか?

お礼日時:2001/12/10 02:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QAccess2000のフォームでのフォームのIMEが、2度目以降変更してしまう。

アクセス初心者です。
Accsss2000のフォームでのデータ入力を楽におこなうために、例えば名前ならばテキストボックスのプロパティシートのその他タブから、IME入力モードをオンにしてかつIME変換モードを人名/地名に変更したのですが、1回目の入力はIMEが全角・人名モードになるのですが、2度目以降は半角カタカナ・人名/地名モードになってしまいます。全角ではありません。なぜでしょうか?
また上のタブにIME入力モード保持というのもありますが、どういう時に利用すればよいのでしょうか?

Aベストアンサー

> 1回目の入力はIMEが全角・人名モードになるのですが、
> 2度目以降は半角カタカナ・人名/地名モードになってしまいます。

恐らく、1回目の入力から2回目に当該テキストボックスへの移動までの
間に、半角カタカナを指定したテキストボックス(またはコンボボックス)を
経由しているのではないでしょうか。
(或いは『IME 入力モード』が「オフ」や「使用不可」、または英数系?)

ともあれ、回避策としては、『IME 入力モード』を、現在の「オン」から
「ひらがな」に変更します。
(「オン」は、「ひらがな/全角カタカナ/半角英数」などのモードを特に指定
 しない場合に使用します。そのため、特定モードで固定したい場合は、
 それに合わせた設定値(ここでは「ひらがな」)を指定する必要がある、
 ということです)


> 上のタブにIME入力モード保持というのもありますが、どういう時に
> 利用すればよいのでしょうか?

私自身はこの設定は使用していないのですが・・・(汗)

例えば、取引情報を入力する場合、『企業略称』テキストボックスには
「アルファベットの略称」や「漢字の略称」、「カタカナの略称」がそれぞれ
連続することになります。
このとき、同テキストボックスの『IME 入力モード』を「ひらがな」などに固定
してしまうと、アルファベットやカタカナの略称のデータを入力する際には
毎回手動で「全角カタカナ」や「半角英数」に切り替える・・・という使い方を
する方もいる可能性があります。
『IME 入力モード保持』は、恐らくそういう場合を想定した機能ではないかと
思います。
(もちろん、ひらがなからの変換で全角カタカナや半角英数に変換するように
 している人の場合は、切替は不要ですので、この設定は使用しなくても
 かまわないことになります)

> 1回目の入力はIMEが全角・人名モードになるのですが、
> 2度目以降は半角カタカナ・人名/地名モードになってしまいます。

恐らく、1回目の入力から2回目に当該テキストボックスへの移動までの
間に、半角カタカナを指定したテキストボックス(またはコンボボックス)を
経由しているのではないでしょうか。
(或いは『IME 入力モード』が「オフ」や「使用不可」、または英数系?)

ともあれ、回避策としては、『IME 入力モード』を、現在の「オン」から
「ひらがな」に変更します。
(「オン」は、...続きを読む

Q処理終了後、他のプログラムへPOST方式でsubmitする方法

処理終了後、他のプログラムへPOST方式でsubmitする方法はないでしょうか。
GET方式を使えば出来ますが、POST方式で値を渡したいのですが、可能でしょうか。
(JavaScriptは使わず。)

Aベストアンサー

なるほど、片方がPHPでしたか。それではやむを得ないかもしれませんね。

一応お書きになったような内容で、当方の環境だと成功するのですが…。
write.cgiを呼び出すopenが失敗しているのかもしれません。失敗するとdieで
そのエラーメッセージを出力してますが、これはサーバのerror_logに出力
されるので、ブラウザからでは確認できませんね。失礼しました。
ではstart.cgiを以下のように修正してみてはどうでしょう。

#!/usr/local/bin/perl

$param = 'a=123&b=xyz';
$ENV{CONTENT_LENGTH} = length($param);
$ENV{REQUEST_METHOD} = 'POST';

print "Content-type: text/html\n\n";

open(OTHER_CGI, "|./write.cgi") or print "error: $!";
print OTHER_CGI $param;
close(OTHER_CGI);

print "success!";

要するに成功したらsuccess、失敗したらerror:でエラーメッセージを
出すようにしたわけです。Content-typeヘッダの後じゃないとちゃんと
出力されないのでその行も上に移動させてください。

ひょっとすると、CGIが実行されるときのカレントディレクトリが
違うのかもしれませんね。./write.cgiをフルパス、すなわち
例えば/my/home/directory/にあるのでしたら
「/my/home/directory/write.cgi」として指定してみてはどうでしょう?
(URLではこの場合ダメです)

なるほど、片方がPHPでしたか。それではやむを得ないかもしれませんね。

一応お書きになったような内容で、当方の環境だと成功するのですが…。
write.cgiを呼び出すopenが失敗しているのかもしれません。失敗するとdieで
そのエラーメッセージを出力してますが、これはサーバのerror_logに出力
されるので、ブラウザからでは確認できませんね。失礼しました。
ではstart.cgiを以下のように修正してみてはどうでしょう。

#!/usr/local/bin/perl

$param = 'a=123&b=xyz';
$ENV{CONTENT_LENGTH} = le...続きを読む

Qフォーム等入力時においてIMEが働かない(?)

よく起こる現象で、インターネットでフォーム入力や、Yahooとかの検索入力で日本語入力をしたいときに、IMEが働かない現象が起きています。半角英数のみ入力ができます。私の環境だけでしょうか‥。
キーボードの「半角/全角」キーが効かないので、IMEツールバーを出して、マウスで日本語入力の「あ」にしても入力画面では半角英数に戻ったりします。
Wordやメモ帳を起動すると、正常に働くので、メモ帳を立ち上げてそこへ入力して、コピーしてペーストをしたりして対処をしています・・。
常にメモ帳を立ち上げておけば解決とかの意味ではありません。
IEをアクティブウィンドウにした場合、IMEが働くなくのです。

Aベストアンサー

確かIEのバグだったと思います。

対処法のリンクを貼っておきますので、参考にしてください。
http://www.tku.ac.jp/~densan/local/ie7-ime/ie7-ime.html

QLWPでPOSTする際。。。

LWP::AgentでPOSTメソッドを使う際
input typeがcheckbox(複数選択可)の場合うまくいきません。
その他のタイプだとうまくいくのですが。。。(textとかhiddenとか)

記述になにか違いがあるのでしょうか?

Aベストアンサー

どううまくいかないのでしょうか?
以下考えられる原因の予測です。

ブラウザ上でのチェックボックスの動作は、チェックが入っていると'name=value'の形式で送信しますが、チェックが入っていない場合はそもそもnameの部分も送信されません。

%formdata に form1=>''と空文字列を入力して送信したときは、
<input type="checkbox" name="form1" value="">
というチェックボックスが押されたと同様に振舞います。
チェックボックスを入れていない状態で送信したい場合は、そもそもform1のキーを含めてはいけません。

原因が違うようでしたら、具体的にどううまくいかないのかの補足をお願いします。

QWebフォームのIMEモードを入力項目毎に自動切替

ある人と話していて、議論になったので質問します。世の中にはたくさんのウェブフォームがあって、名前や住所、電話番号などの登録情報を入力することが多々あります。あまり深く考えたことはなかったのですが、私はなんとなく、「名前や住所のテキスト入力時には自動的にIMEの入力モードが日本語(ひらがな)になり、電話番号やメールアドレスのテキスト入力時には英数になる」ものだと思っていました。自分でIMEを操作することなく、テキストフィールドにタブで移動したりもしくはマウスをクリックしたときにアプリケーション側で制御されるものが大半だと思っておりました。それを聞いてある人は「そんなことはない、世の中の大半のアプリはそんなことを制御していない、「普通」は自分でIMEで制御しながら入力するものだ」、と言っていたので議論になりました。これからウェブサイトを作ろうと思っているので、最終的にはこの議論はアプリ側にそのような実装をするかどうかというところに帰着するのですが、まずは「一般的にどうなのか」というところでご意見を頂きたいと思います。ちなみに、日本のメジャーなサイト(航空会社、ポータル、携帯電話、電気屋)10個でユーザ登録フォームを確認したところ、名前欄をクリックしてもいずれもIMEのモードはひらがなに変更されませんでした。そこで今は友人が正しくて、僕が間違っていたどころか、「そもそも、名前入力時に自動的にひらがなにモード変換されるようなサイトって本当にあるのだろうか。。」というような状態になっております。どなたか、教えてください。よろしくお願いします。

ある人と話していて、議論になったので質問します。世の中にはたくさんのウェブフォームがあって、名前や住所、電話番号などの登録情報を入力することが多々あります。あまり深く考えたことはなかったのですが、私はなんとなく、「名前や住所のテキスト入力時には自動的にIMEの入力モードが日本語(ひらがな)になり、電話番号やメールアドレスのテキスト入力時には英数になる」ものだと思っていました。自分でIMEを操作することなく、テキストフィールドにタブで移動したりもしくはマウスをクリックしたときにア...続きを読む

Aベストアンサー

IMEのON/OFFができるスタイルシート「ime-mode」は、Internet Explorerが独自に追加した仕様で、Internet Explorerでは入力モードが切り替わりますが、その他のブラウザでは保証されません。
http://www.htmq.com/style/ime-mode.shtml

今、確認したところ、IE8はもちろん切り替わり、Firefox 3.6も切り替わりましたが、Google Chromeは切り替わりませんでした。
Opera,Safari,Sleipnir…等は試してません。

大手のサイトでは「より多くのブラウザで表示できること」が求められますので、独自仕様の「ime-mode」を使っているところは少ないのではないでしょうか。
逆に「Internet Explorerしか表示できなくて良い」と割り切ってるサイトや、社内だけに公開するようなページは「ime-mode」が使われていると思います。

Qperlのlwp::simpleのgetのprintで文字化けが出る

下記のperlのソースで文字化けが出る。wide characterのエラーが出ます。
use LWP::Simple;
print get('https://opac.toshokan.city.fukuoka.lg.jp/licsxp-opac/WOpacUsrLendListAction.do');

ソースはcp932
urlはutf-8で書かれています。

utf-8フラグの関係だとは思いますが。
対処が分かりません。

エラーが出ない様なperlのソースをご提示願います。

Aベストアンサー

utf8文字列は、内部用の特殊なエンコーディングだと解釈するのがいいかもしれません。
UTF-8のバイト列としての文字列と、utf8フラグ付き文字列とでは、扱いが違います。
UTF-8のバイト列であっても、decode処理しなければutf8フラグ付き文字列にはなりません。

LWP::Simpleのgetは、外部のコーディングが何であろう(相手がshift_jisでも)と、内部用のutf8文字列で返す。
外部に出力するときは、内部用のをそのまま出力できないので、その出力先に合せてencodeで適切なコーディングに変換する。
ということです。

QACCESS フォーム上 テキストボックスを移動するごとに文字の入力モードが戻ってしまう

ACCESSでフォーム上で入力をしています。
テキストボックスを移動するごとに半角英数になってしまい非常に不便です。

テーブルではIME入力モード:ひらがな、IME返還モード:一般としています。
テーブルのデザインビューの状態では指定している通りのひらがなで入力できるのが、フォームになると半角英数の状態です。
フォームのプロパティから何か設定を変更しなければいけないのでしょうか?
よろしくお願い致します。

Aベストアンサー

maigo-no-konekoさん
ACCESS2000では次の機能があります。
テーブルの項目定義のIMEの設定内容が引き継がれる仕様なのか
否か不明ですが、フォームの定義画面でテキスト項目やコンボボックス
など入力項目毎に指定します。
(ただし、シフトキーを押しながらマウスクリックすることで
複数選択できます)

1)テキストポックスのプロパティ画面を呼び出します。
2)その他 タブにIME関連の項目があります。
  IME入力モード保持 直前に入力した項目のIMEの入力設定
  状態を引き継ぐ場合は「はい」にします。直前の入力項目の
  設定によらない場合は「いいえ」にします。
  IME入力モード オンまたはひらがな等にします。
           ここでご希望の入力方法を選択します。
  IME変換モード 一般(人名や地名などを入力す場合は
  人名/地名)にします。

QLWP::Simpleでのgetについて

つい先日ローカルにサーバ環境をインストールし、
色々とプログラムを試しているのですが、
タイトルに記述したLWP::Simpleのgetを使用すると500エラーとなってしまいます

実行内容は下記のような単純なものです

use LWP::Simple;
$url = "http://localhost/test.cgi";#自動リンク防止に「:」を全角にしてます
$html = get($url);
print "Content-Type: text/html\n\n";
print $html;


・test.cgi単体では動作しています(単純に文字を出力するのみ)
・$url をローカルでなく外部URL(例 yahoo等)にしてもエラーとなりました
・getを行わなず $html = "a";のように任意文字列にした場合は出力されます
・perl/lib/LWP/ には Simple.pm が入っています
・use 行をevalで囲み $@ を見てみましたがエラーは入っていませんでした
・セキュリティソフトがブロックしている可能性も考え、切ってみましたが駄目でした
・レンタルサーバー上で実行した場合は成功しました($urlを外部URLにて)



こちらはApacheやOS側で他に何か設定等が必要なのでしょうか
それとも不足しているものがあるのか・・・手詰まり状態です

些細なことで結構ですので、助言いただけると助かります
以上、よろしくお願いします

-----------------------------------
Apache/2.2.4 Perl/v5.8.8 WinXP/HE
サーバ環境はXAMPP及びXAMPP Add-Onsで一括インストール

つい先日ローカルにサーバ環境をインストールし、
色々とプログラムを試しているのですが、
タイトルに記述したLWP::Simpleのgetを使用すると500エラーとなってしまいます

実行内容は下記のような単純なものです

use LWP::Simple;
$url = "http://localhost/test.cgi";#自動リンク防止に「:」を全角にしてます
$html = get($url);
print "Content-Type: text/html\n\n";
print $html;


・test.cgi単体では動作しています(単純に文字を出力するのみ)
・$url をローカルでなく外部URL(例 yahoo...続きを読む

Aベストアンサー

$Config{'osvers'}が 5になってるのが問題みたいみたいですが
調べてましたが意味がわかりません。

perl/lib/Error.pm
11行目~13行目
"$Config{'archname'}-$Config{'osvers'}" eq
"MSWin32-x86-multi-thread-4.0" or
die "Errno architecture (MSWin32-x86-multi-thread-4.0) does not match executable architecture ($Config{'archname'}-$Config{'osvers'})";
--
をコメントアウトしてみては?

QAccess フォームのテキストボックスに半角英字のみで入力する設定は

IME入力モードをテーブル・フォームともオフにしたのですがひらがな入力モードになってしまいます。
フォームのテキストボックスに半角英字のみで入力する設定としてプロパティのIME入力モードをオフにするやり方自体が間違っているのでしょうか。
それともATOKを使っているなど利用するパソコン側の問題でしょうか

Aベストアンサー

IME入力モードを「使用不可」にしましょう。

Quse LWP::Simple get で、https:// は取得できない?

use LWP::Simple と get を使って、英訳ページなどを作るという記事を見ました。
私も似たような翻訳もどきを作って楽しんでいるのですが、
http:// は取得できても、https:// は取得できない
みたいなのです。
https:// は、いったいなんなのでしょうか?
これうまく取り込む方法はないでしょうか。

Aベストアンサー

httpsはSSLの技術を使用してブラウザとWebサーバが通信をする暗号化プロトコルです。
SSLについては
http://www.fc-lab.com/network/system/security/ssl.html
を参考に紹介いたします。
「ssl 公開鍵 仕組み」等で検索するとよいかもしれません。

次に、LWP::Simbple.pm をつかって https にアクセスする方法です。
openssl と Crypt::SSLeay.pm をインストールしてやれば、プログラムへの変更なしに自動的に http:// も https:// も LWP::Simple::get で取得できます。

参考URL:http://www.fc-lab.com/network/system/security/ssl.html


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング