3

ユーザーのアップロードスペースを表すフォルダーを含む「files」というディレクトリがあります。たとえばfiles/14、「14」はユーザーのUserIDです。

ファイルがアップロードされると、次のような簡単なスクリプトを作成しようとしています。

  • ユーザーのフォルダがすでに存在するかどうかを確認します
  • ユーザーフォルダが存在しない場合は、UserIDを使用して作成します。存在しない場合は、無視して続行します
  • 新しく作成されたディレクトリ(例:14)にファイルをアップロードするか、以前に作成されたユーザーディレクトリにアップロードします。

これはコードです:

<?php 
    include("dbConfig.php");
    $Username = $_SESSION["username"];
    global $userid;
    $Password = $_SESSION["password"];
    $Password = md5($Password);

    $sql = "SELECT UserID FROM users WHERE Username = '".$Username."'";

    $result = mysql_query($sql) or die(mysql_error());
    while($row = mysql_fetch_assoc($result)) {
        $userid = $row['UserID'];
    }

    $dirname =  (string)$userid;
    $filename = ("$dirname" . "/");

    if (!file_exists("../files/" .$filename)) {
        mkdir("files/$dirname", 0775);
    } else {
        if (isset($_FILES['files'])) {
            echo "<div id='files_table'><table class='center'.><tr><td>";  
            foreach($_FILES['files']['tmp_name'] as $key => $tmp_name) {
                $dest = ($filename . "{$_FILES['files']['name'][$key]}");
                move_uploaded_file($tmp_name, $dest );
                echo $_FILES['files']['name'][$key], " uploaded.", "<br>";
            }
        }
    }
?> 

ユーザーディレクトリが作成されていますが、ファイルはルートディレクトリ(../files)にアップロードされています。

また、警告は無視されないため、次のエラーが発生します。

**Warning: mkdir(): File exists in C:\xampp\htdocs\Task2PHP\final\upload.php on line 80**

誰かが私を助けて、これを修正する方法を教えてもらえますか?

4

1 に答える 1

1

両方の呼び出しに同じ構造を使用するのはどうですか?

例えば:

if (!file_exists("../files/" .$filename)) {
    mkdir("../files/" .$filename, 0775);

../files!=以降、1つのファイル/フォルダーが存在することを確認し、別のファイル/フォルダーを別の場所に作成しているようです。files/

また、navnavは正しいので、相対パスの使用をやめる必要があります。今後の問題を保証します。特に、フレームワークとURLの再書き込みを使用する場合。

于 2013-01-09T16:07:43.887 に答える