0

このスニペットは HTML ファイルに含まれています。しかし、ファイル名が 1unread.txt から 1read.txt に開かれた場合にファイル名が変更されて、読み取りのリストに含まれるようにする必要があります。

<h2>Unread</h2>
<?php 
foreach (glob("*1unread.txt") as $filename) {
    echo "<a href='$filename'>Download {$filename}</a><br>" . "\n" ;
}
?>
<h2>Read</h2>
<?php 
foreach (glob("*1read.txt") as $filename) {
    echo "<a href='$filename'>Download {$filename}</a><br>" . "\n" ;
}
?>

これでファイル名を変更できることをphp.netで読んだ場合:

bool rename ( string $oldname , string $newname [, resource $context ] )

しかし、リンクされたダウンロードが使用されている場合、どうすればこれを実現できますか? そして、変数は何をします$contextか?私はPHPにちょっと慣れていないので、私が理解することをあまり期待しないでください:P

とにかくありがとう

4

1 に答える 1

0

ダウンロード.php:

<?php
    //Only offer file to download which are having "unread" or "read" in their filename.
    if(!strstr($_GET['file'], 'unread') || !strstr($_GET['file'], 'read']))
        die('Invalid file.');

    //Make sure the file exists.
    if(!file_exists($_GET['file']))
        die('File not found.');

    echo file_get_contents($_GET['file']);

    if(strstr($_GET['file'], 'unread')) {
        //rename 1unread.txt to 1read.txt
        $newFileName = str_replace('unread', 'read', $_GET['file']);
        rename($_GET['file'], $newFileName);
        echo sprintf("RENAMED '%s' TO '%s'!", $_GET['file'], $newFileName); //Debug
    } else {
        //rename 1read.txt to 1unread.txt
        $newFileName = str_replace('read', 'unread', $_GET['file']);
        rename($_GET['file'], $newFileName);
        echo sprintf("RENAMED '%s' TO '%s'!", $_GET['file'], $newFileName); //Debug
    }
?>

ダウンロード ボタンを次のように置き換えます。

echo "<a href='download.php?file=$filename'>Download {$filename}</a><br>" . "\n" ;
于 2013-08-23T07:34:27.910 に答える