• ベストアンサー

POSTへのデータの引渡方法は?

a.php: <?php $x='ok'; header('Location:b.php?x='.$x); exit; ?> b.php: <?=$_GET['x']?> によって$xのデータをa.phpからb.phpに送ることができますが$xが日本語の長文である場合に備えて $_GET['x']でなくて$_POST['x']にa.phpからb.phpに$xのデータを渡したいのですがどうすればできるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

クッキーはクライアント側に情報を保存、 セッションはサーバーに情報を保存。 この事からも大量のデータを保存しても大丈夫だとは思います。 どの程度の大量なデータなのか判らないし私自身、大量なデータをセッションで使わないので(汗 (私の場合はセッションは基本的な情報、以降は基本的な情報をもとにDBから情報を取り出します。 製作するプログラムの機能にもよりますが可能な限り楽した方が良いですね) 極端な例:ショッピングカート 1.商品の情報を(値段を含めて)全てセッションに格納 2.商品番号のみセッションに格納、以降は商品番号をもとにDBから該当商品の情報取り出し ↑で言ったら2の方法の方がスマートだと思います。 さっきも言ったようにプログラムの内容次第です、どんなプログラムかによって仕様は大きく変わります。 セッションはセッションIDと同一名のファイルがサーバに作られます、 一定時間に不必要なファイルは削除されますがリアルタイムで削除される訳ではありません。(可能だったはず) 当然、データの量が多くなればサーバに負荷をかける事になると思います。 少人数なら問題ないと思いますが大人数なら負荷もその分大きくなるのでできるだけその辺りも考えた方が良いです。 頑張って下さい(^-^)b

その他の回答 (3)

回答No.3

>submitボタンを押さずに$_POST['x']に入れなければならないのですができるでしょうか? この返答を忘れていましたね(汗 formを使わずにPOSTを利用しなければならない局面が判らないのですが…… 擬似的にsubmitボタンをボタンじゃないように見せる事は可能です。 それこそただリンクしているかのような文字リンクに。 それはCSSで可能です、inputにclassなりidつけてボーダーを0に、背景色もHTMLに合わせれば… かなり無理矢理ですが擬似的には文字リンクのように見せれます。 他にはJavaScriptを使えば可能かもしれませんがJavaScriptは専門外なので判りませんm(_ _)m

guuman
質問者

お礼

ありがとうございます JavaScriptは対応していないブラウザを排除するので止めたほうがいいですね 結局非クッキーセッションが使えそうです

回答No.2

POSTはformを使用して可能になります(多分そのはず) それ以外の方法ではCookieやSESSIONを使うのが一般的でしょう。 【a.php】 <?php setcookie("cookie","クッキーを使用。"); session_start(); $_SESSION[session] = "セッションを使用。"; ?> <a href="b.php">確認</a> 【b.php】 <?php session_start(); echo $_COOKIE[cookie]; echo $_SESSION[session]; ?> 重要な情報をクッキーに含めるのは危険です、 また、セッションはクッキーが使えない場合はセッションIDをGETやPOSTで各ページ引き継がなければいけません。 あとsession_start();を使わなければセッションは扱えないのでクッキーの方が簡単に使えます。 こんな感じで大丈夫ですか?

guuman
質問者

補足

ありがとうございます クッキーは使えないブラウザもあるので使わないので非クッキーセッションを使うことになります セッションは多数大量のデータを保存しても問題ないのでしょうか?

回答No.1

【a.php】 <form action="b.php" method="post"> <input type=hidden name="x" value="日本語"> <input type="submit" value="送信"> </form> 【b.php】 <?php echo htmlspecialchars($_POST['x']); ?> これで出来ます。 サニタイズはすべきです、必要に応じてセキュリティ処理して下さい。 例はあくまでも必要最低限の例です。 あとGETで日本語扱う場合はURLエンコードする必要があります、 GETは簡単なパラメータの受け渡しで使うに留めた方が良いでしょう。 こんな感じで大丈夫ですか?

guuman
質問者

補足

ありがとうございます submitボタンを押さずに$_POST['x']に入れなければならないのですができるでしょうか?

関連するQ&A