• 締切済み

POSTについて。初心者にもわかるように教えてください。

けっこうどの文献みても、htmlのinputからのデータ引渡しについては結構書いてあるのですが、cgiで使用した変数を、次のcgiへ引き継ぐ方法はあまり書かれていません。(見ている文献が初心者用ばかりだという理由もあるかと思いますし、どっちにしろちんぷんかんぷんなのですが・・) 以下のような例の場合に、abc.cgiおよび、xyz.cgiには、どのような記述をすればよろしいのでしょうか? 例 abc.cgi csvデータの取り込み $a="Iam2888" $b=2888  ↓  ↓ $a、$bのデータを受け渡し  ↓ xyz.cgi 変数の引継ぎ 質問が、初歩的すぎて申し訳ありません

みんなの回答

  • leaz024
  • ベストアンサー率75% (398/526)
回答No.3

 abc.cgi、xyz.cgi は、それぞれ HTML を出力するのですか? だとすれば、直接変数の値を渡す方法はないと思います。  やはり出力する HTML に HIDDEN データとして変数名と値を持たせ、画面遷移を行うボタンで(リンクで遷移するならJavaScriptで)送信するようにすれば、POST で渡せますよね。  あるいは、init.pl などに csv データの取り込みルーチンを書き、両 CGI から require すれば、引継ぎではないですが値は共有できると思います。 (csv が、リアルタイムに更新されなければの話ですが)

  • flame
  • ベストアンサー率100% (3/3)
回答No.2

容量が小さいのであれば、abc.cgiの出力として、<input type="hidden">タグを送り出し、xyz.cgiを呼び出すときにデータを渡すようにすればいいと思います。 容量が大きくて、ブラウザを経由して渡すのが難しい場合には、たとえば、クッキーかhiddenタグで、abc.cgiで作成したデータファイルの名前をブラウザに渡し、xyz.cgiでそのファイル名のデータファイルを読み出して処理すればうまく行くと思います。 データファイルの名前は、たとえば time . $$ というような値を使えば、重複の可能性はほとんどないと思います。$$は、プロセス番号を表す特殊変数です。 なお、ファイル名がおかしくなっていないかどうかきちんとチェックしないと、セキュリティホールになりかねないのでご注意を。

Iam2888
質問者

補足

ブラウザを経由してってことは、それってたぶんGETですよね? postで渡すっていうのは無理なのでしょうか、やり方としてやっぱりクッキーしかないんでしょうかねぇ。 クッキーもちんぷんかんぷんですけど(涙) なんか、初心者でも明朗に理解できる、get以外の手っ取り早い方法ってありませんでしょうか?雛形書いてくれたら助かるなぁ。

  • m-to
  • ベストアンサー率0% (0/0)
回答No.1

一回、別のデータファイルにCGIから書き込んで 次のCGIファイルを使うときにまた読み出せばいいのではないでしょうか?

Iam2888
質問者

補足

そうすると、多数の人が利用していた場合、タイミングによっては、一度書き換えた別のデータファイルが、他人によって作業が終了しないうちに書き換えられるって可能性ありませんか? どなたか、POSTによるperlの雛型を提示していただくと助かります。

関連するQ&A