這段代碼不知道是什麼原因,執行的時候實際下載次數不是 +1 而是 +2。
在這段代碼下面有一個改進的,下載次數只 +1。
<?phprequire_once('./login.php');downloadAttachment();// 下載附件function downloadAttachment() {global $conn;// 得到 id$id = $_REQUEST['file_id'];// 查詢資料庫$attachUrl = "";$attachSql = "SELECT ming,url, downloadnum FROM articleattach WHERE id='$id'";$result = $conn->Execute($attachSql);if ($result) {$attachUrl = $result->fields['url'];$attachMing = $result->fields['ming'];$downloadnum = $result->fields['downloadnum'] + 1;// 下載附件downloads($attachMing, $attachUrl, $downloadnum, $id);}}function downloads($name, $dir, $downloadnum, $id){global $conn;if (!file_exists($dir)) {// 沒有找到檔案header("Content-type: text/html; charset=utf-8");echo "File not found!";exit; } else {// 下載檔案$file = fopen($dir,"r"); Header("Content-type: application/octet-stream");Header("Accept-Ranges: bytes");Header("Accept-Length: ".filesize($dir));Header("Content-Disposition: attachment; filename=".$name);echo fread($file, filesize($dir));fclose($file);// 更新資料庫//echo "UPDATE articleattach SET downloadnum='$downloadnum' WHERE id='$id'";$attachSql = "UPDATE articleattach SET downloadnum='$downloadnum' WHERE id='$id'";$conn->Execute($attachSql);}}?>
改進後的:
attachDownLoad.php
<?phprequire_once('./login.php');header("Content-type: text/html; charset=utf-8");downloadAttachment();// 下載附件function downloadAttachment() {global $conn;// 得到 id$id = $_REQUEST['file_id'];// 查詢資料庫$attachUrl = "";$attachSql = "SELECT ming,url, downloadnum FROM articleattach WHERE id='$id'";$result = $conn->Execute($attachSql);if ($result) {$attachUrl = $result->fields['url'];$attachMing = $result->fields['ming'];$downloadnum = $result->fields['downloadnum'] + 1;// 下載附件downloads($attachMing, $attachUrl, $downloadnum, $id);}}function downloads($name, $dir, $downloadnum, $id){global $conn;if (!file_exists($dir)) {// 沒有找到檔案echo "File not found!";exit; } else {// 更新資料庫$attachSql = "UPDATE articleattach SET downloadnum='$downloadnum' WHERE id='$id'";$conn->Execute($attachSql);// 跳到真正的下載頁面header("location:downloadfile.php?name=$name&dir=$dir");}}?>
downloadfile.php
<?phprequire_once('./login.php');$dir = $_REQUEST['dir'];$name = $_REQUEST['name'];// 下載檔案$file = fopen($dir,"r"); Header("Content-type: application/octet-stream");Header("Accept-Ranges: bytes");Header("Accept-Length: ".filesize($dir));Header("Content-Disposition: attachment; filename=".$name);echo fread($file, filesize($dir));fclose($file);?>