重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

Webアプリを開発しています。
セキュリティを含め、いろいろな問題の対処で、最初にログインしたら
windowのサイズ指定のメニューバー無し、アドレスバー無しで
window.openし、その上で全ての画面遷移&処理を行うようにしました。

が、画面の中で、右上の「×」ボタンが押されるとサーバ上に
仮で作成したファイルが残ってしまう場合があります。
システムの仕様上、必要なファイルで「保存」などの別ボタンクリックで本登録になり、その時に仮登録を削除しています。
(当然、画面上に作成した「戻る」や「終了」ボタンクリック時も対処はしています)

「×」ボタンの制御をネットで検索して、onbeforeunload() という関数を入れてみました。
ブラウザにより、clienrXの値が、正になったり負になったりするようで、それらの判断ではなく
幸い(?)、
動いているwindowは自分で指定していてサイズの変更はできないようにしているため
body.clientWidthの値がわかることと、
「×」をされては困るのはある一部の画面のときのみなので、その画面作成(cgi return)のときのみ
Bodyタグに onbeforeunload=="Keikoku()"などと入れて、

function Keikoku( )
{
if( document.body.clientWidth==900 )
alert("!!!");  <-- たとえば
}
}

など、せめて警告だけでもしたいのですが、
  (本来は仮ファイルがあったら削除する処理を埋め込みたいのですが・・・)
この方法は、有効とお思いでしょうか?

組み込んだほうがいいのか(方法として合っているのか)どうか 判断がつきかねています。

よろしくお願いします。

A 回答 (2件)

#1さんと被りますがPCのシャットダウンやら回線断やら、希望する手続きを踏まずに中断される可能性はいろいろあるのでやはりサーバ側での対応は必須です。



ついでに、
>セキュリティを含め、いろいろな問題の対処で
>window.openし、その上で全ての画面遷移&処理
こういうのはキケンです。ブラウザってのはクライアント上にあるのでいくらでも加工や不正が可能です。
クライアント側に頼らずサーバ側できちんと対処するべきです。
(Javascriptはより便利にするのにはいいけど、セキュリティ対策とかに使うものじゃぁないと思いますよ)
    • good
    • 0
この回答へのお礼

steel_grayさん、ありがとうございます。

もう4年くらい動いているシステムなんですが、
最近、あるマニアックな方が、mhtファイルで保存し、ちょっと問題がおきたのです。
知識不足でした。
で、暫定(?)としてメニューを消すのと、ショートカットキーを制御する方法を入れているところです。

一応社内ネットワークの中で動いているシステムで、
その方々に
イレギュラーな使い方は日常茶飯事でしているよって言われました。
Webはいろいろな裏技があるし、そういう方々だと、
キー制御することはますます好奇心をあおってしまうかもしれません。^^;


開発当初にそれらも考慮できていればよかったのですが
期間と価格の問題で・・・できませんでした。

サーバ側での対応も検討したいと思います。

ありがとうございました。

お礼日時:2010/06/03 12:12

消せなかったファイルはたぶんそのまま残ってしまうのですよね?


残ったファイルのタイムスタンプをみて、cronなどで定期的に削除する仕組みにすればいいのでは?
おそらくバツボタンだけじゃなくて、画面遷移中にPCシャットダウンしても、おなじことがおこるのではと思います。

これは好みかもしれませrんがfunction の関数名の先頭が大文字なのが気持ち悪いです。
    • good
    • 0
この回答へのお礼

junbiokさん、ありがとうございます。

自分で書いておきながら、うまく動きませんでした。
(ひとつだけ、画面遷移するボタンがあって、そのときも警告が出てしまう・・・)

確率的には少ないですが、別clientから
同じ仮ファイル名を使用する場合があり、残ってた仮ファイルを参照してしまうのを防ぎたかったのですが
仮ファイル名がシステム的にユニークにはできなかった(別端末から同一IDでログインOK)のです。
かなり、設計的にまずいんですが、今の時点では直すことはできなくて・・・。
今のところ、そういう使い方をする人はでていないので・・・助かっていますが。

タイムスタンプを見て、過去に作成した仮ファイルなら削除する・・・としても微妙ですよね。
(他端末での正当なファイルを消してしまう?)

やっぱり無理ですかね。。。
Webのアプリって難しいですね。

※関数名の先頭大文字のご指摘、知りませんでした!
以後気をつけたいと思います!ありがとうございました。

お礼日時:2010/06/03 11:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!