Avatar billede mxs Nybegynder
17. oktober 2003 - 14:00 Der er 22 kommentarer og
1 løsning

Nogen der vil forklare mig hvor meget jeg skal bruge i denne kode

Hey udvikleren.dk

Jeg er ved at lave et upload script, men jeg ved ikke hvordan man skal bruge den, men jeg har fundet frem til denne kode på webcafe.dk

http://www.webcafe.dk/artikler/php/upload/

Men hvordan skal den sættes sammen? Hvad skal jeg bruge? og hvad kan jeg undervære? Det er kun det første som jeg ikke forstår og jeg har læst artiklen færdig op til flere gange.

Hvis mit uploadsbibliotek hedder c://phpdev/www/bib hvor skal jeg så sætte det ind?
Her:
$konfiguration["upload_bibliotek"] = "c://phpdev/www/bib";

Kan jeg godt undvære det her/* Check PHP-version */
list($major, $minor, $rev) = explode(".", phpversion());
if($major < 4) {
  die("Jeg kan kun arbejde med PHP 4.0.0 eller derover");
}

/* Skab de "moderne" arrays hvis vi arbejder med en aeldre PHP */
if($minor < 1) {
  $_FILES = $HTTP_POST_FILES;
  $_POST = $HTTP_POST_VARS;
  $_SERVER = $HTTP_SERVER_VARS;
}


Håber at i kan forstå mig og jeg håber ikke at jeg har spurgt for meget :) Det kan godt være irriterende når man skal besvare. Det ved jeg godt selv :)
Avatar billede fangel Nybegynder
17. oktober 2003 - 14:08 #1
ad 2) hvis du ved din php-version er mere en 4.xx, så bare fjern det
ad 3) hvis du ved din version er over 4.1.x så fjern det

Morten
Avatar billede detox Nybegynder
17. oktober 2003 - 14:08 #2
$konfiguration["upload_bibliotek"] = "c://phpdev/www/bib";

ser rigtigt ud, eller måske:

$konfiguration["upload_bibliotek"] = "c:/phpdev/www/bib";

Om du kan undvære den anden del, kommer an på om du bruger en php ver. ældre end 4.1.0
Avatar billede mxs Nybegynder
17. oktober 2003 - 14:12 #3
Jeg bruger den nyeste version af php!! Så jeg kan godt bruge koden
<form action="filnavn.php" method="post" enctype="multipart/form-data">
  <b>Fil til upload:</b>
  <input type="file" name="upfil" />
  <input type="submit" value="upload" />
</form>

Og så sende dataen med

$konfiguration["upload_bibliotek"] = "c://phpdev/www/bib";
$konfiguration["max_stoerrelse"] = "10";
/* Hvor flytter vi fra og til */
$fra = $_FILES["upfil"]["tmp_name"];
$til = $konfiguration["upload_bibliotek"] . "/" . $_FILES["upfil"]["name"];

/* Accepterer vi filens stoerrelse? */
$fil_stoerrelse = filesize($fra)/1024;
if($fil_stoerrelse > $konfiguration["max_stoerrelse"]) {
  die("Desværre - filen er for stor. Jeg accepterer kun " .
      $konfiguration["max_stoerrelse"] . "kb, og din fil fylder " .
      ceil($fil_stoerrelse, 1) . " kb");
}

/* Saa koerer vi */
if(function_exists("move_uploaded_file")) {
  move_uploaded_file($fra, $til);
} else {
  copy($fra, $til);
}

Er det ikke alt som skal til?
Avatar billede detox Nybegynder
17. oktober 2003 - 14:21 #4
Ser umiddelbart rigtigt ud.
Avatar billede mxs Nybegynder
17. oktober 2003 - 14:23 #5
Kan jeg ikke også godt undvære
/* Accepterer vi filens stoerrelse? */
$fil_stoerrelse = filesize($fra)/1024;
if($fil_stoerrelse > $konfiguration["max_stoerrelse"]) {
  die("Desværre - filen er for stor. Jeg accepterer kun " .
      $konfiguration["max_stoerrelse"] . "kb, og din fil fylder " .
      ceil($fil_stoerrelse, 1) . " kb");
}
Det det kun er til privat brug? Jeg er admin og skal have en let måde hvor på jeg kan uploade billeder på (Jeg er den eneste som kommer til at bruge funktioen)
Avatar billede mxs Nybegynder
17. oktober 2003 - 14:24 #6
Er
$fra = $_FILES["upfil"]["tmp_name"];
det når man uploader filen så får den et andet navn og når den så kommer op på serveren så får den det navn som man har givet den på sin comp?
Avatar billede detox Nybegynder
17. oktober 2003 - 14:27 #7
Jeg vil mene du kan nøjes med:

<?
if (is_uploaded_file($_FILES["upfil"]["tmp_name"])) {
$upload_bibliotek = "c://phpdev/www/bib";
$fra = $_FILES["upfil"]["tmp_name"];
$til = $upload_bibliotek . "/" . $_FILES["upfil"]["name"];
move_uploaded_file($fra, $til);
}
?>
Avatar billede detox Nybegynder
17. oktober 2003 - 14:28 #8
Ja, det er et midlertidigt navn.
Avatar billede mxs Nybegynder
17. oktober 2003 - 14:29 #9
Hehe skulle lige til at poste samme stykke kode :)
Jeg tror at jeg har fået det hjælp som jeg skal bruge!! Så jeg vil sige tak!
Nu skal jeg se om det virker, men det tror jeg det gør!!
Så post et svar detox så får du points!
Avatar billede monmike Nybegynder
17. oktober 2003 - 14:30 #10
Det kan gøres lidt kortere.

<?php
function do_upload($filename) {
  $file = basename($filename);
  $tmp_upload_path = "/tmp/";
  $new_file_name = "/din/sti/til/upload/folderen/".$file;
  if (!copy($tmp_upload_path.$file, $new_file_name)) echo "failed to copy file<br>\n";
  return;
}
?>

så skal du bare kalde funktionen med denne her:

<?php
do_upload($userfile);
?>

og sende dem afsted som du selv skrev:

<form action="filnavn.php" method="post" enctype="multipart/form-data">
  <b>Fil til upload:</b>
  <input type="file" name="userfile1" />
  <input type="submit" value="upload" />
</form>

Så bliver filen gemt der hvor du har skrevet i /din/sti/til/upload/folderen/ og med samme navn som den hedder i forvejen.
Avatar billede mxs Nybegynder
17. oktober 2003 - 14:33 #11
Det vil jeg sgu også gerne accepterer mommike!

tmp_upload_path skal jeg navngive det? Eller skal den bare hedde /tmp/
Avatar billede detox Nybegynder
17. oktober 2003 - 14:37 #12
monmike -> Ser da ikke umiddelbart kortere ud. Virker det osse?
Avatar billede fangel Nybegynder
17. oktober 2003 - 14:39 #13
monmike -> det script har ikke de samme sikkerheds-tjek som detox's har - prøv at læs manualen omkring fil uploadning

mxs -> nej . '/tmp/ er en unix stil - sin din windows vil brokke sig meget over den... og brug detox's script!

Morten
Avatar billede mxs Nybegynder
17. oktober 2003 - 14:41 #14
Altså jeg skal bruge:
<?
if (is_uploaded_file($_FILES["upfil"]["tmp_name"])) {
$upload_bibliotek = "c://phpdev/www/bib";
$fra = $_FILES["upfil"]["tmp_name"];
$til = $upload_bibliotek . "/" . $_FILES["upfil"]["name"];
move_uploaded_file($fra, $til);
}
?>

Hvad tjekker:
if (is_uploaded_file($_FILES["upfil"]["tmp_name"]))
Avatar billede fangel Nybegynder
17. oktober 2003 - 14:43 #15
hvad ligner det?

ser om filen rent faktisk er en uploadet fil - for at undgå (h|c)racker angreb!

Morten
Avatar billede mxs Nybegynder
17. oktober 2003 - 14:46 #16
Aha smart :)

Jeg prøver at se om jeg kan få det til at virke!
Avatar billede mxs Nybegynder
17. oktober 2003 - 15:00 #17
Ok jeg har nu prøvet at sætte ind i min kode, men jeg kan ikke få det til at virke.
Det jeg bruger til at uploade filen med ser sådan ud:
if ($_POST['submit_billed']) {

    $dato = $_POST['dato'];
    $tekst = $_POST['tekst'];
    $navn = $_POST['navn'];
    $sti = $_POST['sti'];

        if (is_uploaded_file($_FILES["upfil"]["$sti"])) {
            $upload_bibliotek = "C:\phpdev\www\public\Billeder";
            $fra = $_FILES["upfil"]["basename($sti)"];
            $til = $upload_bibliotek . "/" . $_FILES["upfil"]["basename($sti)"];
            move_uploaded_file($fra, $til);
        }

    include "../db_conn/conn.php";

    mysql_query("insert into billeder (dato, navn, tekst, sti, kaldenavn) values('$dato' , '$navn' , '$tekst' , '$sti', '$navn') ");

    redir(Upload_billed);
    exit;
}

Og formularen jeg bruger er:
Upload billeder.dk
<p>
<br>
<br>
<form method="post" action="<? $PHP_SELF ; ?>" enctype="multipart/form-data">
<b>Sti</b><br>
<input type="file" size="50" name="sti"><br>
<b>En LILLE kommentar:</b><br>
<input type="text" size="50" name="tekst"><br>
<b>Navn</b><br>
<input type="text" name="navn"><br>
<b>dato</b><br>
<input type="text" name="dato" value="<?echo date("j/n/Y"); ?>"><br>
<input type="submit" name="submit_billed" value="Upload">
</form>


</p>



<?
$msg = $_GET['msg'];
echo "<p>$msg</p>";
?>

Kan i se fejlen?
Avatar billede detox Nybegynder
17. oktober 2003 - 15:18 #18
Ja, der er mange. Det skal være i den her stil:

<?php
if (isset($_POST['submit_billed'])) {
    $dato = $_POST['dato'];
    $tekst = $_POST['tekst'];
    $navn = $_POST['navn'];
        if (is_uploaded_file($_FILES["sti"]["tmp_name"])) {
            $upload_bibliotek = "C:/phpdev/www/public/Billeder";
            $fra = $_FILES["sti"]["tmp_name"];
            $til = $upload_bibliotek . "/" . $_FILES["sti"]["name"];
            if (move_uploaded_file($fra, $til)) {
                echo $_FILES["sti"]["name"]." er uploadet";
                include "../db_conn/conn.php";
                mysql_query("insert into billeder (dato, navn, tekst, sti, kaldenavn) values('$dato' , '$navn' , '$tekst' , '$til', '$navn') ");
            }
        }
}
?>
<p>
<br>
<br>
<form method="post" action="<?=$_SERVER['PHP_SELF']?>" enctype="multipart/form-data">
<b>Sti</b><br>
<input type="file" size="50" name="sti"><br>
<b>En LILLE kommentar:</b><br>
<input type="text" size="50" name="tekst"><br>
<b>Navn</b><br>
<input type="text" name="navn"><br>
<b>dato</b><br>
<input type="text" name="dato" value="<?echo date("j/n/Y"); ?>"><br>
<input type="submit" name="submit_billed" value="Upload">
</form>
</p>
<?
$msg = $_GET['msg'];
echo "<p>$msg</p>";
?>
Avatar billede detox Nybegynder
17. oktober 2003 - 15:20 #19
Jeg ved ikke hvad det er meningen med:

    redir(Upload_billed);
    exit;
Avatar billede mxs Nybegynder
17. oktober 2003 - 15:25 #20
Redir(Upload_billed);
exit;

er en funktion som ser sådan ud
function redir($sti) {

header("location:default.php?page=$sti");
exit;
Avatar billede detox Nybegynder
17. oktober 2003 - 15:28 #21
Okay, så skal du naturligvis ikke bruge denne linie:

echo $_FILES["sti"]["name"]." er uploadet";
Avatar billede mxs Nybegynder
17. oktober 2003 - 15:40 #22
WOW
detox du har lige sparret mig for en masse arbejde!! :) Tak for det!

Post et svar så får du points!
Avatar billede detox Nybegynder
17. oktober 2003 - 15:47 #23
Velbekommen c",)
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