2016-03-30 4 views
0

私のsvnから、ローカルディスク上のドキュメントに保存されているファイルをダウンロードしました。これらのファイルのほとんどはPHPファイルです。私のローカルディスク上にあるドキュメント(それは "txt"ではない)を読み込み、phpを使用するWebサイト上で開くことができます。だから、これまでのところ、これはローカルディスクからファイルを読み込みます。

のindex.php

<script> 
$(function() { 
    $('#getData').click(function(event) { 
     event.preventDefault(); 

     $.ajax({ 
      type: "GET", 
      url: "endPoint.php", 
      data : { field2_name : $('#userInput2').val() }, 
      beforeSend: function(){ 
      } 
      , complete: function(){ 
      } 
      , success: function(html){ 
       //this will add the new comment to the `comment_part` div 
       $("#displayParse").html(html); 
       //$('[name=field1_name]').val(''); 
      } 
     }); 
    }); 
}); 

</script> 


<form id="comment_form" action="endPoint.php" method="GET"> 
    Enter the file you would like to view: 
    <input type="text" class="text_cmt" name="field2_name" id="userInput2"/> 
    <input type="submit" name="submit" value="submit" id = "getData"/> 
    <input type='hidden' name='parent_id' id='parent_id' value='0'/> 
</form> 

<div id="displayParse"> 
</div> 

endPoint.php

<?php 

$filePath = $_GET["field2_name"]; 
$url = "cs_data/home/" . $filePath; 

$file = fopen($url, "r"); 
fread($file,filesize($url)); 

echo '<div class="comment">' . $file . '</div>'; 


?> 

、私が持っているもので、基本的にユーザーが開きたいファイルを入力し、ファイルが上に配置されています私のローカルディスク。ファイルの内容が印刷されていないので、どこに間違っているのか分からず、代わりに "Resource id#3"を印刷しています。また、私はMAMPを使ってlocalhost上で自分のコードを実行しています。私が使用しているIDEはphpstormです。ファイルにアクセスするためにファイルをphpstormにロードする必要があるかどうかわかりません。

答えて

1

$ fileはファイルリソースです。それを印刷するのではなく、戻り値fread()、つまりファイルの内容を印刷します。
しかし、HTMLの構造を壊すようなものが含まれている可能性があるので(おそらくこれも)、ファイルの「生の」内容を送信したくない場合もあります。非常に少なくとも
、あなたはまた、highlight_file()に興味があるかもしれませんhtmlspecialchars()

<?php 
$filePath = $_GET["field2_name"]; 

// you really should add more security checks here 
// just imagine a request like field2_name=../../../etc/something.txt 
$url = "cs_data/home/" . $filePath; 

$contents = file_get_contents($url); 
echo '<div class="comment">', htmlspecialchars($contents), '</div> 

を使用する必要があります。

<?php 
$filePath = $_GET["field2_name"]; 

// you really should add more security checks here 
// just imagine a request like field2_name=../../../etc/something.txt 
$url = "cs_data/home/" . $filePath; 

echo '<div class="comment">'; 
highlight_file($url, false); 
echo '</div>'; 
+0

実際には空になっています。私はそれが正しいと思ったが、それを間違ってテストした。私は問題はファイルがどのようにアクセスされているのかと思います。 phpstormからローカルディスクからアクセスできると思いますか?それとも、ファイルをphpstormに転送してそこから呼び出すべきだと思いますか? –

+0

ブラウザはhttpサーバにリクエストを送信します。 PHPスクリプトは、そのサーバ(マシン)上で実行されます。したがって、PHPスクリプト(原則として)は、サーバマシンがアクセスできるファイルにのみアクセスできます。 – VolkerK

2

のfreadはあなたが興味のある文字列を返しますので、あなたはのコンテンツを取得していませんファイル、何が行われているのは基本的にはファイルのPHPリファレンスのプリントです! 試してみてください:

$filecontent = fread($file,filesize($url)); 

echo '<div class="comment">' . $filecontent . '</div>'; 
+0

ありがとうございます!私はそれを逃したとは信じられない! –

関連する問題