2017-05-03 9 views
0

これは私がやろうとしていることです: PHPファイルからCSS、JS、HTMLファイルを取得できるようにしようとしています。 PHPファイルを作成し、ファイルの型を必要な型に設定します。例:jsファイルの場合は、text/javascriptに型を設定します。型をtext/cssに設定します。doc型btwページタイプ、 。私はそれが何と呼ばれているのかわかりませんが、技術的にはHTMLでもファイルタイプとしてブラウザに解釈させたいと思います。
それは、ファイル名とファイルタイプを取得するには、私が選んだ$_GET['name'] (Name in the query string)と​​を使用して、私はいくつかのコード..
PHPで任意のファイルタイプをリクエストして読み込みます

<?php 
if (isset($_GET['name'])) { 
    if (isset($_GET['type'])) { 
     if ($_GET['type'] === 'javascript') { 
      header('Content-type: text/javascript; charset: UTF-8'); 
      $file = $_GET['name'].'.js'; 
      $execjs = file_get_contents($file); 
     } 
    } elseif ($_GET['type'] === 'css') { 
     header('Content-type: text/css; charset: UTF-8'); 
     $file = $_GET['name'].'.css'; 
     $execcss = file_get_contents($file); 
    } 
} if ($execjs === 'false') { 
    echo 'js 404'; 
} elseif ($execcss === 'false') { 
    echo 'css404'; 
} 
?> 

を入力したが、これは2ファイルタイプのために動作しません、私も作りたいですそれは普遍的な、それは私がこれを行うのは難しいかもしれことを理解 js, css, php, html, xml, png, ico, jpg
EXほぼすべてのファイルタイプを、読むことができるので、私はちょうど私が何のようなものについては、ファイル

+0

[here](https://stackoverflow.com/questions/4966045/how-to-get-mime-type-of-a-file-to-be-downloaded)に記載されているように、finfo_fileを使用する必要があります。 – mblaner

答えて

1

を構築する上で軌道に乗るためにいくつかのスターターコードが必要になります。

<?php 

$name = $_GET['name']; 
$type = $_GET['type']; 
if (!isset($name)) { 
    die(); 
} 
if (!isset($type)) { 
    die(); 
} 
switch ($type) { 
    case "javascript": 
    $header = 'Content-type: text/javascript; charset: UTF-8'; 
    $file = $name.'.js'; 
    break; 
    case "css": 
    $header = 'Content-type: text/css; charset: UTF-8'; 
    $file = $name.'.css'; 
    break; 
    case "php": 
    $header = 'Content-type: text/html; charset: UTF-8'; 
    $file = $name.'.html'; 
    break; 
} 
$execfile = file_get_contents($file); 
if ($execfile === false) { 
    header('Content-type: text/html; charset: UTF-8'); 
    echo $type.' 404'; 
} else { 
    header($header); 
    echo $execfile; 
} 
?> 
+0

これはほとんどの場合、変数の宣言の後にいくつかの構文エラーがあります。$ name = $ _GET ['name'] '
この文字列の最後にセミコロン(;)がなければトリガーされますエラー。
と 'if(!isset($ name){'で、あなたが開いているのと同じくらい多くの括弧を閉じなければなりません) 'if(!isset($ name **)**){'
私はサーバファイルが見つからない場合は指定された404が返されますが、ファイルの内容は表示されません。404がある場合にヘッダータイプを 'text/html'に戻すことができますか? –

+0

@Donovan_Dを参照してください'if($ execfile === false){'の後ろに 'header( 'Content-type:text/html; charset:UTF-8')'の中で少し更新された後に更新されたコード – supajason

+0

は、これの末尾にセミコリンとなるようにし、CSSヘッダに 'text/javascript'と書かれています。これは' text/css'にする必要があります(申し訳ありません)ファイルが今。 –

関連する問題