0

'uploads'ディレクトリ内にある.phpファイルを呼び出して、ファイルシステムから削除します。検索する必要のあるディレクトリは、常に「uploads / $ _SESSION['email']」内にあります。これは私が現在持っているものです:

<?php

session_start();

require('../mysqli_connect.php'); 


    $old = getcwd(); // Save the current directory
    $new = './'.$_SESSION['email'];
    chdir($new);

    $delpaths = "SELECT `title` FROM `upload` WHERE `upload_id` IN ({$id_array}) AND `owner_id` =". $_SESSION['user_id'];
    $getpaths = mysqli_query($dbc, $delpaths);
    while ($row = mysqli_fetch_array($getpaths, MYSQLI_ASSOC))
    {
        chown($row, 666);

function removeupload() {
$todelete = $row;
unlink($todelete);
chdir($old); 

}

    }


?>
4

2 に答える 2

2

ここにいくつかの問題があります...最初は、$ rowが配列として返されるため、$ rowを呼び出すだけでは、目的の結果が得られません(これは、ファイルの名前であると想定しています)。 'データベースに保存されているものを削除しようとしています)。$rowは次のように変更する必要があります。

chown($row['column_name'], 666); // Where column_name is the name of the file you're trying to delete

2つ目は、関数に何も渡されないことです。正しく実行されるようにいくつかの変数を渡すことができるように書き直す必要があります。$filenameと$oldを追加します。

function removeupload($filename, $old) {
    unlink($filename);
    chdir($old); 
}    

最後に、whileループの外側、通常はページの先頭でこの関数を定義し、目的の効果を実現したいときに呼び出す必要があります。

最終的なコードは次のようになります。

<?php
    //Start the session
    session_start();

    //Include the connection script
    require('../mysqli_connect.php'); 

    //Build the file deletion function
    function removeupload($filename, $old) {
        unlink($filename);
        chdir($old); 
    }  

    $old = getcwd(); // Save the current directory
    $new = './'.$_SESSION['email'];
    chdir($new);

    $delpaths = "SELECT `title` FROM `upload` WHERE `upload_id` IN ({$id_array}) AND `owner_id` =". $_SESSION['user_id'];
    $getpaths = mysqli_query($dbc, $delpaths);

    while ($row = mysqli_fetch_array($getpaths, MYSQLI_ASSOC)) {
        chown($row['column_name'], 666); //This $row column holds the file name, whatever you've called it in your database.

        //Now call the function and pass the variables to it
        removeupload($row['column_name'], $old);

    }

?>
于 2012-08-08T19:44:49.203 に答える
1
<?php

session_start();

require('../mysqli_connect.php'); 

function removeupload($row , $old){
    $todelete = $row;
    unlink($todelete);
    chdir($old);
}

    $old = getcwd(); // Save the current directory
    $new = './'.$_SESSION['email'];
    chdir($new);

    $delpaths = "SELECT `title` FROM `upload` WHERE `upload_id` IN ({$id_array}) AND `owner_id` =". $_SESSION['user_id'];
    $getpaths = mysqli_query($dbc, $delpaths);
    while ($row = mysqli_fetch_array($getpaths, MYSQLI_ASSOC))
    {
        chown($row, 666);
        removeupload($row['title'] , $old);
    }
?>
于 2012-08-08T19:40:29.203 に答える