1

サーバーにファイルパスを送信し、phpを使用して各行を配列に解析し、配列をクライアントに返して処理を行うコードを作成しようとしています。

プログラムを実行すると、テスト目的で入力したエコーが呼び出されないため、phpファイルを処理しているようには見えません。

私はPHPについてまったく何も知らないので、助けていただければ幸いです。

Jquery:

$("#codelines").load('ParsePHPForDisplay.php?filename=DBManager.php');

    console.log($('#codelines'));
    pieces = $("#codelines").html().split("\n");

PHP:

<?php

class Parsing
{
    function ParseStuff()
    {
        echo('hi');
        $parsedFile = file($_REQUEST['filename']);
        echo($_REQUEST['filename']);
//        foreach ($parsedFile as $parsedFile_num => $parsedFile) {
//            echo"Line #<b>{$parsedFile_num}</b> : " .htmlspecialchars($parsedFile) . "<br/>\n";
//        }
        return $parsedFile;
    }
}

?>

私のHTMLの一部:

<section id="codestuff">
    <h2>Code Lines</h2>
    <pre id="codelines">
    </pre>
</section>

編集:

これが私のPHPです。

<?php


        echo('hi');
        $parsedFile = file($_REQUEST['filename']);
        echo('test');
        echo($_REQUEST['filename']);
//        foreach ($parsedFile as $parsedFile_num => $parsedFile) {
//            echo"Line #<b>{$parsedFile_num}</b> : " .htmlspecialchars($parsedFile) . "<br/>\n";
//        }
        return $parsedFile;



?>

このエラーが発生します:

解析エラー:構文エラー、予期しないT_STRING、5行目のParsePHPForDisplay.phpにT_FUNCTIONが必要です。

4

2 に答える 2

1

了解しました。Javascript部分でファイルを配列に分割しているので、使用する必要があるPHPは次のとおりです。

<?php
  $file = file_get_contents($_REQUEST['filename']);
  echo $file;
?>

ただし、これを公開する前に、ユーザーが他のディレクトリからファイルを読み込んだり、ファイル名に../を使用したり、phpファイルをフェッチしたりしないなどのセキュリティの問題を確認する必要があります。

于 2013-02-25T00:02:54.890 に答える
0

ファイルを配列に解析するためにPHPが必要な理由がわかりません...全体を大きな文字列として送信するだけで、必要に応じてJavascriptで行の配列に分割できますサーバーから取得したら(例myString.split(/\n\r|\n|\r))。

次に、PHPから、次のことを実行できます。

readfile($_REQUEST['filename']); exit;

(これは安全ではないことに注意してください。たとえば、特定のディレクトリからのみファイルを出力できるように、PHPコードにいくつかの条件を追加する必要があります。区切り文字としてexplode使用してファイル名を配列に分割するのに役立つPHPの関数を参照してください)。DIRECTORY_SEPARATOR

PHPでは、returnステートメントによって何も出力されないことに注意してください。多くの場合、値を指定する関数を介して必要な値を取得しますが、returnそれでも必要な値を取得する必要がありechoますprint

于 2013-02-24T23:53:17.107 に答える