Hejhopp!
Jag har ett problem som gör att man ej kan ladda hem filer med ett mellan rum, åäö i filnamnet för han klarar bara av att läsa tills något av detta uppenbararar sig i namnet, detta är jobbigt problem som jag inte har hittat någonlösning på men hoppas att ni kan hjälpa mig med, antar att det är något fel på mina headers...
det som händer är om man t.ex. har ett fil som heter kalle gick på stan så får man upp nedladdningsrutan med kalle, han lyckas inte hitta vad det är för filtyp lr något... hoppas att någon har den hjälp jag behöver...
session_start(); // Alltid överst på sidan
// ta fram user information.
error_reporting(E_ALL);
ini_set("display_errors", "1");
$id = $_SESSION['sess_id'];
// Kolla om inloggad = sessionen satt
if (!isset($_SESSION['sess_user'])) {
header("Location: index.php");
exit;
}
include "conn.php"; // Databasanslutningen
//Delete function
if (isset($_GET['delete_fileid']))
{
$fid = intval($_GET["delete_fileid"]);
$sqlA = mysql_query("SELECT name FROM uploadfiles WHERE fileid = '{$fid}' AND id = {$_SESSION['sess_id']}") or die("Error!");
while ($row = mysql_fetch_array($sqlA))
{
//radera filen
unlink("/uploaded/".$id."/".$row["name"]);//kolla att du har korrekt adress annars får du ha en absolut sökväg
}
mysql_query("DELETE FROM uploadfiles WHERE fileid = '{$fid}' LIMIT 1") or die("Error!");
if (mysql_affected_rows() > 0)
header("Location: uploaded.php?msg=1");
}
//Download function
if(isset($_GET['download_fileid'])) {
$sql = "SELECT * FROM uploadfiles WHERE fileid = '$_GET[download_fileid]' AND id = {$_SESSION['sess_id']}";
$result = mysql_query($sql) or die (mysql_error());
extract(mysql_fetch_assoc($result));
$size = mysql_result($result, 0, "size");
header("Cache-Control: private");
header("Content-Type: application/octet-stream");
header("Content-Length: $size");
header("Content-Disposition: attachment; filename=$name");
readfile("/uploaded/$id/$name");
exit();
}
jag har kommit så långt att jag har upptäckt att man bara får felet i firefox, använder du opera eller ie så fungerar det som det ska, vad kan detta bero på?
okej... tackar stevenet :) nu fungerar det... men ni kanske kan hjälpa mig med ytterligare en sak?
Det är så att jag vill inte att användarna ska kunna ladda ned / radera andra användares uppladdade filer, ladda ned fungerar inte som det är nu för då får man istället upp att ladda ned sidan uploaded.php som sidan ligger på och sen kan man faktiskt radera andra användares bilder genom att byta adressen i adressfönstret till delete_fileid1070 lr vad nu filen heter... så vill jag inte ha det...
Det jag vill när det gäller både download och delete är att man ska få ett medelande att man inte har tillgång till den filen.. ni kan ju se hur kontrollen fungerar på download för där har jag ju lyckats att spärra men inte skriva ut något medelande om att man ej har tillgång till den filen... hoppas att ni förstår vad jag menar... vill alltså ha en kontroll som kontrollerar att detta stämmer $sql = "SELECT * FROM uploadfiles WHERE fileid = '$_GET[download_fileid]' AND id = {$_SESSION['sess_id']}"; och sedan skriver ut ett medelande att man ej har tillgång till filen om inte allt detta överensstämmer med den användaren som är inloggad...
Spara uppladdarens användarid, $_SESSION['sess_user'], i ett fält i tabellen uploadfiles. Sedan jämför du det nya fältet med $_SESSION['sess_user'] varje gång någon vill ta bort en fil.