Avatar billede uneerup Nybegynder
08. januar 2004 - 16:50 Der er 15 kommentarer og
1 løsning

Skjul filens placering - Hvordan?

hejsa allesammen

jeg har nogle filer på min webserver, som det skal være muligt at downloade. Men man må ikke kunne se filens placering på serveren, kun linket. Håber i forstår spørgsmålet :-)
Avatar billede thesurfer Nybegynder
08. januar 2004 - 16:55 #1
I ASP kan man åbne filen binært, og udskrive den, med det rette ContentType (eller hvad den hedder).. mon ikke at man kan det samme i php..?
Avatar billede uneerup Nybegynder
08. januar 2004 - 16:57 #2
hmm nu er jeg ikke det store haj til det... kunne godt tænke mig noget mere specifikt :-)
Avatar billede squashguy Nybegynder
08. januar 2004 - 16:58 #3
Her er givet flere eksempler på hvordan det gøres..
http://dk2.php.net/manual/en/function.header.php
Avatar billede uneerup Nybegynder
08. januar 2004 - 17:03 #4
well er ikke så hård til det php, er der ikke lige en der ligger inde med et eksempel?? :-)
Avatar billede uneerup Nybegynder
08. januar 2004 - 17:06 #5
jeg benytter dette her script, men vil gerne have outputtet til at vise linksene, men med skjult placering

<?php
$path = opendir("./test");
$dirlist = array();
while (false !== ($dir = readdir($path))){

    if ($dir == "." || $dir == "..") {
continue;
    }else{
    $dirlist[] = $dir;
    }
}
closedir($path);

sort($dirlist);

for($i = 0; $i < count($dirlist); $i++) {
echo"<a href=\"test/$dirlist[$i]\">$dirlist[$i]</a><br>";

}
clearstatcache();
?>
Avatar billede squashguy Nybegynder
08. januar 2004 - 17:19 #6
prøv noget i denne stil..

filen skjules ved, at man ikke kender navnet på underbiblioteket (test)

<?php
$path = opendir("./test");
$dirlist = array();
while (false !== ($dir = readdir($path))){

    if ($dir == "." || $dir == "..") {
continue;
    }else{
    $dirlist[] = $dir;
    }
}
closedir($path);

sort($dirlist);

for($i = 0; $i < count($dirlist); $i++) {
echo"<a href=\"getfile.php?file=$dirlist[$i]\">$dirlist[$i]</a><br>";

}
clearstatcache();
?>

--------------------------
getfile.php:

<?php
$ok = false;
$file = $_GET['file'];

$pathname = "test";

$path = opendir($pathname);
$dirlist = array();


while (!$ok && false !== ($dir = readdir($path))){
    if ($dir == "." || $dir == "..") {
      continue;
    }else{
      if($dir == $file){
        header("Content-Type: application/force-download");
        header("Content-Transfer-Encoding: binary");
        header("Content-Length: ".filesize($dir));
        header("Content-Disposition: attachment; filename=$dir");


        readfile("$pathname/$dir");
        $ok = true;
      }
    }
}
closedir($path);

if(!$ok) echo "Fil ikke fundet";

?>
Avatar billede uneerup Nybegynder
08. januar 2004 - 17:28 #7
nu kan man ikke se filens placering og det er bare lækkert :-) men klikker man på det så siger den

The requested URL /first/getfile.php?file=else.jpg was not found on this server.

og den skal jo gerne enten åbne filen eller spørge om jeg vil downloade den :-)
Avatar billede uneerup Nybegynder
08. januar 2004 - 17:29 #8
nå, men du fik jo lige nogle point der, ikk lige menningen endnu, men jeg vil gerne give nogle flere hvis resten også bliver løst :-)
Avatar billede squashguy Nybegynder
08. januar 2004 - 17:30 #9
hmm og du har gemt getfile.php i samme bibliotek?
Avatar billede squashguy Nybegynder
08. januar 2004 - 17:30 #10
.. som den du bruger til at vise filerne?
Avatar billede uneerup Nybegynder
08. januar 2004 - 17:37 #11
ok, det havde jeg faktisk lige glemt, men nu virker det næsten, bortset fra at den kun downloader selve getfile.php uanset hvilket link man trykker på...
Avatar billede squashguy Nybegynder
08. januar 2004 - 17:41 #12
vi prøver lige at lave en lidt bedre udgave af getfile.php

<?php
$file = $_GET['file'];
$path = "./test/$file";

if(file_exists($path)){
  header("Content-Type: application/force-download");
  header("Content-Transfer-Encoding: binary");
  header("Content-Length: ".filesize($path));
  header("Content-Disposition: attachment; filename=$file");
  readfile($path);
}else{
  echo "Fil ikke fundet";
}
?>
Avatar billede uneerup Nybegynder
08. januar 2004 - 17:44 #13
for dææælen mester så køre det bare....... smid lige et svar, så giver jeg nogle point
Avatar billede squashguy Nybegynder
08. januar 2004 - 17:45 #14
point har du vist allerede givet :)
Avatar billede uneerup Nybegynder
08. januar 2004 - 17:46 #15
jamen hvis det er rigeligt med dem, så siger jeg da bare mange tak :-)
Avatar billede squashguy Nybegynder
08. januar 2004 - 17:46 #16
bare i orden
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester