Avatar billede peterkornum Nybegynder
05. september 2007 - 18:57 Der er 24 kommentarer

til retning af eksisterende spørgsmål

hej

vi er ved at "stjæle" noget kode fra det her spørgsmål http://www.eksperten.dk/spm/510009#rid4690289  men det driller lidt.....

den giver følgende svar:
txt
Warning: Cannot modify header information - headers already sent by (output started at D:\websider\resadmin\sandesign.dk\sandesign.dk\www\upload\do-upload.php:9) in D:\websider\resadmin\sandesign.dk\sandesign.dk\www\upload\do-upload.php on line 59

vi har lavet fil formatet omt til txt og zip filer så det er ok... men den gider ikke!!

i linie 59 står der: header("Location: do-upload.php");
Avatar billede peterkornum Nybegynder
05. september 2007 - 19:16 #1
i kan prøve her: http://www.sandesign.dk/upload/upload.php helst med en lille txt fil
Avatar billede pycoz Nybegynder
05. september 2007 - 19:47 #2
En header skal også sendes i <head>

fx

<html><head>
header("Location: do-upload.php");
</head></html>
Avatar billede pycoz Nybegynder
05. september 2007 - 19:48 #3
I din form kan du jo bare lave action='do-upload.php'
Avatar billede nielle Nybegynder
05. september 2007 - 20:31 #4
05/09-2007 19:47:17> Ikke rigtigt - der må aldrig blive skrevet noget ud før header() kaldes.
Avatar billede nielle Nybegynder
05. september 2007 - 20:33 #5
I skal med andre ord have flyttet jeres header() kald helt op i starten af jeres kode før at I førsøger at udkrive noget som helst.
Avatar billede peterkornum Nybegynder
05. september 2007 - 20:34 #6
header(action='do-upload.php');

mener sådan?
Avatar billede nielle Nybegynder
05. september 2007 - 20:35 #7
Jeres:

header("Location: do-upload.php");

er den korrekte form. :^)
Avatar billede peterkornum Nybegynder
05. september 2007 - 20:35 #8
oki har slettet alt andet end php koden i filen.... så er der vel ingen header fra  html delen?

<?PHP

// her gemmes filerne
$konfiguration["upload_bibliotek"] = "./updir";

// Dette må filerne max fylde. (i MB).
$konfiguration["max_stoerrelse"] = "256";

/* Check PHP-version */
list($major, $minor, $rev) = explode(".", phpversion());
if($major < 4) {
    // Hvis PHP versionen er for gammel, lukker vi scriptet.
    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;
}

/* 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)/262144;
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");
}

// For at gøre det mere sikkert, kan du selv bestemme hvilket type filer brugerne må uploade
// Dette er smart, da de ellers ville kunne uploade perl script, php script, eller andet der kan skade dig.

$ext = strtolower(end(explode(".", $_FILES['upfil']['name'])));

echo $ext;

if($ext == "txt" || $ext == "Zip" || $ext == "zip" || $ext == "ZIP") {
    /* Saa koerer vi */
    if(function_exists("move_uploaded_file")) {
        move_uploaded_file($fra, $til);
    } else {
        copy($fra, $til);
    }
   
    // Filen er nu uploaded, og vi sender dig tilbage til upload siden.
    header(action='do-upload.php');
    exit;   
} else {
    die("Jeg vil kun have zip filer uploaded!");
}
?>
Avatar billede peterkornum Nybegynder
05. september 2007 - 20:37 #9
nej sådan her er koden den anden jeg sendt var med "rettelsen" der ikke virkede
var med (action....)

<?PHP

// her gemmes filerne
$konfiguration["upload_bibliotek"] = "./updir";

// Dette må filerne max fylde. (i MB).
$konfiguration["max_stoerrelse"] = "256";

/* Check PHP-version */
list($major, $minor, $rev) = explode(".", phpversion());
if($major < 4) {
    // Hvis PHP versionen er for gammel, lukker vi scriptet.
    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;
}

/* 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)/262144;
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");
}

// For at gøre det mere sikkert, kan du selv bestemme hvilket type filer brugerne må uploade
// Dette er smart, da de ellers ville kunne uploade perl script, php script, eller andet der kan skade dig.

$ext = strtolower(end(explode(".", $_FILES['upfil']['name'])));

echo $ext;

if($ext == "txt" || $ext == "Zip" || $ext == "zip" || $ext == "ZIP") {
    /* Saa koerer vi */
    if(function_exists("move_uploaded_file")) {
        move_uploaded_file($fra, $til);
    } else {
        copy($fra, $til);
    }
   
    // Filen er nu uploaded, og vi sender dig tilbage til upload siden.
    header("Location: do-upload.php");
    exit;   
} else {
    die("Jeg vil kun have zip filer uploaded!");
}
?>
Avatar billede nielle Nybegynder
05. september 2007 - 20:38 #10
I denne linje:

echo $ext;

- udskriver I noget. Det må I ikke før en header().
Avatar billede peterkornum Nybegynder
05. september 2007 - 20:39 #11
skla vi bare flytte det ned under header?
Avatar billede nielle Nybegynder
05. september 2007 - 20:45 #12
Eftersom at header(9 alligevel sender jer vidre til en helt ny side har det ikke den store effekt at udskrive noget som helst. Bar slet den helt.
Avatar billede peterkornum Nybegynder
05. september 2007 - 20:49 #13
det er fint så viser den kun  file extensionen... kan vi få den til også at skrive fil navn?? evt efterfulgt af uploadet (altså forudsat den er uploadet)?
Avatar billede nielle Nybegynder
05. september 2007 - 20:51 #14
Ikke rigtigt forstået? Den viste kode udskriver slet ikkenoget (nu hvor I har slettet jere echo).
Avatar billede peterkornum Nybegynder
05. september 2007 - 20:55 #15
slettede kun den ene linie

<?PHP

// her gemmes filerne
$konfiguration["upload_bibliotek"] = "./updir";

// Dette må filerne max fylde. (i MB).
$konfiguration["max_stoerrelse"] = "256";

/* Check PHP-version */
list($major, $minor, $rev) = explode(".", phpversion());
if($major < 4) {
    // Hvis PHP versionen er for gammel, lukker vi scriptet.
    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;
}

/* 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)/262144;
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");
}

// For at gøre det mere sikkert, kan du selv bestemme hvilket type filer brugerne må uploade
// Dette er smart, da de ellers ville kunne uploade perl script, php script, eller andet der kan skade dig.

$ext = strtolower(end(explode(".", $_FILES['upfil']['name'])));

echo $ext;

if($ext == "txt" || $ext == "Zip" || $ext == "zip" || $ext == "ZIP") {
    /* Saa koerer vi */
    if(function_exists("move_uploaded_file")) {
        move_uploaded_file($fra, $til);
    } else {
        copy($fra, $til);
    }
   
    // Filen er nu uploaded, og vi sender dig tilbage til upload siden.
   
    exit;   
} else {
    die("Jeg vil kun have zip filer uploaded!");
}
?>
Avatar billede nielle Nybegynder
05. september 2007 - 21:00 #16
Ok, I endte med at slette header() - hvorfor? er det fordi at I ønsker at debugge lige nu, eller hvad? Den skal vel ind igen i det færdige script?
Avatar billede peterkornum Nybegynder
05. september 2007 - 21:04 #17
nej bare der bliver bekræftet hvilken fil der er blevet uploadet og at den er blevet uploadet så er det fint!! er under tidspress siden skla køre imorgen ( er til aflevering af afgangsprojecter til sensor!
Avatar billede nielle Nybegynder
05. september 2007 - 21:05 #18
Prøv at kigge på denne lille tilrettelse:

<?PHP
// her gemmes filerne
$konfiguration["upload_bibliotek"] = "./updir";

// Dette må filerne max fylde. (i MB).
$konfiguration["max_stoerrelse"] = "256";

/* Check PHP-version */
list($major, $minor, $rev) = explode(".", phpversion());
if ($major < 4) {
    // Hvis PHP versionen er for gammel, lukker vi scriptet.
    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;
}

/* 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)/262144;
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");
}

// For at gøre det mere sikkert, kan du selv bestemme hvilket type filer brugerne må uploade
// Dette er smart, da de ellers ville kunne uploade perl script, php script, eller andet der kan skade dig.

$ext = strtolower(end(explode(".", $_FILES['upfil']['name'])));

echo $ext . "<br>";
echo $_FILES['upfil']['name'] . "<br>";

if ($ext == "txt" || $ext == "Zip" || $ext == "zip" || $ext == "ZIP") {
    /* Saa koerer vi */
    if (function_exists("move_uploaded_file")) {
        move_uploaded_file($fra, $til);
    } else {
        copy($fra, $til);
    }
   
    // Filen er nu uploaded, og vi sender dig tilbage til upload siden.
    // header("Location: do-upload.php");
    exit;
} else {
    die("Jeg vil kun have zip filer uploaded!");
}
?>
Avatar billede peterkornum Nybegynder
05. september 2007 - 21:13 #19
fint hvordan giver jeg dig dine point?
Avatar billede nielle Nybegynder
05. september 2007 - 21:20 #20
Ved at bede mig om at smide et svar.

... og det får du her :^)
Avatar billede nielle Nybegynder
05. september 2007 - 21:24 #21
I kan jo passende lave disse tre linjer kode:

$ext = strtolower(end(explode(".", $_FILES['upfil']['name'])));

echo $ext . "<br>";
echo $_FILES['upfil']['name'] . "<br>";

om til dette:

$fileName = $_FILES['upfil']['name']
$ext = strtolower(end(explode(".", $fileName)));

echo $ext . "<br>";
echo $fileName . "<br>";


Desuden kan denne her:

if ($ext == "txt" || $ext == "Zip" || $ext == "zip" || $ext == "ZIP") {

ændres til:

if ($ext == "txt" || $ext == "zip") {

eftersom at $ext jo bliver konverteret til lowercase med kaldet af strtolower().
Avatar billede nielle Nybegynder
11. september 2007 - 19:27 #22
Så mangler du bare at acceptere mit svar :^)
Avatar billede neoman Novice
11. september 2007 - 19:32 #23
nielle - det kræves vist lidt efteruddannelse her:
http://www.eksperten.dk/list.phtml?spm_creator=peterkornum&status_1=on&status_2=on&status_3=on&status_4=on


peterkornum: inden du stiller flere spørgsmål check lige dette
http://www.expfaq.dk/behandling_af_svar#behandling_af_svar
Avatar billede nielle Nybegynder
17. september 2007 - 12:38 #24
??
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