2

全て。

私の質問は、DOCTYPE セクションにユニバーサル php テンプレートを追加しようとしたときに発生した問題に関するものです。私の DOCTYPE インクルード (適切なタイトルは doctype.php) は /template ディレクトリ内にあり、すべてのページからアクセスできるようにしたい CSS および JS ファイルを指す呼び出しも含まれています。

したがって、これらのファイル (CSS および JS ファイル) への絶対パスを書き込もうとすると、問題が発生します。現在、私は試しています:

<script type="text/javascript" src="<?php echo $_SERVER['DOCUMENT_ROOT'] . '/file/extension/to/javascript/file.js'; ?>"></script>

<link rel="stylesheet" type="text/css" href="<?php echo $_SERVER['DOCUMENT_ROOT'] . 'file/extension/to/css/file.css'; ?>"

ローカルホストで WAMP を介してアプリケーションを実行しています。ソースコードを見ると、リンクが適切なファイル (c:/wamp/www/examplesite/path/to/file/file.ext) を指しているように見え、すべて問題ないはずです。そうではありません...

JavaScript にアクセスできず、スタイルシートが機能していません。私は何をすべきか途方に暮れています。

私も試しました: -PHPを使用せずに絶対パスを書く -PHP変数を作成してドキュメントルートを保持し、適切なディレクトリパスを連結してファイルにアクセスします。

助言がありますか?また、ディレクトリ構造をオンライン サーバーと現在のローカルホストにアップロードすると、これはどのように変化しますか?

4

4 に答える 4

5

代わりに $_SERVER['HTTP_REFERER'] を試してみてください。それはあなたが探している道を提供します。

WAMP を使用するローカル マシンでは、WAMP<?php print_r($_SERVER); ?>が与える値を確認していました。

また、スニペットにはいくつかのタイプミスがあるかもしれません。たとえば、最初の例では先頭の / は必要ありません。

例えば:

<script type="text/javascript" src="<?php echo $_SERVER['HTTP_REFERER'] . 'file/extension/to/javascript/file.js'; ?>"></script>
<link rel="stylesheet" type="text/css" href="<?php echo $_SERVER['HTTP_REFERER'] . 'file/extension/to/css/file.css'; ?>"></link>

または、HTTP_REFERER が信頼できない場合があるため、絶対パスのベース部分を構築する関数を作成することもできます。

<?php
function getAddress() {
    $protocol = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https' : 'http';
    $filenamepattern = '/'.basename(__FILE__).'/';
    return $protocol.'://'.$_SERVER['HTTP_HOST'].preg_replace($filenamepattern,"",$_SERVER['REQUEST_URI']);
 } 
?>

次に、次のように呼び出します。

<script type="text/javascript" src="<?php echo getAddress() . 'file/extension/to/javascript/file.js'; ?>"></script>
<link rel="stylesheet" type="text/css" href="<?php echo getAddress() . 'file/extension/to/css/file.css'; ?>"></link>
于 2012-04-03T23:11:13.840 に答える
2

URL (例: http://localhost/some/path/to/ ) を使用する必要があるときに、ファイル パス (例: C:\some\path\to\file) を使用してローカル マシン上のファイルを指しています。ファイル)。HTML はクライアントのブラウザによって解析されるため、URL ではないパスにアクセスしようとしてもアクセスできません。

$_SERVER['DOCUMENT_ROOT'] を使用する代わりに、次のような絶対 URL を使用できます。

<script type="text/javascript" src="/path/to/my/file.js"></script>

ここで、「/path」フォルダーはベース Web ディレクトリです。または、doctype.php ファイルを含める現在のディレクトリに基づいて、相対 URL を使用できます。追跡するのは面倒なので、後者はやらないことをお勧めします。

相対 URL を使用する場合、ディレクトリ構造が同じであれば、コードを新しいホストに移動するときに問題はありません。

于 2012-04-03T23:11:33.680 に答える
1

もちろん、あらゆる種類のリソース (JS、CSS、画像など) には http(s) リクエストを介してアクセスする必要があるため、絶対パスで直接アクセスすることはできません。このようなアプローチのセキュリティへの影響を考えてみてください。そのため、常に Web ルート ディレクトリに相対的な Web パスを使用する必要があります。

例えば:

<script type="text/javascript" src="http://localhost/myproject/media/ja/file.js"></script>
于 2012-04-03T23:10:06.287 に答える
0

ページにファイルを含める方法が間違っています。代わりに HTTP URL を使用する必要があります。

<script type="text/javascript" src="/file/extension/to/javascript/file.js"></script>

または、ホスト名で変数を使用したい場合:

<script type="text/javascript" src="http://<?php echo $_SERVER['HTTP_HOST']; ?>/file/extension/to/javascript/file.js"></script>
于 2012-04-03T23:13:39.003 に答える