- ベストアンサー
POSTをボタンではなくリンク等から送信する方法
PHP4とMySQLにてGoogleやYahoo!のような、 検索リンクもどきのものを作成しています。 フォームの文字と検索条件のチェックボックスの状態を取得し 以下のように出力します。 (例:検索に「教えてgoo」と入力した場合) ---------------------- [検索に戻る] [教えてgoo]の検索結果(全100件中1~10件を表示) 1 .サイト名 2 .サイト名 ....省略..... 9 .サイト名 10.サイト名 [次の10件→] [検索に戻る] ---------------------- さて、ここで解らない部分があるのですが、 formに入力されたデータはPOSTにて送信しています。 (GETだとアドレスが長く丸見えになってしまうため) 1ページ目はフォームより送信されたデータを受信するので、 「[教えてgoo]の検索結果」の「教えてgoo」の部分は表示されますが、 次の10件に移動した場合は当然送信されるデータが無いので 「[]の検索結果」となり、検索結果の情報も取得できません。 このような場合、どうやってデータを送信すればよいのでしょうか? 下記のようなやり方だとできないこともなさそうですが、 これだと「次の10件」の部分がボタンになってしまいます。 $page = $_POST["page"]; $word = $_POST["word"]; <form action="search.php" method="POST"> <input type=hidden name="page" value=$page+1> <input type=hidden name="word" value=$word> <input type=button name="submit" value="次の10件"> </form> どなたかご存じの方がいらっしゃいましたら どうかよろしくお願い致します
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ANo.3の方も書かれてますが、私ならセッション使います。アンカータグはhref="xxx.php?p=1"とかでけで済みますから。ページの数字部分は(スクリプトで生成するので)表示しているページで変わりますけどね。Cookieが使えない環境にも対応したいとなると(Cookie非対応端末の場合)セッションIDがURLに入ってしまいますが、どこまで気にするか(しないといけないか)次第でしょう。 ただ、GoogleなどはGETで受け渡してますよね。丸見えになる→そのURLを保存して再利用するときに便利という面もありますので。
その他の回答 (3)
- kokorone
- ベストアンサー率38% (417/1093)
ページ間のデータの受け渡しには、セッション変数も利用 できますよね。 POSTと同じく、データを目視することができないため、 セキュリティ面でも安心です。 URLに、記述してしまうと、改ざんされ、不正アクセス される恐れもあります。
お礼
回答ありがとうございます。 なるほど、セッションでも出来るのですか。 セッションはパスワード認証などにも使われていますしね。 ただ、私の方が少しばかり勉強不足だったので、 そちらを調べてみようと思います。
- suzu_zou
- ベストアンサー率34% (112/327)
JavaScriptを使うくらいしか思いつかないです。 <form action="search.php" name="frm" method="POST"> ... <a href="#" onClick="javascript:document.frm.submit();">次の10件</a> ... </form> ダメですか?
お礼
回答ありがとうございます。 No.1の方のお礼にも書きましたが、どうしてもJavaScriptだと 対応してないブラウザや機種も多いので少し厳しいですね・・・。 やはりPOSTではなくGETを使うべきなのか。 とりあえずアドバイスいただいたものでも動作はしますので、 色々と対策を考えてみようと思います。
- kokorone
- ベストアンサー率38% (417/1093)
変更前:<form action="search.php" method="POST"> 変更後:<form action="search.php" name="f_list"method="POST"> 変更前:<input type=button name="submit" value="次の10件"> 変更後:<a href="javascript:document.f_list.submit();">次の10件</a> これでいかがでしょうか? 但し、JavaScriptは有効としてください。
お礼
回答ありがとうございます。 なるほど、JavaScriptで送信すればできそうです。 ですが、2~3割程度の方がJavaScriptが無効になっていますし 携帯電話にも対応予定なのでどうも厳しいところですね・・・。
お礼
パソコンのログインみたいなものだとセッションは有効ですが やっぱり携帯端末が気になりますしね・・・。 なるほど、やはりPOSTで渡してページングというのは 色々問題もあって難しいものなのですね。 それが判っただけで大きな収穫です。 検索エンジンみたいなものゆえにパスワード認証などが あるわけではありませんし、 GETなら他人にURLを直接渡すということもできますので、 そちらで動作させることにします。 (というかGoogleもGETだったんですね、 身近なのに気付きませんでした) 回答ありがとうございました。