[PHP-users 9221] Re: ファイルアップロードの後の有効期限切れ

Kojiro Imamura php-users@php.gr.jp
Wed, 7 Aug 2002 19:40:30 +0900


こんばんは。今村です。

自己レスをさせて頂きます。

> 1.PHPで、HTMLの<input type="file">を使用し、画像ファイルを
>   サーバへアップロードする。
> 2.画像ファイルを、受け取り、確認のために、そのアップロードされた
>   画像をブラウザに表示する。
> 3.2の確認画面で、OKボタンをクリックすると、画像ファイル名をDBへ
>   登録し、画像ファイル自体は、アップロードしたフォルダとは別の
>   フォルダへコピーし、完了画面を表示する。
> 4.もし、DBへの登録に失敗したり、画像ファイルのコピーに失敗した
>   場合、エラー画面を表示し確認画面へ戻る。このエラー画面には、
>   戻るボタンを設けてあるが、JavaScriptのhistory.back()を使用している。
> 5.このエラー画面で、戻るボタンをクリックすると、有効期限切れ
>   が発生。また、完了画面で、ブラウザの戻るボタンをクリック
>   しても、有効期限切れが発生。
> 6.エラー画面のhistory.back()を単なるリンクにし、必要な値を
>   Submitするというやり方でも良いのだが、ユーザーがブラウザの
>   戻るボタンを使用しないとは、言い切れないので、リンクをするという
>   やり方でなく、history.back()の方で、対処したい。

ファイルアップロード後に有効期限切れが出てしまう。という現象は、
ブラウザの仕様ということで、その現象自体を回避することは、現在、
私が作成しているプログラムでは、難しいため、有効期限切れを
起こさないようにするというのは諦め、妥協策を取る事にしました。

その妥協策とは、元々私の作っているプログラムは、<input type="file">
がある「入力画面」、その入力画面からSubmitで開かれる「確認画面」、
DB等に登録に行く「完了画面」の3つから成り立っており、完了画面で
エラーが発生した場合、エラー画面を表示し、history.back()で確認画面
へ戻る。という物でした。
それで、何が問題になってくるかというと、エラー画面でhistory.back()をし、
確認画面へ戻ると有効期限切れが出てしまうということで、よくよく考えて
みると、別に、確認画面へ戻る必要は無く、入力画面まで戻ってしまえばよい。
と言うことに気が付きました。
なので、エラー画面の戻るボタンをhistory.back()から、history.go(-2)に
変更、入力画面へ戻るようにし、有効期限切れを表示しないようにしました。
それでも、ブラウザの戻るボタンを使用されると、有効期限切れが出て
しまいますが、これは、「そういう仕様です」と言い張ることにしました。

というわけで、一応解決しました。
ご教授くださいました皆様、どうも有難うございました。

########################################
   今村 幸治郎
   E-Mail:imamura@buddy.co.jp
########################################