ユーザーのアップロードスペースを表すフォルダーを含む「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**
誰かが私を助けて、これを修正する方法を教えてもらえますか?