0

「UserID」というセッション変数に従って、PHPで(HTMLアップロードボタンをクリックして)ディレクトリを作成する方法を考えていました。

これは私がやろうとしたことです:

    <?php
    include("login.php");

?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

    <title>FileStore - Upload Files</title>
    <link rel="stylesheet" href="./CSS/style.css" type="text/css" media="screen, projection" />
</head>

<body>

<div id="wrapper">

    <header id="header">


    <div id="header-content">
        <strong><h1>FileStore</h1></strong> Upload multiple files at once!
    </div>

    <div class="login-info" >

    <?php



    if ($isLoggedin === false) {
        echo '  <form action="" method="POST">
                    Username: <input name="username" > 
                    Password: <input type="password" name="password" size="8">
                              <input type="submit" name="submit" value="Login">
                </form>';
        echo "<p align='right'>You are not logged in.</p>";
        echo "<b><a href='registration.php'>Register</a></b>";


    }else{  
        echo $welcomeMsg;
    }   
?>

    </div>


    </header><!-- #header-->

    <section id="middle" align="center">

        <div id="container">

        <br><br>
            <div id="content">
                <strong><h1>Upload files</h1></strong><br><br>

                <div id="upload-file" >

                <?php 


                    include("dbConfig.php");

                    $Username = $_SESSION["username"];


                    //$Password = $_SESSION["password"];

                    $Password = md5($Password);

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

                    $result = mysql_query($sql) or die(mysql_error());

                    while($row = mysql_fetch_assoc($result)) {

                            $userid = $row['UserID'];

                    }


                    echo $userid;

                    $dirname = $userid;

                    $filename = ("/folder/" . "$dirname" . "/");

                    if (!file_exists($filename))

                    {

                                mkdir("files/'$userid'", 0777);

                    } else {


                    if (isset($_FILES['files'])) {

                        echo "<div id='files_table'><table class='center'.><tr><td>";



                                foreach($_FILES['files']['tmp_name'] as $key => $tmp_name){

                                move_uploaded_file($tmp_name, "files/'".$userid."'{$_FILES['files']['name'][$key]}");

                                echo $_FILES['files']['name'][$key], " uploaded.", "<br>";


                        }
                        echo "</td></tr></table></div><br><br>";
                        }




                    }




                        if (isset($_FILES['files'])) {

                        echo "<div id='files_table'><table class='center'.><tr><td>";



                                foreach($_FILES['files']['tmp_name'] as $key => $tmp_name){

                                move_uploaded_file($tmp_name, "files/'".$userid."'{$_FILES['files']['name'][$key]}");

                                echo $_FILES['files']['name'][$key], " uploaded.", "<br>";


                        }
                        echo "</td></tr></table></div><br><br>";
                        }

                ?>
                    <form action="" method="post" enctype="multipart/form-data">

                            <h1> Select files to upload:</h1>
                            <br>
                            <p>
                                <input type="file" name ="files[]" multiple min="1" /> 
                                <input type="submit" value="Upload" />
                            </p>
                            <br>
                            <h2> You can select multiple files for upload. </h2>

                    </form>

        </div>

            </div><!-- #content-->
        </div><!-- #container-->

        <aside id="sideLeft">

            <div id="menu-x" align="center"><br>
            <strong>Menu</strong><br><br>

                    <div class="menu">
                        <ul>
                        <li><a href="index.php">Home</a></li>
                        <li><a href="upload.php">Upload</a></li>
                        <li><a href="files.php">Files</a></li>
                        <li><a href="about.php">About</a></li>
                        <li><a href="help.php">Help</a></li>
                        <li><a href="#">Logout</a></li>
                        </ul>
                        <br style="clear:left"/>
                    </div>

            </div>


        </aside><!-- #sideLeft -->

    </section><!-- #middle-->

    <footer id="footer">
        <strong>FileStore:</strong> A CMT 3315 Project by Brian Livori
    </footer><!-- #footer -->

</div><!-- #wrapper -->

</body>
</html>

これは動作しません。次のエラー メッセージが表示されます。

注意: 未定義の変数: C:\xampp\htdocs\Task2PHP\final\upload.php の 70 行目のパスワード

注意: 未定義の変数: C:\xampp\htdocs\Task2PHP\final\upload.php の 83 行目の userid

注意: 未定義の変数: C:\xampp\htdocs\Task2PHP\final\upload.php の 85 行目の userid

注意: 未定義の変数: C:\xampp\htdocs\Task2PHP\final\upload.php の 93 行目の userid

警告: mkdir(): C:\xampp\htdocs\Task2PHP\final\upload.php 行 93 にファイルが存在します

どのように私はそれを行うことができますか?

4

1 に答える 1

0

セキュリティに関する質問の下のコメントとは別に:

  1. $userid設定されていません。これは、クエリが行を返さなかったことを意味します。ユーザーが見つからないというシナリオを含め、すべてのデータベース呼び出し (PDO / mysqli に変更する必要があります) にエラー処理を追加する必要があります。
  2. ディレクトリを確認した/folder/" . "$dirname" . "/"後、 direcory を生成しようとしました"files/'$userid'""/folder/$userid"それは、またはそれ以上の一貫性があるはず"/folder/'$dirname'"です。
  3. /folderファイルシステムのルートにあるフォルダーにファイルを保存したいとは思わないので、それを確認する必要があります。
于 2012-12-29T16:47:15.590 に答える