• ベストアンサー

F5で直前の動作が・・・

PHPのSmartyを用いてWebサイトを作成しています。 F5を押下すると直前に行っていた動作をもう一度行われてしまい、 直前の機能によってはバグが発生します。 (たとえば「./test」内のファイルを検索した結果を表示した後に、 F5を押下すると「./test/test」を探しにいってしまい、そんなディレクトリはない!とwarningが出ます) F5を押下した場合はリロードされDB情報の更新を確認しにいくだけで、 直前の動作を行わせないようにしたいのですが 良い方法はありますでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • _chihiro_
  • ベストアンサー率63% (26/41)
回答No.1

ソース内でパスの指定を相対パスにしていませんか? ブラウザの仕様でF5(更新)すると、フォームなどのPOSTやGETの値をもう一回送ってきます。 おそらく絶対パスに書き直せば、現象は収まるかと思うのですが、、、(ソースを見ていないので何ともいえませんけど) F5(更新)して同じプログラムを起動させないようにするには、フォーム内のhidden属性に現在のタイムスタンプなどを入れて、プログラムが呼ばれる際にそのタイムスタンプを比較して処理を実行する、しないなどと分岐させる必要があります。

blwapl
質問者

お礼

なるほど、POST,GETをもう一度送るのですか・・・・。 それがわかれば、対処法はあると思います。 どうもありがとうございましたm(_ _)m

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 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 線は光です) 以上、説明の足りない部分があると思いますが よろしくお願いします

  • xserver Smarty PHP+MySQL

    xserver Smarty PHP+MySQL xserver(レンタルサーバー)でSmartyのtplが読み込まれません。 Xserver(レンタルサーバー)環境 MySQL5 バージョン:5.0.77 MySQL5 ホスト名:xxx.xserver.jp PHP Version 5.3.3 include_path .:/usr/share/php53/pear :/usr/share/php Xserver PHP関連の仕様一覧 PEARインストール済み <インストール済みライブラリ> ・Archive_Tar ・Auth ・Console_Getopt ・DB ・HTML_Common ・HTML_QuickForm ・HTTP ・HTTP_Header ・HTTP_Download ・Mail ・Net_SMTP ・Net_Socket ・Pager ・PEAR ・XML_Parser ・XML_RPC ・Structures_Grap データベースは同じくXserverに設置されているphpmyadmin(MySQL5)で作成しました。 /xxx.xsrv.jp/内に 【php_libs】   [config]     ・config.inc.php   [module]     ・build_screen.inc.php     ・menu.inc.php     ・MYDB.inc.php     ・sub.inc.php       [smarty]     ・cache     ・configs     ・libs     ・templates     ・templates_c 【public_html(DocumentRoot)】   ・testsmarty.php   ・testsmarty.tpl を置いています。 以下のコードでエラーがでます。 Warning: Smarty error: unable to read resource: "testsmarty.tpl" in /home/xxx/xxx.xsrv.jp/php_libs/smarty/libs/Smarty.class.php on line 1088 どこが間違っているのか教えて下さい。 ●testsmarty.php <?php $documentroot = dirname( __FILE__) . '/'; require_once $documentroot . '../php_libs/config/config.inc.php'; require_once( _SMARTY_LIBS_DIR . "Smarty.class.php"); $smarty = new Smarty; $smarty->template_dir = _SMARTY_TEMPLATES_DIR; $smarty->compile_dir = _SMARTY_TEMPLATES_C_DIR; $smarty->config_dir = _SMARTY_CONFIG_DIR; $smarty->cache_dir = _SMARTY_CACHE_DIR; $smarty->assign("title", "タイトル名"); $file = 'testsmarty.tpl'; $smarty->display($file); ?> ●testsmarty.tpl {$title} ●config.inc.php <?php //---------------------------------------------------- // デバッグ表示 true / デバッグ表示オフfalse //---------------------------------------------------- // define("_DEBUG_MODE", true); define("_DEBUG_MODE", false); //---------------------------------------------------- // データベース関連 //---------------------------------------------------- define("_DB_USER", "xxx_sample"); define("_DB_PASS", "password"); define("_DB_HOST", "tcp+xxx.xserver.jp"); define("_DB_NAME", "xxx_sampledb"); define("_DB_TYPE", "mysqli"); define("_DSN", _DB_TYPE . '://' . _DB_USER . ':' . _DB_PASS . '@' . _DB_HOST . '/' . _DB_NAME); //---------------------------------------------------- // 認証関連 //---------------------------------------------------- // 会員認証に使うテーブル名 define("_DB_MEMBER_TB", "m_member"); // 管理者認証に使うテーブル名 define("_DB_SYSTEM_TB", "m_system"); // ユーザー名を格納するカラム名 define("_DB_USERNAMECOL", "username"); // パスワードを格納するカラム名 define("_DB_PASSWORDCOL", "password"); //---------------------------------------------------- // 会員・管理者 処理分岐用 //---------------------------------------------------- // 会員用フラッグ define("_MEMBER_FLG", false); // 管理者フラッグ define("_SYSTEM_FLG", true); //---------------------------------------------------- // セッション名 //---------------------------------------------------- // 会員用セッション名 define("_MEMBER_SESSNAME", "PHPSESSION_MEMBER"); // 管理者用セッション名 define("_SYSTEM_SESSNAME", "PHPSESSION_SYSTEM"); //---------------------------------------------------- // ファイル設置ディレクトリ //---------------------------------------------------- //$smarty->○○○を使わない場合下記で表示されました。 define( "_PHP_LIBS_DIR", "/home/xxx/xxx.xsrv.jp/php_libs/"); // 設定ファイル define( "_CONFIG_DIR", _PHP_LIBS_DIR . "config/"); // 機能ファイル define( "_MODULE_DIR", _PHP_LIBS_DIR . "module/"); //---------------------------------------------------- // Smarty関連設定 //---------------------------------------------------- // Smartyのlibsディレクトリ define( "_SMARTY_LIBS_DIR", _PHP_LIBS_DIR . "smarty/libs/"); // Smartyのテンプレートファイルを保存したディレクトリ define( "_SMARTY_TEMPLATES_DIR", _PHP_LIBS_DIR . "smarty/templates/"); // Smartyのlibsディレクトリ Webサーバから書き込めるようにします。、 define( "_SMARTY_TEMPLATES_C_DIR", _PHP_LIBS_DIR . "smarty/templates_c/"); // Smartyのlibsディレクトリ define( "_SMARTY_CONFIG_DIR", _PHP_LIBS_DIR . "smarty/configs/"); // Smartyのlibsディレクトリ Webサーバから書き込めるようにします。、 define( "_SMARTY_CACHE_DIR", _PHP_LIBS_DIR . "smarty/cache/"); ?>

    • 締切済み
    • PHP
  • apacheの動作が…

    DocumentRoot /var/www/html にした場合PHPの実行ができずに403エラー /var/www/testにするとindex.phpは見えるのだが、 それ以下のディレクトリの参照ができない と、いう症状で困っています。 <Directory>を書いてみたり色々してはいるのですが、対処できそうもありません。 ここでは?と思う所があればご助言お願いいたします。 ちなみにFedora+apache2+php5です。 test以下に置いた時index.phpは動作してるので、そこら辺ではないのだと思いますが・・・

  • Smarty3のリソース・プラグイン

    Smarty3のリソース・プラグインについて Smarty3(3.0.9)でリソース・プラグインを行うと以下エラーが出力され、データベース内のテンプレートを呼び出すことができません。 Uncaught exception 'SmartyException' with message 'Unable to load template db 'test.tpl'' in /usr/local/lib/php/smarty/sysplugins/smarty_internal_template.php:165 Stack trace: #0 /usr/local/lib/php/smarty/sysplugins/smarty_internal_template.php(554): Smarty_Internal_Template->isExisting(true) #1 /usr/local/lib/php/smarty/Smarty.class.php(340): Smarty_Internal_Template->getRenderedTemplate() #2 /usr/local/lib/php/smarty/Smarty.class.php(384): Smarty->fetch('test.tpl', NULL, NULL, NULL, true) #3 /usr/local/apache2/htdocs/test.php(18): Smarty->display('test.tpl') #4 {main} thrown in /usr/local/lib/php/smarty/sysplugins/smarty_internal_template.php on line 165 同様のプログラムでSmarty2*で実行するとうまく表示します。 Smarty3のマニュアル(英語版)を見てもうまくいきません。。 ご存知の方、ぜひ教えてください。 (環境) OS:Debian 6.0.1 WebServer:Apache2.2.19 PHP:PHP5.3.6 MySQL:MySQL5.0.87 (プラグイン) <?php require('DB.php'); define("DB_FILE","mysqli://*****:*****@localhost/*****"); function smarty_resource_db_source ($name, &$source, $o_smarty) { $db = DB::connect(DB_FILE); $stt = $db->prepare("SELECT source FROM templates WHERE name =?"); $rs = $db->execute($stt,array($name)); if(is_null($row=$rs->fetchRow(DB_FETCHMODE_ASSOC))){ return FALSE; }else{ $source=$row["source"]; return TRUE; } } function smarty_resource_db_timestamp($name, &$modified, $o_smarty) { $db = DB::connect(DB_FILE); $stt = $db->prepare("SELECT * FROM templates WHERE name =?"); $rs = $db->execute($stt,array($name)); if(is_null($row=$rs->fetchRow(DB_FETCHMODE_ASSOC))){ return FALSE; }else{ $modified=$row["modified"]; return TRUE; } } function smarty_resource_db_secure($name, $o_smarty) { // 全てのテンプレートがセキュアであると仮定します return true; } function smarty_resource_db_trusted($name, $o_smarty) { // テンプレートから使用しません } ?> (呼び出しファイル) <?php set_include_path('/usr/local/lib/php/smarty/:' . get_include_path()); @include('Smarty.class.php'); $o_smarty = new Smarty(); // Smartyのテンプレートのキャッシュファイル格納先を指定 $o_smarty->compile_dir = "/usr/local/apache2/htdocs/template_c"; $o_smarty->plugins_dir[]="/usr/local/apache2/htdocs/plugin"; $o_smarty->default_resource_type="db"; // phpスクリプトからテンプレートリソースを使用します $o_smarty->display("test.tpl"); ?> (データベース) CREATE TABLE templates ( name VARCHAR(100) NOT NULL default '', modified TIMESTAMP, source TEXT, PRIMARY KEY (name) ) DEFAULT CHARACTER SET utf8; -- Dumping data for table 'templates' INSERT INTO templates VALUES('test.tpl', "2010-12-25 22:00:00", '{$x="hello world"}{$x}');

    • 締切済み
    • PHP
  • h:commandButtonのアクション

    現在jsf Beanを使ったwebアプリを書いています。 h:commandoButtonで定義したテストボタンを押下後 ページのリロードを行うと 情報の再送信を求めるダイアログが表示されます。 ここで「はい」を選ぶとテストボタン押下の処理が再び勝手に走ります。 テストボタン押下前にはリロードしても何も動作はしません。 もしかして初歩的な所で間違っているかも知れませんが お気づきの点有りましたらお教え下さい。 以下がサンプルプログラムと動作時の流れです。 ◎test.jsp----------------------------------- <%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%> <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%> (中略) <body> <f:view> <h:form>  <h:commandButton action="#{test.action}" value="テスト"/></h:form> </f:view> </body> </html> ◎test.jsp----------------------------------- ※test は スコープをsessionで実装した管理Beanで下記 Test.java。 ◎Test.java----------------------------------- public class Test {  public Test(){  }  public String action() {   System.out.println("アクション");   return "action";  } } ◎Test.java ここまで ------------------------------------- ページ表示  ↓ テストボタン押下  ↓ アクションと表示  ↓ ページのリロードを行う  ↓ 情報の再送信を求めるダイアログで「はい」を選択  ↓ テストボタンを押していないのにアクションと表示される。 ページ表示  ↓ ページのリロードを行う  ↓ 情報の再送信を求めるダイアログで「はい」を選択  ↓ 異常なし

    • ベストアンサー
    • Java
  • php my adminで編集していたところ下記のエラーが出てしまいま

    php my adminで編集していたところ下記のエラーが出てしまいましたが、原因がわかりません。わかる方教えていただければと思います。 Warning: main(./libraries/db_info.inc.php): failed to open stream: No such file or directory in /var/www/html/africanforest/public_html/phpMyAdmin/db_structure.php on line 32 Warning: main(./libraries/db_info.inc.php): failed to open stream: No such file or directory in /var/www/html/africanforest/public_html/phpMyAdmin/db_structure.php on line 32 Fatal error: main(): Failed opening required './libraries/db_info.inc.php' (include_path='.:/usr/share/pear:/usr/share/smarty') in /var/www/html/africanforest/public_html/phpMyAdmin/db_structure.php on line 32

  • Smartyのテンプレート

    PHPの初心者です。 ただいまSmartyを使って開発しております。 で、Smartyが動作していることは 確認できているのですが *.tplファイルを更新しても templates_cのコンパイル済みphpを 更新してくれないので困っております。 どこかでautoloadのような設定箇所があるのでしょうか? 初歩的な質問で申し訳ありませんが よろしくお願いいたします。 PHP :php-5.0.5 Smarty:Smarty-2.6.10 OS :Windows XP

    • ベストアンサー
    • PHP
  • tplを読みに行けません。

    PHP+smartyを学んでいます。 Apache2-htdocs-taro-hanako.php とファイルを置き、一方、 Apache2-php_libs-smarty の下に -libs/ (中にSmarty.class.php あり) と -templates/ (中にtest.tpl あり)を並列的におきました。 hanako.php に、 require_once "../../php_libs/smarty/libs/Smarty.class.php"; $smarty = new Smarty; $smarty->templete_dir = "../../php_libs/smarty/templates";   $smarty->compile_dir = "../../php_libs/smarty/templates_c"; $smarty->cache_dir = "../../php_libs/smarty/cache"; 以下省略・・・ と書いてブラウザで開くと、次のエラーが出て、tpl を読み込むことが出来ません。 Warning: Smarty error: unable to read resource: "test.tpl" in C:\Program Files\Apache Group\Apache2\php_libs\smarty\libs\Smarty.class.php on line 1088 どこを間違えているのでしょうか。

    • ベストアンサー
    • PHP
  • SMARTYの設置に関して

    お世話になっております。題名にある「SMARTYの設置に関して」質問させて頂きます。 色々と調べ、現在、SMARTYをDLしたものを解凍しPHPディレクトリ内に設置(libsディレクトリ内にある各ファイルは、SMARTYディレクトリ直下に移動)し、php.iniのinclude_pathも下記のように設定しました。 .;c:\php\includes;c:\php\PEAR;c:\php\Smarty が、各サイトで紹介されているファイルを確認してみても期待しているような表示が出てきません。 以上、きちんとインストール(および設定)が出来ていないのかな?と不安になり質問させていただいた次第ですが、動作確認をする方法をお教えいただければ幸いに思っております。 お忙しい中恐縮ですが、宜しくお願い申し上げます。

    • 締切済み
    • PHP
  • さくらレンタルサーバでのsmartyの設定

    プログラム初心者なのですが、以下教えて頂けないでしょうか。 さくらレンタル(スタンダード)にsmartyを設置を試みているのですが、エラーメッセージが出てしまいます。 環境:PHP 5.2.6 / Smarty 2.6.19 /home/(アカウント)/www/libs/smartyの直下にSmarty.class.php以下、公式サイトからダウンロードしたものをそのままアップし、/home/アカウント/www/smartytest/helloの直下に以下のファイルをアップしました。 (index.php) <?php define('SMARTY_DIR','/home/アカウント/www/libs/smarty/'); define('SMARTY_TEST','/home/アカウント/www/smartysample/hello/'); require_once(SMARTY_DIR.'Smarty.class.php'); $smarty = new Smarty; $smarty->template_dir = SMARTY_TEST.'templates/'; $smarty->compile_dir = SMARTY_TEST.'templates_c/'; $smarty->config_dir = SMARTY_TEST.'configs/'; $smarty->cache_dir = SMARTY_TEST.'cache/'; $smarty->assign('msg','Hello World!'); $smarty->display('index.tpl'); ?> そして、このindex.phpにアクセスすると、下記のようなエラーメッセージが表示されます。 Warning: Smarty::require_once(/home/アカウント/www/libs/smarty/internals/core.write_compiled_resource.php) [smarty.require-once]: failed to open stream: No such file or directory in /home/アカウント/www/libs/smarty/Smarty.class.php on line 1429 Fatal error: Smarty::require_once() [function.require]: Failed opening required '/home/アカウント/www/libs/smarty/internals/core.write_compiled_resource.php' (include_path='.:/usr/local/php-5.2.6/lib/php') in /home/アカウント/www/libs/smarty/Smarty.class.php on line 1429 Smarty.class.phpの1429行目に問題があるのかとファイルを開いてみたものの、初心者のためよく理解できません。あと、Smarty.class.phpを呼び出すのに絶対パスを指定しているのは、さくらの管理画面からphp.iniでinclude_pathを指定しようとしても、うまくいかなかったためです(上記の場合、$smarty = new Smarty;を削除すれば、エラー画面は表示されません。変わりに何も表示されませんが・・)。 初心者のため、基本的なところで見落としがあるのかもしれませんが、教えて頂ければと思います。どうか、宜しくお願いします。

    • 締切済み
    • PHP