1

私は PHP スクリプトについてまったくの初心者なので、これらの質問はおそらくばかげた単純なものになるでしょう。ご容赦ください。

現在、サーバー内の設定フォルダーにファイルを送信するために使用したいコードがあります。

私のコードは次のようになります。

    <?

$_SESSION['directory'] = $_POST['directory'];
$uploaddir = './'.$_GET["dir"];
$file = basename($_FILES['file']['name']);
$uploadfile = $uploaddir . $file;

print_r($_FILES);

if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) {
        echo "http://ipaddress/images/{$file}/";
}
else
{
    echo "Didn't Work!!!!";
}

?>

私のコードでのこれに対する私の URL 呼び出しは次のようになります。

http://server.foo.com/folder/uploadToDirectory.php?dir=selected_folder

ただし、コードを実行すると、次の呼び出しを行った場合と同様に、ファイルはディレクトリのルートにのみ送信されます。

http://server.foo.com/folder/uploadToDirectory.php

なぜそれが起こっているのか、誰でもその理由を見ることができますか?

それに続いて、ファイルをディレクトリに保存する場合、サーバーのルートにアップロードする場合は、それとは別のスクリプトが必要です。2 つのスクリプトを 1 つに結合するにはどうすればよいでしょうか。また、既に示したようにそれらを既に使用している場合は、どのような呼び出しを行う必要があるでしょうか。

私の他のスクリプトは次のようになります。

<?

    $file = basename($_FILES['file']['name']);
    $uploadfile = $uploaddir . $file;

    print_r($_FILES);

    if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) {
            echo "http://ipaddress/images/{$file}/";
    }
    else
    {
        echo "Didn't Work!!!!";
    }

?>

注意してください、私はこれが恐ろしいやり方であることを知っています. そんなこと知ってる。しかし、これは私だけが使用するコードです。これはエンド クライアントには表示されません。ですから、私が提供したコードを手伝っていただければ、本当に感謝しています。

4

1 に答える 1

0

少なくとも、との間にディレクトリセパレータが必要だと思う$uploaddirので、$uploadfile変更してみてください:

$uploadfile = $uploaddir . $file;

$uploadfile = $uploaddir . '/' . $file;

また、任意のディレクトリにアップロードできる$uploaddirようになる可能性があるため、必ずサニタイズしてください。../../some_dirまた、拡張子が .php のファイルをアップロードすると、PHP コードをサーバーにアップロードして実行できるようになるため、これらの問題のいくつかについてお知らせください。

于 2013-09-07T18:12:38.247 に答える