
wantと申します。
Webアプリケーションの構成に関して質問させて頂きます。
状況を説明すると、現在 httpd.confで
DocumentRoot "/www/htdocs"
のように設定し、Webアプリケーションの構成は以下のようにしています。
/www/htdocs/site/ … PHPファイル(MVCモデルでいうCの部分)を配置
/www/htdocs/css/ … スタイルシートを配置
/www/htdocs/js/ … Javascriptファイルを配置
/www/docs/ … PHPファイル(MVCモデルでいうVの部分)を配置
/www/htdocs/site/ にある contrl.phpは、先頭で
set_include_path('../../');
を行い、プログラムの最後で、
require('docs/view.php');
とし、画面を呼んでいます。
/www/docs/ にある view.phpは、以下のようになっています。
<html>
<head>
<script language="JavaScript" src="../../js/test.js"></script>
<link href="../../css/test.css" rel="stylesheet" type="text/css">
</head>
<body>
<form name="form1" onSubmit="javascript:submitform()">
名前:<input type="text" name="fname" value="<?=$req['fname']?>" class="t01">
-(略)-
質問というのは、javascriptとcssのパス設定なんですが、
セキュリティ上、/www/js/ や /www/css/にファイルを置いて、
ブラウザからはアクセスできないようにしたいのですが、
/www/css/ のディレクトリにファイルを置いて、
正しいパスを設定しても、ファイルが正しく読み込まれません。(パーミッションは777)
それで、仕方なく/www/htdocs/js/ にファイルを置いているのですが、
この場合だと、http://localhost/js/test.js として
アクセスすると、ファイルにアクセスできてしまいます。
httpd.confで、アクセスできないようにすることも可能だとは思いますが、
/www/js/ のようにはできないのでしょうか?
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
phpの include は WEBサーバー側での処理ですので、サーバー側の何処に置いてもアクセスできると思いますが、javascriptやスタイルシートはブラウザ側での(ローカルのパソコン側での)処理ですのでブラウザがアクセスできる場所に置いていなければいけなのだと思います。
ただ、どうしても上記のような事を行いたいのなら、javascriptやスタイルシートのファイルも、phpによってHTML中にinclude してやるようにすればできると思いますが、この場合ソースは見られてしまいますので、wantedさんの目的に合うかはわかりませんが・・・。
No.2
- 回答日時:
ドキュメントルートというキーワードがあります。
httpクライアント(ブラウザ)からhttpサーバにアクセスしたときに見えるルートディレクトリで、基本的にhttpサーバ側で設定します(apacheの場合はhttpd.conf)。その設定を見れば分かりますが、document_root = /www/htdocs
という具合に、ファイルシステムのあるディレクトリ以下をWeb向けのルートディレクトリとして公開するワケです。
と、おそらくこのあたりは理解されていると思うのですが、htmlファイル(および、phpファイルの中でhtmlが記述されている部分)の中では、このドキュメントルート以下のファイル、つまり外から見えるファイルしか参照できません。
(wantさんの構成でいうと、おそらく/www/htdocsがドキュメントルートに設定されていると思うので、/www/htdocs/より下のディレクトリ・ファイルしかhtml内で参照できないことになります。)
逆に言うと、「.js」や「.css」を、一般ユーザーが見えないディレクトリに配置することは実質不可能なのです。
元々javascriptやcssは、htmlからプログラム部分・見た目部分だけを別ファイルに書き出したところから始まったので、外から見えてしまうのは当然の挙動とも言えるでしょう。
そもそも公開したくないロジック・情報をjavascriptで実装するのは、上記のjavascriptの仕様上ありえないので、別の手段を考えるべきです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【file_exists】ファイルが存在...
-
.phpと.incファイルの違いはな...
-
phpexcelでEXCELの読み込...
-
.phpファイルが、表示されない
-
phpのheader("Location:#pos")...
-
PHPのif文でその処理を途中で抜...
-
Apache 2.4でphp-5.3を使いたい...
-
phpの中でphpを書けないか
-
require_once()でファイルが読...
-
header(Location:~)で$_SESS...
-
さくらインターネットでメール...
-
フォームで戻った際に入力済み...
-
PHPでメールを受信するには?
-
php4とphp5での数値の取り扱い...
-
PEAR(Image_QRCode)のエラー
-
テレメールとは?
-
再度、xamppにおけるjpgraphの...
-
<A href ~ と一緒に値を渡すには
-
PHP版のPDFlibのインストール
-
【PHP】tmp_nameの命名規約につ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
.phpと.incファイルの違いはな...
-
【file_exists】ファイルが存在...
-
さくらレンタルサーバーでPHPが...
-
URLが.PHPってどういう...
-
.phpファイルが、表示されない
-
PHPの戻り値をWINDOWSバッチフ...
-
apache+phpにおいてリクエスト...
-
PHPを使ってのサーバ上ファイル...
-
Fatal error
-
php ホームページ初心者 入力確...
-
サーバ無しでphpを動作させる
-
PHPファイルの中身が見られるこ...
-
phpMyAdmin-5.0.4-all-language...
-
Apacheで、アクセスさせたくな...
-
他サーバーにあるファイルに書...
-
PHP内 メールアドレス 暗号化...
-
ハッスルサーバーで「Warning: ...
-
【EC-CUBE】商品CSVのダウンロ...
-
XAMPPのPHPファイルがNotFound。
-
コマンドプロンプト エラー
おすすめ情報