PHPで、Smartyを利用した場合、「.tpl」という拡張子が使われると思います。


「.php」は、サーバーで動いていればコードが第三者に見られることは基本的に無いと思います。

では、「.tpl」は、コードが第三者に見られてしまうものなのでしょうか?

初心者的な質問で申し訳ありませんが、詳しい方、ぜひ教えていただけないでしょうか?

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2008/07/28 19:50:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:tek_koc No.1

回答回数67ベストアンサー獲得回数2

ポイント20pt

詳しくはないのですが、試しに以前作ったプログラムのtplファイルに直接アクセスしてみたところ、普通にダウンロードできてしまいました。( http://cosmos.dojin.com/niconewchecker/templates/temp.tpl )

隠蔽できるかまではわかりませんが、特別対策をしていない場合は第三者に見られてしまうようです。

id:comcom9

ありがとうございます。

そうですか。そのままだと、見れてしまいそうですね。

参考になりました。

他にもご意見のある方がいましたら、回答のほど、よろしくお願い致します。

2008/07/21 20:35:02
id:ele_dir No.2

回答回数263ベストアンサー獲得回数20

ポイント20pt

サーバの設定がどのようになっているかで違います。

例えば、ブラウザから、index.phpでは正常でも、index.tplへアクセスした場合、正常に表示されれば問題ないですが、ダウンロードなどの画面になった場合、第三者に見られてしまいます。

その場合、.htaccessへ下記の様に記述すれば良いかと思います。

AddHandler cgi-script .tpl

id:comcom9

ありがとうございます。

.htaccessで制御ですか。参考になります!

他にもご意見のある方がいましたら、回答のほど、よろしくお願い致します。

2008/07/21 20:35:38
id:pahoo No.3

回答回数5960ベストアンサー獲得回数633

ポイント20pt

拡張子 php や tpl が見られてしまうかどうかという問題は、Webサーバの設定次第です。

たとえば Apache であれば、httpd.conf または .htaccess に

AddType application/x-httpd-php .php

という設定があれば、拡張子 .php のファイルを PHP スクリプトとしてとして実行します。逆に、この指定がなければ、クライアントからスクリプトを盗み見られてしまいます。


Smartyのテンプレートについては、PHP のように、Webサーバが公開するフォルダに置く必要はありません。フォルダを非公開にしたり、パーミッションの設定で外部から見られないようにしておくのが普通です。


参考サイト

id:comcom9

ありがとうございます!

なるほどですね。とても詳しい方の回答、参考になりました!

他にもご意見のある方がいましたら、回答のほど、よろしくお願い致します。

2008/07/21 20:36:55
id:mahata No.4

回答回数1ベストアンサー獲得回数0

ポイント20pt

Webサーバの設定によります。

基本的に.tplなどのテンプレートファイルはユーザに公開するものではないので、見えないようにしておく方が好ましいです。その場合、例えばApacheでは:

  • htdocsの下に.tplを置かない
  • .tplのファイル属性を変更する
  • .htaccessなどで.tplファイルにアクセスさせない

などという方法があります。

最も簡単なのは「htdocsの下に.tplを置かない」という方法だと思います。

id:comcom9

ありがとうございます。

複数の方法があるのですね。参考になります!

他にもご意見のある方がいましたら、回答のほど、よろしくお願い致します。

2008/07/21 20:57:11
id:a_suenami No.5

回答回数20ベストアンサー獲得回数2

ポイント20pt

前の回答者の方にほとんど答えられてしまっている通り、公開ディレクトリにはテンプレートファイル等は置かないのが普通です。

 

Smartyオブジェクトの$template_dirプロパティや$compile_dirプロパティがデフォルトでは、'./templates'や'./templates_c'になっているので、きちんと意識しておかないと公開ディレクトリに設置してしまうハメになります。

これらのプロパティ値はすべてのページで共通なはずなので、モジュール化してincludeするようにしたほうがいいかと思います。

 

以下、ディレクトリ構造の例です。

/         ← Webアプリケーションのルート

 webapp/

  templates/

  templates_c/

 htdocs/     ← 公開ディレクトリ

  index.php

  images/

id:comcom9

ありがとうございます!

なるほどですね。とても参考になります!

他にもご意見のある方がいましたら、回答のほど、よろしくお願い致します。

2008/07/22 01:15:10

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません