Avatar billede raan Nybegynder
10. august 2005 - 15:53 Der er 39 kommentarer og
1 løsning

Hvordan kan jeg få en liste over hvad der ligget i mappen ?

hej .
jeg har lige fundet en opload fil, men mangler bare en fil så jeg kan se hvad der ligger i mappen, altså hvad navn, og størelse osv. og hvis man kunne om man så også kunne få en ip på ?

upload filen ser sådan ud :

<?php

/* Funktion der uploader en fil af tilladt filtype (MIME) med en maximal størrelse til et bibliotek */
/* Funktionen skal fodres med $_FILES['navn'] */
/* String upload_fil(Array fil [, Integer max_stoerrelse [, String bibliotek [, Array filtyper_tilladt]]])  */


function upload_fil($fil, $max_stoerrelse = 100, $bibliotek = 'default', $filtyper_tilladt = 'default')
{
    if ($bibliotek == 'default') {
        $bibliotek = 'privat/upload';
    }

    if ($filtyper_tilladt == 'default') {
        $filtyper_tilladt = array('image/bmp', 'image/jpeg', 'image/pjpeg', 'image/tiff', 'image/png', 'image/gif', 'application/pdf', 'application/zip', 'application/arj', 'application/x-zip-compressed', 'application/octet-stream');
    }

    if ($fil['size'] > 0) {
        $filnavn = strtolower(ereg_replace(' ', '_', $fil['name']));
        $fil_sti = $bibliotek . '/' . $filnavn;
        $fra = $fil['tmp_name'];
        $fil_stoerrelse = filesize($fra)/1024;
        $filtype = $fil['type'];
        $fejl = 0;

        if (!in_array($filtype, $filtyper_tilladt)) {
            echo "<p>Filtypen '$filtype' er ikke tilladt. De tilladte filtyper er '" . implode("', '", $filtyper_tilladt) . "'. Filen '$filnavn' kan derfor ikke uploades!</p>";
            $fejl = 1;
        }

        if ($fil_stoerrelse > $max_stoerrelse) {
            echo "<p>Filen '$filnavn' er for stor og kan ikke uploades. Den fylder " . ceil($fil_stoerrelse) . " kb og der kan maximalt uploades $max_stoerrelse kb!</p>";
            $fejl = 1;
        }

        if ($fejl == 0) {
            if (file_exists($_SERVER['DOCUMENT_ROOT'] . $fil_sti)) {
                $pos = strrpos($filnavn, '.');
                $foerpos = substr($filnavn, 0, $pos);
                $efterpos = substr($filnavn, $pos + 1, strlen($filnavn) - ($pos + 1));
                $i = 2;

                echo "<p>Filen '$filnavn' eksisterer allerede i '$bibliotek' og filen omdøbes derfor til ";

                while (file_exists($_SERVER['DOCUMENT_ROOT'] . $fil_sti)) {
                    $filnavn = $foerpos . '(' . $i . ').' . $efterpos;
                    $fil_sti = $bibliotek . '/' . $filnavn;
                    $i++;
                }

                echo "'$filnavn'</p>";
            }

            $til = $_SERVER['DOCUMENT_ROOT'] . $fil_sti;

            if (move_uploaded_file($fra, $til)) {
                echo "<p>Filen '$filnavn' er uploadet!</p>";
                return $fil_sti;
            } else {
                echo "<p>Desværre, filen '$filnavn' kunne ikke uploades!</p>";
                return false;
            }
        }
    } else {
        echo '<p>Der er ikke vedhæftet nogen fil!</p>';
    }
}


if (isset($_POST['send']))
{
$userfile = $_FILES['userfile'];
$bibliotek = $_POST['bibliotek'];
upload_fil($userfile, 10000, $bibliotek);
}
else
{
?>

<form enctype="multipart/form-data" action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
Vælg fil<br />
<input type="file" name="userfile"><br />
Vælg mappe:<br />
<select name="bibliotek">
    <option value ="/">Roden</option>
    <option value ="/privat/upload/">Billeder</option>
</select><br />
<input type="submit" name="send" value="Upload Fil">
</form>

<?php
}
?>
Avatar billede jaw Nybegynder
10. august 2005 - 15:57 #1
Det her vil vise størrelse og filnavn:

$handle=opendir('.');
while (false !== ($file = readdir($handle))) {
    if($file != "." && $file != "..") {
        echo $file . " " . filesize($file) . "<br />";
    }
}
closedir($handle);

IP kan du kun få, hvis du registrerer brugerens IP når han uploader filen.
Avatar billede raan Nybegynder
10. august 2005 - 16:00 #2
Hvordan gør man så det ? :)
Avatar billede jaw Nybegynder
10. august 2005 - 16:02 #3
Det gør du jo f.eks. ved at registrere det i en mysql-tabel. Så bør du registrere filnavnet og ip-adressen. IP-adressen kan du så tilføje med $_SERVER['REMOTE_ADDR'];

altså f.eks.:

mysql_query("INSERT INTO tabel (filnavn, ip) VALUES ('".$_FILES['userfile']['name']."','".$_SERVER['REMOTE_ADDR']."')") or die(mysql_error());
Avatar billede raan Nybegynder
10. august 2005 - 16:13 #4
den der dir fil ting, den kan jeg ikke få det at virker ?

Hvor skal jeg indsætte det ? er ret ny hvad ang php.
Avatar billede jaw Nybegynder
10. august 2005 - 16:14 #5
Kommer lidt an på hvad du vil. Først og fremmest, så opret en ny fil, indsæt mit eksempel og prøv filen. Den burde så vise de filer der ligger i den samme mappe som filen selv.
Avatar billede raan Nybegynder
10. august 2005 - 16:21 #6
Gør den også.
Men hvis jeg så fx vil have denne sti på ?
http://www.randersen.dk/privat/opload/
er det så ikke nok med privat/upload/
?
Avatar billede raan Nybegynder
10. august 2005 - 16:23 #7
Avatar billede jaw Nybegynder
10. august 2005 - 16:24 #8
Du kan jo prøve det :)


$path = "privat/upload/";
handle=opendir($path);
while (false !== ($file = readdir($handle))) {
    if($file != "." && $file != "..") {
        echo $file . " " . filesize($path.$file) . "<br />";
    }
}
closedir($handle);
Avatar billede raan Nybegynder
10. august 2005 - 16:24 #9
men kan man ikke gøre sådan så man også kan trykke på dem ? så når du trykker på dem, kommer man derhen ?
Avatar billede jaw Nybegynder
10. august 2005 - 16:25 #10
Jo da:

$path = "privat/upload/";
handle=opendir($path);
while (false !== ($file = readdir($handle))) {
    if($file != "." && $file != "..") {
        echo "<a href='".$path.$file."'>$file . "</a> " . filesize($path.$file) . "<br />";
    }
}
closedir($handle);
Avatar billede raan Nybegynder
10. august 2005 - 16:31 #11
Parse error: parse error, unexpected '=' in /customers/randersen.dk/randersen.dk/httpd.www/privat/open.php on line 4


<?php

$path = "privat/upload/";
handle=opendir($path);
while (false !== ($file = readdir($handle))) {
if($file != "." && $file != "..") {
echo "<a href='".$path.$file."'>$file . "</a> " . filesize($path.$file) . "<br />";
}
}
closedir($handle);


?>
Avatar billede jaw Nybegynder
10. august 2005 - 16:33 #12
Skal lige være $handle
Avatar billede raan Nybegynder
10. august 2005 - 16:37 #13
Hvor ?
Avatar billede jaw Nybegynder
10. august 2005 - 16:37 #14
$path = "privat/upload/";
$handle=opendir($path);
while (false !== ($file = readdir($handle))) {
if($file != "." && $file != "..") {
echo "<a href='".$path.$file."'>$file . "</a> " . filesize($path.$file) . "<br />";
}
}
closedir($handle);
Avatar billede raan Nybegynder
10. august 2005 - 16:45 #15
arse error: parse error, unexpected '/' in /customers/randersen.dk/randersen.dk/httpd.www/privat/open.php on line 7
Avatar billede jaw Nybegynder
10. august 2005 - 16:46 #16
Ja okey, det går sku godt...

Tilpas så din echo-linie er som denne:
echo "<a href='".$path.$file."'>".$file . "</a> " . filesize($path.$file) . "<br />";
Avatar billede raan Nybegynder
10. august 2005 - 16:48 #17
Avatar billede jaw Nybegynder
10. august 2005 - 16:53 #18
Kan ikke se fejlen, for den opstår ikke hos mig. Umiddelbart tror jeg, at din:
$path = "privat/upload/";

kun skal være:
$path = "./upload/";
Avatar billede raan Nybegynder
10. august 2005 - 16:55 #19
$path = ".";

Sådan står den ?
Avatar billede jaw Nybegynder
10. august 2005 - 16:56 #20
Nååå, prøv:

$path = "./";
Avatar billede raan Nybegynder
10. august 2005 - 16:59 #21
Nu virker den.

men hvad så med ip ?
Avatar billede jaw Nybegynder
10. august 2005 - 16:59 #22
Skrev jeg: 16.02.57
Avatar billede raan Nybegynder
10. august 2005 - 17:08 #23
Men hvor skal jeg smide den ind henne ? i mysql ?
Avatar billede jaw Nybegynder
10. august 2005 - 17:11 #24
Du bliver jo nødt til at have et sted at gemme informationerne om filen (for at genkende den igen) og brugerens oplysninger (hans IP).
Avatar billede raan Nybegynder
10. august 2005 - 17:13 #25
Jaja. men hvordan ? :s
Avatar billede jaw Nybegynder
10. august 2005 - 17:15 #26
Hvad er det du ikke kan finde ud af? Har du oprettet tabellen med de 2 felter? Jeg er ikke tankelæser :)
Avatar billede raan Nybegynder
10. august 2005 - 17:29 #27
Hvordan opretter man de to felter ?
Avatar billede jaw Nybegynder
10. august 2005 - 17:32 #28
Har du phpMyAdmin på dit hotel? Det vil helt klart gøre det nemmere. Har du oprettet tabellen?
Avatar billede raan Nybegynder
10. august 2005 - 17:58 #29
Ja jeg har phpmyadmin .
Avatar billede jaw Nybegynder
10. august 2005 - 18:05 #30
Så hop ind og opret en tabel med 2 felter som f.eks.:
filnavn VARCHAR 255
ip VARCHAR 32
Avatar billede raan Nybegynder
10. august 2005 - 18:08 #31
Sådan så er det gjort.

SQL-forespørgsel : [Ret] [Fremstil PHP-kode]
CREATE TABLE `ip_upload` (
`filnavn` VARCHAR( 255 ) NOT NULL ,
`ip` VARCHAR( 32 ) NOT NULL
);
Avatar billede jaw Nybegynder
10. august 2005 - 18:45 #32
if (move_uploaded_file($fra, $til)) {
                //connect her
                mysql_query("INSERT INTO tabel (filnavn, ip) VALUES ('".$_FILES['userfile']['name']."','".$_SERVER['REMOTE_ADDR']."')") or die(mysql_error());
                echo "<p>Filen '$filnavn' er uploadet!</p>";
                return $fil_sti;

Prøv det og se om der kommer noget i databasen.
Avatar billede raan Nybegynder
10. august 2005 - 18:52 #33
Warning: mysql_query(): Access denied for user: 'randersen.dk@localhost' (Using password: NO) in /customers/randersen.dk/randersen.dk/httpd.www/privat/upload1.php on line 58

Warning: mysql_query(): A link to the server could not be established in /customers/randersen.dk/randersen.dk/httpd.www/privat/upload1.php on line 58
Access denied for user: 'randersen.dk@localhost' (Using password: NO)

//connect her
hvad er det jeg skal skrive her ?
Avatar billede jaw Nybegynder
10. august 2005 - 19:34 #34
Der skal du jo connecte med mysql_connect() og mysql_select_db(). Det ser ud til at du prøver (jeg kan ikke se din kode), men du gør noget forkert (forkert adgangskode).
Avatar billede raan Nybegynder
10. august 2005 - 19:53 #35
Jamen hvordan skriver jeg det, det der connecte
Avatar billede jaw Nybegynder
10. august 2005 - 19:55 #36
mysql_connect("adresse", "brugernavn", "adgangskode");
mysql_select_db("databasenavn");
Avatar billede raan Nybegynder
10. august 2005 - 20:19 #37
Table 'randersen_dk.tabel' doesn't exist
Avatar billede jaw Nybegynder
10. august 2005 - 20:21 #38
Hedder tabellen tabel da? Ellers skal du jo selvf. udskifte "tabel" med navnet på din tabel i min kode 18.45.48.
Avatar billede raan Nybegynder
10. august 2005 - 20:28 #39
Nu virker det, også med ip og det hele. :)
Tak skal du have . du får de 60 point
Avatar billede jaw Nybegynder
10. august 2005 - 20:30 #40
Det var jo godt, så siger jeg også tak :)
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