[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 メーリングリストの案内