• 締切済み

リロードの防止法

PHPとmysqlで簡単なwebを作成しています。 F5等で再読み込みを行うと、 各SQLも実行されてしまうので困っています。 ある程度のものは時間を判断して、 その時間以内には 「再読み込みできない」というページに リダイレクトさせる事で回避できました。 マスタ管理画面などにはどいういった処理を書いて リロードを防止すればよいか悩んでいます。 分かる方、教えてください。

  • kaiu
  • お礼率70% (194/274)
  • PHP
  • 回答数2
  • ありがとう数3

みんなの回答

  • awazak
  • ベストアンサー率36% (61/165)
回答No.2

MYSQL処理を行うほかのページをつくり、 ------------------------------ header(Location:xxxxxxxxxx) ------------------------------- で元のページにもどしましょう。 処理を行うページは、if や switch など使って分岐させます。

回答No.1

リロードは本当に困りますよね。 参照系はSQLを実行されても困らないので、更新系のリロードを防止したいという前提で書きます。 リロードを防止する方法はいくつか考えられます。 ようはサブミットされたことがわかれば良いので、セッション変数にサブミットされたことを記録するのが簡単でいいんじゃないですかね。 たとえば、フォームを表示するときに $ses_submitted = false; とかやっといて、 action 先のPHPで以下のような処理すればいいんじゃないでしょうか。 if ($ses_submitted) { // 更新済み } else { // 更新処理 $ses_submitted = true; }

kaiu
質問者

お礼

回答ありがとうございます。 上記と似たやり方も試しましたがうまくいかず javascriptを使ったり(結局クライアントでロック 掛けるだけなのでサーバ側で2回実行されてしまったのですが・・・) クッキーも使おうと思ってましたがどうも もっと簡単な方法はないのかと・・・。 明日セッション変数使用で書いてみます。 また報告させて頂きます。 ありがとうございます。

関連するQ&A

  • mysqlへの書き込みがリロードする度に行われてしまう。

    現在PHPとMYSQLを使ってサイトを作っています。 そこで、テーブルの追加をinsert文を使って実行し、 追加されたテーブルをselect文で表示させるということをやっています。 現在はhoge.htmlでフォーム側を記載し、hogehoge.phpで受け取り、データを追加、表示させるようにしています。 登録作業の方は問題なく実行されるのですが、 登録されたデータがhogehoge.phpをリロードする度に永遠と同じデータが追加され続けてしまう現象がおきています。(auto_incrementに指定しているidだけがかわる) データを登録し終わると次にリロードしてもデータが追加されないようにするにはどのようにすればよいのでしょうか。 ご教授御願いいたします。

  • ◆5秒後に別サイトへリロード

    FLASH超初心者です。 phpで簡単なゲームを作成しています。 例:りんごは英語で何といいますか? 1.apple 2.orenge 3.パス パスは選択も可能ですが、質問を5秒以内に答えないと強制的に画面をリロードさせてもいます。 そこで、ブラウザ上にタイマーもつけたいと思い、簡単なFLASHを作成しようと考えています。 アクションスクリプトはどのようになるのかご存知の方はいらっしゃいますか? 例えば、5秒後に指定URLへリダイレクトさせたい! 宜しくお願いします。

  • F5対策 sql発行ページにて

    turbolinux server10 php4 mysql5.0.18 にて コミュニティーサイトを構築しています sqlを発行しているページをリロード(F5長押し)すると CPU使用率が跳ね上がります 質問内容は 「sql発行ページにてF5リロードにも絶える方法は?」です よろしくお願いします cpu使用率というのはTOPコマンドで表示させながら F5長押しすると、cpu(s)の左端「us」部分の数値が100%になります user部分には「apache」が並びます 出来るだけ単純にして テストもしました test.phpを用意 このphpは 1.DB接続 2.あるtblのカウントを取得(15,000件) 3.取得結果を表示 4.DB切断 このtest.phpをリロードしても結果は同じです 今の設定では リロードすると 1.apacheは表示させようとする 2.mysqlがsql発行 3.まだsql結果が返ってこないのに、apacheは表示させようとする   ・   ・   ・ と待ち行列が発生していると思っています さて、このF5リロードしても大丈夫なWEBシステムに修正するには 1.SQLが重いから待っているだけ!これで問題なし   ⇒sqlを見直して軽くすることに勤めろ! 2.○○の設定で回避できるよ! 3.マシン性能が云々・・・ のどれでしょうか? 私は2番の答えを希望しています 理由:1は限界です・・・多少のチューニングは可能ですが    もう無理かも    3は予算がありません・・・ただ、マシン性能という問題では    ない気がします(P4-3.0 M-1G 線は光です) 以上、説明の足りない部分があると思いますが よろしくお願いします

  • mysql_queryの処理速度が遅い

    PHP+MySQLでプログラミングをしているのですが、実行時にmysql_queryの処理に時間がかかっています。状況は以下の通りです。 ・処理時間を計測するとmysql_queryの実行に15秒程度かかっています。 ・Webminで直接同じSQL文を実行すると1秒程度で終わります。 ・SQLのコマンドは単純なUPDATEです。 ・indexは設定してあります。 ・DBに格納してあるレコード数は数100件程度です。 ・optimizeは実行してみましたが、あまり効果はありませんでした。 お聞きしたいのはWebminで実行すると1秒程度で終わるSQL文がmysql_queryで実行すると、なぜ時間がかかるのかということです。 mysql_queryで時間がかかる原因およびmysql_queryの処理時間を短縮する方法などがあれば教えてください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • カラムに設定した日付が24時間以内かの確認方法

    SQLに関して質問させて頂きます(MySQLを使用しています)。 下記のようなデータを使用して、賞味期限に設定した日付が、24時間以内にせまったレコードの危険フラグを1にしたい場合、どのようなSQLを記述すれば良いでしょうか? SQLの実行は1回でも2回に分けてもらってもよいので、効率的な方法があればよろしくお願いします。 ※必要であればPHPを使用して下さい。 <カラム> |商品名|賞味期限|危険フラグ| <例> | 魚  | 2013-07-31 21:30:00 | 0 | | 肉  | 2013-08-01 21:00:00 | 0 | | 野菜 | 2013-08-02 21:30:00 | 0 | SQLを実行した時の時刻が「2013-07-31 19:00:00」であれば、肉の賞味期限が24時間以内に迫っているので、危険フラグを1にしたいと考えています。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • php上でSQL文を実行した結果と、phpMyAdminで実行した結果が違う

    ☆実行環境 php5.3 MySQL4.0 $sql="SELECT * FROM テーブル名 WHERE フィールド名 like '".$変数."%'" php上で上記のようなSQL文を実行させようとしています。 テーブルには該当する行がいくつかあるのですが、ページ上では1行も表示してくれません。 mysql_num_rowsの返り値を見ると0になっています。 SQL文の組み立てがおかしいのかと思い、phpMyAdmin上でSQL文を実行すると、 きちんと欲しい内容が表示されます。 とするとphpでのSQL文の書き方がおかしいのだと思います。 どこかおかしいのかご教授ください。

    • ベストアンサー
    • PHP
  • 変数に格納できる最大サイズは?

    PHPとMySQLを使ってWEBシステムを構築中なのですが、検索のクエリを実行すると以下のエラーが発生しました。 [Unable to save result set in ファイル名] PHP:$ret=mysql_query($sql); 昨日までは同じSQL文で正常に実行できていました。 いろいろと調べてみたのですが、明確な答えが見つかりませんでした。 どなたか分かる方、ご教授お願い致します。 ちなみに検索結果は80万件以上あります。 70万件までは正常に処理できていました。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • SQLの実行時間を測定するには?

    MySQL5.0でMySQL Monitor(コマンドライン)からSQLを実行して、SQLの勉強をしています。 SQLの書き方によって実行時間にどのような影響があるのか知りたいのですが、実行時間の計測方法がわかりません。 ご存知の方がいらっしゃいましたら教えてください。 よろしくお願いします。

  • PHP+mysqlでSQL文に文字数制限はありますか?

    基本的な質問で申し訳ありません。 $sql="......";にSQL文を書き $rst = mysql_query($sql,$con); $col = mysql_fetch_array($rst); として($conはmysql_connect関数の結果です) WEBを作成しているのですが、ある程度以上長いSQL文を書くと正常に作動しません。(短いSQLであれば正常に差作動します。)  当然SQL文自体もmysqlで直接実行すると作動するものです。SQL文自体がUNIONや副問い合わせを多用し250行程度になってしまったためかと考えていますが、文字数制限等があるのでしょうか?PHPには変数宣言が無いと認識しているのでどう対処して良いかわかりません。 SQLを分解できないとすると何か良い方法はありますでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPからMySQLに接続はできるが、Sql操作ができない

    PHPからMySQLを使おうとしているのですが、 SQLクエリでの操作に対する反応がなく、困っています。 mysql_select_db()でtrueが返ってきているので、 DBにはアクセス出来ているようなのですが、 mysql_query()を実行しても何も返らず、エラーも出ません。 SQLに間違いはなく、あってもエラーがでるはずだったと思うのですが… 何かお分かりのことが御座いましたら、ご協力お願いいたします。

    • ベストアンサー
    • MySQL

専門家に質問してみよう