[PHP-users 6831] Re: Formのデータを保持する方法

S.Okazaki php-users@php.gr.jp
Fri, 12 Apr 2002 09:30:06 +0900


おはようございます。岡崎です。

> さて、受け取った変数の内容をチェックしてエラーがあれば
> その旨を表示するのですが、再入力の為にブラウザの「戻る」
> やJavaScriptのhistory.back()では、フォームで入力されている
> データが残っていないので多量の入力がある場合、すごく
> 非能率的です。このフォームの内容を保持する方法は無いので
> しょうか。

form側で、送信した内容を、「チェックをする前に」配列に入れ
それを、session_register したらどうでしょう?

<?php
session_start();
//フォーム側
$data=$_SESSION[data];
if($data !="") {
    $str=$data[0]; $str2=$data[1] ・・・
}
print<<<EOF
<form action=$_SERVER[PHP_SELF]?mode=hoeg method=post>
<input type=text name=str1 value=\"$str1\">
<input type=text name=str2 value=\"$str2\">
・・・・・
<input type=submit value=\"送信\">

EOF;

//処理側
$str1=$_POST[str1]; $str2=$_POST[str2]; ・・・・
$data=array($str1,$str2,・・・・);
session_register("data");
エラー処理

とこんな感じです。

> 【今までにやってみた事】
> 1. session_start(); のあとに session_cache_limiter("Pablic");
> 2. フォームの全ての変数をsession_register()で登録
>  (代入は送信された後でしか出来ないが・・・)

と、同じ事を試されているようですが、上手くいきませんか?
私は上記で上手くいっていますが・・・(^^;

> 何か、解決方法がありましたらご教授の程お願いいたします。
> 
> Linux7.0J + Apache1.3.20 + PHP4.06 + Postgres7.1.2

4.0.6が正しいようです。(^^;
  ~~~
で、そうでしたら、$_SESSION は $HTTP_SESSION_VARS
$_GETは$HTTP_GET_VARSとなおして下さい。

# ちなみに変数の初期化はやらなくてもphp.ini register_globals=Onで
# あれば問題ないですが、後で苦労します(私のように(^^;)いまから
# 初期化する癖を付けていた方がいいですよ。

それでは。

/_/_/_/_/_/_/_/_/_/_/_/_/_/
Japan Human Base 
Sotaro Okazaki
Email : okazaki@jp-hb.com
/_/_/_/_/_/_/_/_/_/_/_/_/_/