• ベストアンサー

POSTとGETについて

SE_gomaの回答

  • SE_goma
  • ベストアンサー率22% (29/131)
回答No.2

SESSION変数に入れてしまえば問題ないはずですが。 破棄とかが面倒でPOSTを使いたいなら、 ユーザチェックページでhiddenのフォームを使って 認証ページにPOSTする方法もあると思いますよ。 locationでページジャンプするとフォームがsubmitされないんでしたら(その場合はその前のページのPOSTの値が残ってるとおもいますが)、部分的にJavaScriptでsubmitしてしまえば良いです。 細かいところはあまり自信ないんですが、「GETなしでもphpは動く」というのだけは確実です。

rad6
質問者

お礼

回答ありがとうございます。 SESSION関数を調べてみたいと思います。 また、JavaスクリプトでのSubmitも興味があります。 具体的にどのようにすれば良いかわかりますか?

関連するQ&A

  • GETからPOSTに変更

    GETで別のphpに移動させていた処理をPOSTで移動させようとしましたが移してくれません。 移動先にはユーザに見せたくないhiddenの値を送ります。 GETの場合だとこの文字が一瞬見えてしまっていました。 <form>タグを使うとGETよりはましですがパケットモニタでクライアントからサーバに送られている値がバレます。値の暗号化はしません。 fsockopenだとサーバ内でhiddenの値が渡されるのでユーザに値はバレずに次のphpに値を渡せましたが移動ができませんでした。 POSTで移動もするにはどうするとよいのでしょうか?

    • 締切済み
    • PHP
  • GETとPOST以外のデータの渡し方って・・・

    ありますでしょうか? 以下、例をあげます。 検索画面を作成し、検索フォームに入力された値で、検索結果を表示する画面を作りたい。しかし、POSTで渡すのは避けたい。 GETで渡すとしても、formのsubmitをGETにすると、検索項目分URL表示されるので避けたい。どうしても必要なら、GETの引数は1つまでにしたい。 こういう場合、具体的にどのようにすると良いでしょうか?

    • 締切済み
    • PHP
  • HTMLとPerl間のページ遷移について。

    HTMLとPerl間のページ遷移について。 こんにちわ。 HTML(index.html)でログインフォーム(ユーザ名、パスワード)を作成し、そこに入力した情報を、Perl(login.pl)にPOST送信します。 Perlでは、受け取ったパラメータをチェックし、ユーザ名とそのパスワードが正しければ、もとのHTMLファイル(index.html)にページ遷移し、もともとあったログインフォームをJavaScriptで削除し、「ログイン中」と表示させる、ということをしたいのですがわからないところがあり投稿させていただきました。 現在、クライアントでは、JavaScriptを使ってログインフォームを作っています。そして、フォームの中の値を取得して、POST送信することはできます。次に、サーバにてPerlで受け取ったパラメータをチェックし、ユーザ名とパスワードの認証をとるところまではできています。しかし、その後にどうすべきかがわかりません。locationで、もとのHTMLファイル(index.html)を指定しても、ログインを認証したという情報は保持しておらず、それでは意味がありません。 Perlでログインを認証した後に、認証したという情報を保持したままHTMLページに遷移する事は可能でしょうか。可能であればその方法を教えていただきたく思います。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • パラメータをパラメータで渡したい

    変なタイトルですみません(汗 何がしたいかと言うと・・・いまindex.htmlからcgiに引数つきでリンクをしています。 (<a href="hoge.cgi?Page=1">みたいな感じで) で、認証機能をつけようと思い立ち、hoge.cgi側で「ログインしていなければ(認証しましたよCookieを持っていなければ)、ログインcgiにLocationでジャンプ」という機能を、ログインcgiでは「呼び出し元(Sender)を保存しておいて、認証終了後にLocationで元の位置に戻る」という設計としました。 が、よくよく考えるとLocationではgetしか使えないので、先ほどの "?Page=1" を保存することができません(ネストしてしまいます)。 (要は、ログインcgiに飛ぶときのURLが、login.cgi?Sender=hoge.cgi?Page=1になっちゃってダメやん・・・ということですね) GetがダメなのでPostを使うしかないのでしょうか。 (そうすると、login.cgiに input hidden がズラリ並ぶ事態は避けられないのでしょうか・・・hoge.cgiの引数は一定でないので、ややこしくなりそうで) よろしくご教示ください・・・。m(_ _)m

    • ベストアンサー
    • Perl
  • GETやPOSTで値を取り出すとき

    <form>で、値を送信するとき、 GETかPOSTを選択して送信して、 PHPではその値を受け取った上で処理するのですが。 チェックボックスを作り、複数選択した場合、 値が1個しか取り出せません。 例えば、 同じnameで、A,B,C,Dのうち、A,Cを選択したなら、 後側の C しか取り出せません。 GETで送信したときのURLの後ろがこうなります。 http://www.~~~.jp/xxxx.php?name=A&name=C この様になり、実際には2個の値を送信しているのにもかかわらず、後側の1個だけを拾っている様なんです。 PHPの受側で正しく複数の値を取り出せるいい方法はないでしょうか?

    • 締切済み
    • PHP
  • リダイレクトでPOSTリクエストを復元する方法

    【行いたいこと】 RailsでRESTフルなリソースを扱うアプリを開発しています。 アプリはユーザ認証機能を備えており、 RESTフルなリソースの操作(作成や削除など)はログインしたユーザだけが行えます。 ログインしていないユーザがこれらの操作をおこなうリクエストを送ってきた場合には、 認証ページに遷移させ、ユーザがログインした直後に、 ユーザ操作なしで当初のアクセスに対する操作処理を行いたいです。 【もくろみ】 ログインしたユーザだけが行える操作へのアクセスは、 フィルタ(before_filter)を使いインターセプトし、 ログインしていないユーザの場合には認証ページにリダイレクトします。 インターセプタ時点でリクエスト情報をセッションに格納しておき、 ログイン後にセッションからリクエスト情報を取り出し、 その情報を使ってリダイレクトすれば良いと考えました。 【問題点】 GETリクエスト(GETメソッドでのHttpリクエスト)をインターセプタした場合は上手くいきましたが、 POSTリクエストではリクエストを復元できません。 GETメソッドのリクエストになってしまいます。 リダイレクト(redirect_to)はブラウザにGETリクエストしか要求できないためです。 何か解決策はありますでしょうか。 よろしくお願いします。

  • $_POST,$_GETの値が空...

    はじめまして。まだまだPHP初心者なのですが.. PHP Ver 4.3.2 にて、$_POST 、 $_GET の値がどうしても 受け取れないのですが、何か設定がおかし いのでしょうか... ちなみに、register_global は OFF です。 GET は URL http://***.com/xxx.php?ID=aaa echo $_GET["ID"]; print_r ( $_GET ); POSTは、通常通り form の method を POSTに設定して 受け取っていますが、どちらにしても結果は、何も表示されません。 どなたか解決方法をご教授下さい。 また、既出でしたら申し訳ございませんがご指摘下さい。

    • ベストアンサー
    • PHP
  • $_POSTの使い方

    現在ログイン型情報サイトを運用しております。 ログインはPEARのAuthを使用しております。 ログイン認証やログイン判定後のページ表示やDB操作等について isset($_POST['hoge']) や if($_POST['hogehoge']) == xxxx) など 複数の場所でPOSTされた値を判定に使っております。 このサイトを丸ごとコピーして、アクセスした時点で既にログインしている状態を作らなければならなくなりました。 値をセッションに入れる時等、 $_SESSION['hoge'] = "yyyy"; のようにしますよね。 同様(かどうかわかりませんが・・・)に値があたかもPOSTされた状態を作る方法として if(!isset($_SESSION['username'])){ $_POST['username'] = "zzzz"; $_POST['password'] = "vvvv"; その他ログイン時にPOSTされる値を同様に$_POSR['aaaa']として書く } というコードを書いて、あたかもログインボタンを押してログインしたかのような状態を作る事はできたのですが、このような手法は上記状態を作るために行う手段としては正しいのでしょうか? またセキュリティ等、自分が気づかないような穴があるかどうか心配です。 手法としてやってもよい事なのか、よくない事なのか、気をつけなければいけないことが何かあるのか等、どなたかアドバイスをいただけないでしょうか?

    • 締切済み
    • PHP
  • perl/cgi リダイレクトができない

    こんにちは。 レンタルサーバーにて、認証後に開きたいページをlocationで実行してみたのですが動かなくて困っています。 index.html(ログインフォーム) ↓ aaa.cgi(認証可否チェック) ↓OKならsessionを与えて bbb.cgi(認証後にユーザーに見せる最初のページ) location以外でダイレクトさせる方法を教えてください。 よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • $_SESSIONと、POSTやGETの違い

    SESSION ・クッキーにセッションIDを作り、データをサーバーへ送信して保存。 ・セッションIDを元に、送受信系のもので送られ保存されたデータをどのページでも取得できる。 ・セキュリティが強い。 GET ・クッキーにセッションIDを作り、データをサーバーへ送信して保存。 ・セッションIDを元に、送受信系のもので送られ保存されたデータをどのページでも取得できる。 ・URLとして送信される。 ・アンカータグからも送れる。 ・セキュリティが弱い。 POST ・クッキーにセッションIDを作り、データをサーバーへ送信して保存。 ・セッションIDを元に、送受信系のもので送られ保存されたデータをどのページでも取得できる。 ・セキュリティが強い。 ・大量のデータ向け。 GETとの違いは分かるのですが、POSTとSESSIONの違いが良く分かりません。 $session_start(); $_SESSION["abc"] = "エービーシー"; のようにセッションを作って変数に格納し $session_start(); echo $_SESSION["abc"]; のように他のページで変数を使うことができますが、 POSTやGETも他のページで使えるので自動でセッションIDが作られていて SESSIONやPOSTやGETなどの送受信系のもので保存されたデータは 送受信系のものでデータを自由に取得できるのかなと思い試してみると $_SESSION["abc"]で送信したデータを他のページで$_SESSION["abc"]で取得すると正常に動き、 $_SESSION["abc"]で送信したデータを他のページで$_GET["abc"]で取得するとエラー、 $_SESSION["abc"]で送信したデータを他のページで$_POST["abc"]で取得するとエラー、 $_GET["abc"]で送信したデータを他のページで$_GET["abc"]で取得すると正常に動き、 $_GET["abc"]で送信したデータを他のページで$_POST["abc"]で取得するとエラー、 $_GET["abc"]で送信したデータを他のページで$_SESSION["abc"]で取得するとエラー、 $_POST["abc"]で送信したデータを他のページで$_POST["abc"]で取得すると正常に動き、 $_POST["abc"]で送信したデータを他のページで$_POST["abc"]で取得するとエラー、 $_POST["abc"]で送信したデータを他のページで$_SESSION["abc"]で取得するとエラー、 送信された方法と受信する方法が一致しないもの以外はエラーになりました。 おんなじ方法で送信と受信をしないとダメなのですね。

    • ベストアンサー
    • PHP