Avatar billede saudoo Nybegynder
08. februar 2005 - 19:14 Der er 17 kommentarer og
2 løsninger

Bestemme hyperlink efter filtype!

Hej exp.dk :)
Har følgende stykke kode:

<?
$dir = "files/";
if (is_dir($dir)) {
$handle = opendir($dir);
while (false !== ($file = readdir($handle))) {
if ($file != '.' && $file != '..') {
echo "<a href="$dir$file" target="_blank">$file</a><br>";
}
}
closedir($handle);
}
?>

Hvad jeg ikke selv kan finde ud af at lave, er at få overstående script, som finder filer i en mappe og lister dem op (tidligere spørgsmål), til at lave et bestemt link efter hvilket filtype det er.. Ligemeget hvor, bare at den kan bevare filnavnet på den fil man linket til, i linket. :)

Håber i forstår.. et link kunne f. eks. se sådan ud:

Hvis en swf-fil
se_swf.php?swf=fil.swf Hvis en jpg-fil
se_jpg.php?jpg=fil.jpg

Osv. :)

Tak
Jakob

Ps. hvis det er for lidt at give 110 kan jeg godt hæve, f. eks. til 180-200.. :)
Avatar billede detox Nybegynder
08. februar 2005 - 20:00 #1
Fx:

<?
$dir = "files/";
if (is_dir($dir)) {
    $handle = opendir($dir);
    while (false !== ($file = readdir($handle))) {
        if ($file != '.' && $file != '..') {
            $path_parts = pathinfo($file);
            $ext = isset($path_parts['extension']) ? $path_parts['extension'] : 'default';
            echo "se_".$ext.".php?".$ext."=".$file."<br />";
        }
    }
    closedir($handle);
}
?>
Avatar billede detox Nybegynder
08. februar 2005 - 20:09 #2
Eller som funktion:

function filLinks($dir) {
    $out = '';
    if (is_dir($dir)) {
        $handle = opendir($dir);
        while (false !== ($file = readdir($handle))) {
            if ($file != '.' && $file != '..') {
                $pp = pathinfo($file);
                $ext = isset($pp['extension']) ? $pp['extension'] : 'default';
                $out .= "se_$ext.php?$ext=$file<br />";
            }
        }
        closedir($handle);
    }
    return $out;
}

echo filLinks('files/');
Avatar billede saudoo Nybegynder
08. februar 2005 - 20:15 #3
Det er rigtig godt.. :) Tak..

Dog en enkelt ting..

Da der ligger filer hvor nogle af dem måske hedder .PNG istedet for, som de andre, .png.

Kan man gøre så der kun bliver skrevet med små bokstaver i linket?
Avatar billede detox Nybegynder
08. februar 2005 - 20:22 #4
Ja ret:

$ext = isset($pp['extension']) ? $pp['extension'] : 'default';

til:

$ext = isset($pp['extension']) ? strtolower($pp['extension']) : 'default';
Avatar billede detox Nybegynder
08. februar 2005 - 20:25 #5
Evt. osse:

$out .= "se_$ext.php?$ext=$file<br />";

til:

$out .= "se_$ext.php?$ext=".strtolower($file)."<br />";
Avatar billede detox Nybegynder
08. februar 2005 - 20:28 #6
Men laver du om på filnavnet i linket kan det muligvis give problemer fx på linux systemer.
Avatar billede saudoo Nybegynder
08. februar 2005 - 20:44 #7
OKay.. tak.. det er så heldigvis en Windows2003 maskine.. :)

Skal jeg hæve den til 200 eller er de 110 fint? :P
Avatar billede detox Nybegynder
08. februar 2005 - 20:46 #8
Velbekommen. 110p er mere end rigeligt.
Avatar billede saudoo Nybegynder
08. februar 2005 - 22:40 #9
hehe.. godt nok.. og mange tak for hjælpen.. :P
Avatar billede saudoo Nybegynder
08. februar 2005 - 22:49 #10
Skal jeg lave et nyt sprøgsmål, eller vil du gerne hjælpe mig igen?

Det er om det kan gøres på dette script..

<?php

$uploadfile = $_FILES['userfile']['tmp_name'];
$uploaddir = "files/".$_FILES['userfile']['name'];

$okexts = array("jpeg", "jpg", "png", "gif", "zip", "txt", "doc", "swf", "rar", "txt", "TXT", "JPEG", "JPG", "PNG", "GIF", "ZIP", "TXT", "DOC", "SWF", "RAR");
$arr = explode(".", $_FILES['userfile']['name']);
if (!in_array($arr[count($arr)-1], $okexts)) {
echo "

<p align=\"center\">
<font face=\"Verdana\"><font size=\"2\">
<img border=\"0\" src=\"logo.gif\" width=\"271\" height=\"62\"><br>
<br>
<b><font size=\"2\">Uploadservice<br>
</font></b>
<br>
<br>
<font face=\"verdana\" size=\"2\">Funktion ikke tilladt! <img src=\"con_frown.gif\">";

exit;
}


print "<pre>";
if (move_uploaded_file($uploadfile, $uploaddir)) {
 
  print "<p>";
  print "<font face=\"verdana\" size=\"2\">";
  print "Filen er gyldig, og er blevet oploaded. Tak for din fil :D\n";
  print "<font size=\"1\">\n";
  print "<b>Din fil ligger her:</b> http://www.funsense.dk/upload/$uploaddir<p>\n\n\n\n";
  print "<br>";
  print "<iframe src=\"http://www.funsense.dk/upload/$uploaddir\" onload=\"this.style.height=this.contentWindow.document.body.scrollHeight + 10 + 'px';\" height=\"550\" width=\"100%\" name=\"upload\" frameborder=\"0\">";
  print "<br>";
  print "<br>";
  print "<a href=\"http://www.funsense.dk/\" target=\"_blank\">Service af Funsense.dk</a>";
  print "<br>";
  print "<br>";
} else {
  print "Fejl. Muligt angreb!  Her er noget info:\n";
  print_r($_FILES);
}
?>
Avatar billede saudoo Nybegynder
08. februar 2005 - 22:55 #11
bare at den skal SENDE en vidre til en bestem side efter hvilket efternavn filen har.. :P glemte jeg lige.. :)
Avatar billede detox Nybegynder
08. februar 2005 - 23:00 #12
Ja, det skulle du nok kunne ved hjælp af header(), så længe du sørger for der ikke er noget output inden du bruger header().
Avatar billede detox Nybegynder
08. februar 2005 - 23:06 #13
Fx:

if (move_uploaded_file($uploadfile, $uploaddir)) {
  $ext = $arr[count($arr)-1];
  header('Location: ' . "se_$ext.php?$ext=$uploaddir";);
} else {
  print "Fejl. Muligt angreb!  Her er noget info:\n";
  print_r($_FILES);
}
Avatar billede detox Nybegynder
08. februar 2005 - 23:10 #14
Men du skal som sagt fjerne output, som fx:

print "<pre>";
Avatar billede saudoo Nybegynder
08. februar 2005 - 23:16 #15
yes.. okay.. tak prøver lige.. :P
Avatar billede saudoo Nybegynder
08. februar 2005 - 23:20 #16
http://www.funsense.dk/upload/index2.php

Har lidt probs.. desværre.. :)

Den giver hvid skærm.. har ellers sat det sådan her op.. (udsnit af sidste del af siden):

<font face=\"verdana\" size=\"2\">Funktion ikke tilladt! <img src=\"http://www.funessen.dk/forum/images/smiles/con_frown.gif\">";

exit;
}


if (move_uploaded_file($uploadfile, $uploaddir)) {
  $ext = $arr[count($arr)-1];
  header('Location: ' . "se_$ext.php?$ext=$uploaddir";);
} else {
  print "Fejl. Muligt angreb!  Her er noget info:\n";
  print_r($_FILES);
}
 
?>

</body>
</html>
Avatar billede saudoo Nybegynder
08. februar 2005 - 23:23 #17
:P Fandt en fejl.. Mange tak for hjælpen igen.. :)

  header('Location: ' . "se_$ext.php?$ext=$uploaddir";);
Avatar billede saudoo Nybegynder
08. februar 2005 - 23:24 #18
Nej kunne misforstået..

Prøver igen:
Fandt selv ud af problemet, så du behøver ikke fordybe dig i det.
Men tak for den hjælp du har bidraget med fra fejl til succes. :)
Avatar billede detox Nybegynder
09. februar 2005 - 15:47 #19
Velbekommen
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