「.php」は、サーバーで動いていればコードが第三者に見られることは基本的に無いと思います。
では、「.tpl」は、コードが第三者に見られてしまうものなのでしょうか?
初心者的な質問で申し訳ありませんが、詳しい方、ぜひ教えていただけないでしょうか?
詳しくはないのですが、試しに以前作ったプログラムのtplファイルに直接アクセスしてみたところ、普通にダウンロードできてしまいました。( http://cosmos.dojin.com/niconewchecker/templates/temp.tpl )
隠蔽できるかまではわかりませんが、特別対策をしていない場合は第三者に見られてしまうようです。
サーバの設定がどのようになっているかで違います。
例えば、ブラウザから、index.phpでは正常でも、index.tplへアクセスした場合、正常に表示されれば問題ないですが、ダウンロードなどの画面になった場合、第三者に見られてしまいます。
その場合、.htaccessへ下記の様に記述すれば良いかと思います。
AddHandler cgi-script .tpl
ありがとうございます。
.htaccessで制御ですか。参考になります!
他にもご意見のある方がいましたら、回答のほど、よろしくお願い致します。
拡張子 php や tpl が見られてしまうかどうかという問題は、Webサーバの設定次第です。
たとえば Apache であれば、httpd.conf または .htaccess に
AddType application/x-httpd-php .php
という設定があれば、拡張子 .php のファイルを PHP スクリプトとしてとして実行します。逆に、この指定がなければ、クライアントからスクリプトを盗み見られてしまいます。
Smartyのテンプレートについては、PHP のように、Webサーバが公開するフォルダに置く必要はありません。フォルダを非公開にしたり、パーミッションの設定で外部から見られないようにしておくのが普通です。
ありがとうございます!
なるほどですね。とても詳しい方の回答、参考になりました!
他にもご意見のある方がいましたら、回答のほど、よろしくお願い致します。
Webサーバの設定によります。
基本的に.tplなどのテンプレートファイルはユーザに公開するものではないので、見えないようにしておく方が好ましいです。その場合、例えばApacheでは:
などという方法があります。
最も簡単なのは「htdocsの下に.tplを置かない」という方法だと思います。
ありがとうございます。
複数の方法があるのですね。参考になります!
他にもご意見のある方がいましたら、回答のほど、よろしくお願い致します。
前の回答者の方にほとんど答えられてしまっている通り、公開ディレクトリにはテンプレートファイル等は置かないのが普通です。
Smartyオブジェクトの$template_dirプロパティや$compile_dirプロパティがデフォルトでは、'./templates'や'./templates_c'になっているので、きちんと意識しておかないと公開ディレクトリに設置してしまうハメになります。
これらのプロパティ値はすべてのページで共通なはずなので、モジュール化してincludeするようにしたほうがいいかと思います。
以下、ディレクトリ構造の例です。
/ ← Webアプリケーションのルート
webapp/
templates/
templates_c/
htdocs/ ← 公開ディレクトリ
index.php
images/
ありがとうございます!
なるほどですね。とても参考になります!
他にもご意見のある方がいましたら、回答のほど、よろしくお願い致します。
ありがとうございます。
そうですか。そのままだと、見れてしまいそうですね。
参考になりました。
他にもご意見のある方がいましたら、回答のほど、よろしくお願い致します。