[PHP-users 19084]Re: 複数のフォーム(ページ)間でデーターを引き継ぐには?

NAKAMURA Takeshi 1yen @ sh.rim.or.jp
2003年 11月 25日 (火) 15:38:11 JST


仲村といいます

On Tue, 25 Nov 2003 14:27:32 +0900,
 "ケン" <gautyo @ aioros.ocn.ne.jp> wrote:
>> 自分なら仮テーブルを作成しそこに保存。
>> 最終確認ページにて本テーブルへデータ移行。
>> で対応します。

> これはデータベースを使ってのことでしょうか
> 今回特にデータベースは使う事は無く
> 最終的にはCSVに出力をする予定ですが
> やはりこのデータ量では難しいでしょうか?
> 各ページのデータも一度テンポラリファイルなどを作り
> 読み込んだ方が堅いのでしょうか?

 PHPのセッション機能はデフォルトでテンポラリファイルを作成
(設定次第でデータベースへデータを格納も可能) そのセッション内であれば
自動的に変数へ展開してくれます。
 なので、
1ページ目に飛ぶ前の画面で session_start(); $_SESSION['page']=1;
1〜5ページ目で

session_start();
if (!isset($_SESSION['page'])) {
  echo "タイムアウトしました。頑張って最初から入力し直しましょう。";
  トップページへリンク
}
if ($_SESSION['page'] == ページ) {
  ++$_SESSION['page'];
}else{
  変なところからリンクされたときの処理
  exit;
}

として、php.ini の session.gc_probability を 100 に
すれば大丈夫ではないかと。
(アクセスの多い所では負荷が高くなるので、別の方法をおすすめします。)
 *.php.het の日本語マニュアルが読めないようなので...
 http://www.1x1.jp/php/manual/ref.session.html


>  よくテキストフィールドの”HIDDEN”属性で値を持ちまわるという記述を見ますが
> PHPではフォームの値は変数で受け取れるので
> この値を画面が切り替わっても変わっても
> 保持し続ければ壁が越えられると思うのですが・・
 私の理解ではそれを実現する方法を、セッションといいます。
 session_start() して、 $_SESSION['名前'] に変数を代入すると
変数を持ち回ることができる。
 セッションを終わるときに session_destroy() で、セッション終了の印を付けておく。

 印を付けておくと PHPスクリプトが呼ばれるたびに session.gc_probability の確率で
セッションのデータを消してくれる。(消されるまでは、データが残っているので
直リンを打たれるとデータが丸見えになります...セッションハイジャック?)


> まだまだいろいろと勉強しなてはなりません(;^_^A
 わたしも勉強しなくちゃいけないけません。
 このマニュアルは、新しい方法と古い方法が両方説明されていて
かなり混乱しました。$_SESSION と、session_register()を併用して訳わからん事に...
 新しい方法と古い方法の併記ではなく、上半分で 新しい方法(session_start,
$_SESSIONを使う方法)下側で session_register() を使う方法と
別々に説明する事はできないでしょうか。移行する人は併記でも良いと
思うのですが、始めての人には読みにくいと思います > 英語マニュアルを書いた人...ってここで言っても仕方ないけど
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+
 関西沖縄青年の集い がじまるの会 手伝い 一人だけの勝手に神奈川支部
 仲村 武 <1yen @ sh.rim.or.jp>


PHP-users メーリングリストの案内