Искам файла да се сваля, не да се индексира!

taneca

Registered
Написах една системка за качване на файлове и не ми е ясно как да се справя с един проблем.
Искам като кликна върху DOWNLOAD да се сваля файла, а не да го преглеждам... Също така ако няма въведеното id в таблицата да се изпълнява error.
Ето давам целият код на страницата:
PHP:
<?php
include("conf.php");
$id = $_GET['id'];
$sql = mysql_query("SELECT * FROM music WHERE id='$id'");
$row = mysql_fetch_array($sql); 
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=windows-1251"/>
<link rel="shortcut icon" href="favicon.ico">
<title>www.<?php echo $url ?></title>
<meta http-equiv="refresh" content="10;URL='index.html'">
</head>
<body>
<center>
<div style="width:500px; padding: 10px; margin: 50px; background: #e1e1e1; border: 1px solid grey; box-shadow: 1px 1px 10px #888888; color: #565656;
border-top-left-radius: 20px; border-bottom-right-radius: 20px; text-align: center; font-family: arial; font-size: 16px;">
<b><? echo $row['name']; ?></b>
<center>
<div style="width:100px; margin:20px; padding:5px; border:1px solid black; border-radius:10px; box-shadow:0px 0px 10px #000000; background:#039400;">
<a href="http://<? echo $url; ?>/<? echo $row['cat']; ?>/<? echo $row['file']; ?>"><font color="white">DOWNLOAD</font></a></div>
</center>
<a href="http://vb0x.info">www.vb0x.info</a>
</div>
refresh after 10 seconds / рефреш след 10 секунди
</center>
</body>
</html>
 
http://stackoverflow.com/questions/3476362/how-to-force-a-file-to-download-in-php

Ако не ти помогне, просто търси: "how to force download with php".
 
Намерих из нета начин, но нещо не ми се получава...
PHP:
<?php
header('Content-disposition: attachment; filename=$cat/$file');
header('Content-type: application/png');
readfile('$file');
?>
Как да го настроя, защото линковете ще се менят? Хайде някой да удари едно рамо :)

EDIT: работи, ето как го направих:
PHP:
<?php
include("conf.php");
$id = $_GET['id'];
$sql = mysql_query("SELECT * FROM music WHERE id='$id'");
$row = mysql_fetch_array($sql); 
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=windows-1251"/>
<link rel="shortcut icon" href="favicon.ico">
<title>www.<?php echo $url ?></title>
<meta http-equiv="refresh" content="10;URL='index.html'">
<style type="text/css">.download{border:1px solid black; border-radius:10px; box-shadow:0px 0px 10px #000000; background:#039400; color:white;}</style>
</head>
<body>
<center>
<div style="width:400px; padding: 10px; margin: 50px; background: #e1e1e1; border: 1px solid grey; box-shadow: 1px 1px 10px #888888; color: #565656;
border-top-left-radius: 25px; border-bottom-right-radius: 25px; text-align: center; font-family: arial; font-size: 16px;">
<b><? echo $row['name']; ?></b>
<br><br>
    <form method="POST" name="download" action=""><input type="submit" class="download" name="download" value="DOWNLOAD" /></form>
<?
if(isset($_POST['download']))
{
$cat = $row["cat"];
$file = $row["file"];
$name = $row["name"];
$filename = "$cat/$file";

if ($filename == "") {
echo "<html><title>Download</title><body>No filename given.</body></html>";
exit();
} elseif (!file_exists($filename)) {
echo "<html><title>Download</title><body>File not found.</body></html>";
exit();
}
header("Content-Disposition: attachment; filename=\"$name\";");
readfile($filename);
exit();
}
?>
<br>
<a href="http://vb0x.info">www.vb0x.info</a>
</div>
refresh after 10 seconds / рефреш след 10 секунди
</center>
</body>
</html>
Даже с бутон, за да не правя нова страница и не се вижда линка :)
 
Кода ти е пълна бъркотия, не знам как си го подкарал да заработи имай предвид, че може да не става под всички браузъри.

Бъркотията идва от факта, че си сложил: html в html и до него пак html.
 
На безплатен хост като кача скрипта и файлът се сваля без проблем, но на платения хост не го сваля, а почва да го чете и излизат яроглифи... Идея?
 
Преди реда, на който използваш header(), не би трябвало да изпращаш нищо към браузъра, а ти виж колко много HTML код имаш. Всичкия РНР код го сложи най-отгоре. Избягвай такова смесване на РНР и HTML.
 

Back
Горе