0

そのため、Web サーバーの簡単な管理者ページに取り組んでいます。ディレクトリ/ファイルを一覧表示し、ディレクトリを変更/ファイルを編集できるシンプルなファイルマネージャーを作成しようとしています。しかし、私はいくつかの問題を抱えています。私の最初の問題は、ファイルとフォルダーを表示するだけで、それらを区別しないことです。フォルダーの前に / を付けて、管理者がファイルではなくフォルダーであることを認識できるようにします。また、ディレクトリを変更しようとすると問題が発生します。任意のディレクトリに変更すると、機能しません。これが私の現在のコードです:

<?php
echo '
<form name="read" method="POST">
Directory: <input type="text" name="read" />
<input type="submit" value="Go" />
</form>';
$maindir = "/home/amartin/public_html";
$no = "No access";
$dir = $_POST['read'];
if($dir == "/")
{
  echo $no;
  die();
}
elseif($dir == "/home")
{
  echo $no;
  die();
}
elseif($dir == "/home/")
{
  echo $no;
  die();
}
elseif($dir == "/home/amartin")
{
  echo $no;
  die();
}
elseif($dir == "/home/amartin/")
{
  echo $no;
  die();
}
else {
  $dir = $maindir;
}
echo "Viewing directory: " . $dir;
$folders = scandir($dir);
chdir($dir);
foreach($folders as $ind_file)
{
echo $ind_file.'<br/>';
}
?>
4

1 に答える 1

0

is_dir関数を使用して、パスがディレクトリを指しているかどうかを確認できます。

また、正規表現を使用してチェックを簡単にすることもできます。

if (preg_match('~/home(/amartin)?/?~', $dir))

getcwd()で現在の作業ディレクトリを確認し、chdir で変更できます。ディレクトリを変更するときに相対パスを使用していますか?

于 2011-02-15T20:49:41.040 に答える