1.html

<form method="POST" action="l.php">
<input type="text" name="usersearch"/>
<input type="submit" name="button" id="button" value="検索" />
</form>
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
2.php
$usersearch= $_POST['usersearch'];

こんな感じにPHPで受け取ったとして
2.php

<?php
$pid = $_GET['pid'];
$countRe=$num_rows;
pager($_GET["pid"],$countRe);
function pager($pid,$countRe){
if($pid=="") $pid=1;

$maxPage=ceil($countRe/10);
if($maxPage==1 or $maxPage<$pid) return false;

if($pid>10){
$startPage=$pid-9;
$startMore="<a href=\"$PHP_SELF?pid=".($startPage -1)."\">&lt; PREV</a>";
}else{
$startPage=1;
}

if($pid+10<$maxPage){
$endPage=$pid+10;
$endMore=" <a href=\"$PHP_SELF?pid=".($endPage+1)."\">NEXT &gt;</a>";
}else{
$endPage=$maxPage;
}
$page_footer="";
for($i=$startPage;$i<=$endPage;$i++){
$page_footer.=" ".(($pid==$i)?"<span style='font-Size:120%'>$i</span>":"<a href=\"$PHP_SELF?pid=$i\">$i</a>");
}
$page_footer=$startMore.$page_footer.$endMore;
print $page_footer."<br>";
}

?>
こうした場合、<a href=\"$PHP_SELF?pid=".($endPage+1)."\">NEXT &gt;</a>";
この部分でリンクをクリックした場合、POSTした値が消えてしまっています。どうしたら引き継げますか??

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2011/11/16 20:50:03

回答1件)

id:windofjuly No.1

回答回数2625ベストアンサー獲得回数1149

無料だからと投稿しまくるのは感心しません

新しい質問にしてしまうと、話が分断され

部分部分しかわからない閲覧者は、

あなたを間違った方向に誘導することにもなりますし、

すでにあなたは迷いまくっています

とりあえず1つ前の http://q.hatena.ne.jp/1320837192 は、

早々にキャンセルしておくほうが良いでしょう

これまでの質問に回答やコメントくださった方々にも、

失礼のない様に返事をしておくとともに、終了処理もしておきましょう

 

(1)原因

すでにコメント受けているはずですが、何度でも言いますね

「まずは基本を見直すこと」

・フォームがPOSTで送信するなら、受ける時は$_POST

・AタグはGETでの送信になってしまうから、受ける時は$_GET

ほかにも受け取る方法は用意されていますが、

セキュリティの観点からも、基本を身につけるという観点からも、

まずは、この二点に絞り込んでしっかり身に付けましょう

 

(2)対応

フォームもGETにしてしまう

そうすれば受ける時はすべて$_GETだけで行うことができる

  • id:ken3memo
    <a href=\"$PHP_SELF?pid=".($endPage+1)."\">NEXT &gt;</a>";
    で作成されたのは単なるリンクなので、POSTの値を渡すことができないのでは?
    .
    すべて POSTで渡す(NEXTのボタンにして、Form内にpidを持ったり)
    か、
    GetでURLにつなげて usersearchを渡すか?
    xxxx.php?pid=2&usersearch=%e7%84%a1%e7%90%86%e3%81%8b%e3%81%aa%e3%81%81
    どちらかに統一したほうが わかりやすいのでは?
    .
    なんて、フト 思ったので、コメントしてみました。
  • id:ken3memo
    お隣質問に
    http://q.hatena.ne.jp/1320754201#a1116376
    が似ているので、さんこうになるのでは?
  • id:rogotaro
    kenさん。フォーム自体もGETにすべきと言うことですか??POSTの値をGETではおくれないんでしょうか??
  • id:windofjuly
    うぃんど 2011/11/09 22:31:05
    回答中の「すでにコメント受けているはず」というのはken3memoさんではなく
    tdoiさんやmunyaXさんほか過去の質問にコメントしてくださっていた方々です
     
    ken3memoさんのコメントは21:08:51
    私の回答は21:10:32
     
    この時間帯の質問ページの表示や、
    回答投稿(確認画面も含む)は30秒以上かかることもあるので、
    コメントを読んでから1分40秒で文章を作って投稿するなんてことは無理なんですよ(苦笑)
     
    さて、
    >POSTの値をGETではおくれないんでしょうか??
     
    何を言ってるんでしょうか?
    あなたはPOSTとGETの違いは知っていると、
    下記のコメント欄で言っておられたではありませんか?
    http://q.hatena.ne.jp/1320752816
     
    POSTとGETの違いはURLに続けて書くかどうかだけではなくて、
    その仕組みが根本的に違うのですよ
     
    質問文のままでは、
    1.htmlがPOSTでデータを送っているのに、
    2.php内で$_GET['pid']で値を受け取ろうとしているから何も受け取れない
    以前の質問では
    2.php内で$_POST['pid']で値を受け取っていたので1.htmlからのPOSTは受け取れたが、
    2.phpのAタグはGETで送信しているから$_POST['pid']では受け取れなかった

    チグハグだったということです
    だから、GETに統一しましょうって回答しているんです
     
    繰り返しますが、
    ken3memoさんとは偶然同じようなタイミングになっただけで無関係です
  • id:ken3memo
    同じタイミングで、同じようなことを書いたので、
    混乱されたかもしれませんが、
    少し落ち着いて、過去の質問を見直してみては?
    .
    チャットやTwitterと違って、次から次へ思ったことを書き込まないで、1つ問題が解決するまでは質問のやり取りを続けたほうがいいのでは?と思います。
    (チャットやTwitterで質疑応答の良さもわかりますが、ここは QAサイトなので。)

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません