アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。

先日、デザイナーと全てのサイト及びフォーム関連を完全にテンプレート化しようという
話になり、Smartyを導入しフォーム関連に取り掛かっていたところ、テンプレートファイルの
内容を書き換えてリロードしても最新の内容がブラウザへ反映されませんでした。

PHPファイルをサーバへ上書きアップロードをすると最新の内容が反映されます。
しかし、デザイナーからしてみると細部の調整等を行う際にその都度PHPファイルも
アップロードするのが非常に面倒くさいので、テンプレートファイルのみをアップした
タイミングで最新の内容が反映する方法を1週間ほど調べてみたのですが、
上手く行かずに難儀しております。

この現象が発生するのは、セッションを使用したフォーム関連のページのみです。
「 templates_c 」ディレクトリのキャッシュファイルを削除しても変更されません。
Smartyの設定自体はデフォルトのままです。「 caching 」も0のままで、特に変更は
しておりません。

検証を手順として説明させていただくと、

1、テンプレートファイルのHTMLソースを変更してアップロード。

2、ブラウザで確認すると、変化無し。

3、「 templates_c 」のキャッシュファイルは更新されていて、中身を確認すると正常にコンパイルされている。

4、大元のPHPファイルを上書きアップロードしてブラウザをリロードすると、HTMLソースの変更内容が正常に反映される。

以上の事から、PHPのスクリプトに問題があるのかと思いましたので、勝手ながらスクリプトの
大まかな内容を記載させていただきます。

--- ■ ココから-------------------------------------------

// セッションの開始
session_cache_limiter("public");
session_start();

require("Smarty.class.php");

define("DEF_ACT", "entry"); // 初期アクセスしたページ
define("MAIL_TO", "アカウント@ドメイン"); // 送信先
define("subject", "テスト送信"); // 件名

// Smartyを走らせる
$smarty = new Smarty();
$smarty->template_dir = "./templates";
$smarty->compile_dir = "./templates_c";

// データをPOSTメソッドで
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$param = cnv_formstr($_POST);
}

// 各ページの判別処理を行い
$act = isset($param["act"]) ? $param["act"] : DEF_ACT;
$screen_function_name = "screen_" . $act;
if (!function_exists($screen_function_name)) {
exit();
}
call_user_func($screen_function_name, $param);
$temp_name = $act . ".html";

// テンプレートを表示する
$smarty->assign("url", $_SERVER["PHP_SELF"]);
$smarty->display($temp_name);

// =========================================================
// 入力画面( 初期アクセスしたページ )
// =========================================================
function screen_entry($param) {

~ 処理内容 ~

return TRUE;
}

// =========================================================
// 確認画面( 入力チェックが通った場合 )
// =========================================================
function screen_conf($param) {
global $smarty;

~ 処理内容 ~

return TRUE;
}

// =========================================================
// 送信完了画面
// =========================================================
function screen_submit($param) {
global $smarty;

~ 処理内容 ~

return TRUE;
}

// =========================================================
// 入力データチェック( 未入力等があった場合 )
// =========================================================
function screen_data($param) {
global $smarty;

~ 処理内容 ~

}

// =========================================================
// 配列を一括変換する
// =========================================================
function cnv_formstr($array) {

~ 処理内容 ~

}

--- ■ ココまで-------------------------------------------

PHPのバージョンは、5.3.3です。
因みにこのスクリプトでは、データベースは使用しておりません。

同様の経験をされて解決された方がおられましたら、ご教示の程
どうぞよろしくお願い申し上げます。

A 回答 (1件)

ご質問斜め読みしかしてませんが。



session_cache_limiter("public");

が犯人では?

テンプレートと同時にPHPを入れ替えないと反映されないとか聞いたことないっす。

多分 ブラウザが以前のキャッシュ使ってるだけだと思うっす。
    • good
    • 0
この回答へのお礼

早速ご回答をいただき、ありがとうございます。

session_cache_limiter("public");

が犯人でした。。。

ここ数日、様々な検証をしている中でsession_cache_limiter関数を
はずして検証・・・という事もやってみたのですが、
何故か上手くいかないなという感じでしたが、勘違いしていたようです。

無事ブラウザへは、大元のPHPファイルをUPしなくても
テンプレートの変更内容が反映されました。

session_cache_limiter関数は、全ての実装が完了した後に最後に
移植する方向で考えます。

本当にありがとうございました。非常に助かりました。

お礼日時:2013/09/02 17:25

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