2013-08-23 23 views
0

我在HTML文件中有這個片段。但是我希望如果文件名從1unread.txt打開到1read.txt,文件名就會被更改,所以它會進入讀取列表。如果URL被點擊,文件名必須改變,我該怎麼做?

<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

還是要謝謝你

+0

我忘了提及有多個文件,所以這些文件被命名爲$ date_1unread.txt。 – svenweer

回答

0

的download.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" ; 
+0

它不起作用。我沒有得到任何錯誤或如此。但文件不會更改名稱。 – svenweer

+0

我在str_replace行忘了''''。它現在改變了,你可以再試一次嗎? – hresult

+0

是的,我有錯誤,但解決了。但是在我修好之後,它會運行腳本但不會做任何事情。 – svenweer