Avatar billede Six Nybegynder
27. september 2003 - 00:33 Der er 2 kommentarer og
1 løsning

Alternativ til die() i php.

Hej.

Jeg har endelig fået mit upload script til at virke.

Nu er mit problem.

Jeg har lavet en funktion til at kontrollere filstørrelsen. Dvs. Er filen for stor, skal der ikke uploades. Og der scriptet skal fortsætte til næste fil og checke størrelsen. osv.

Men die fungere ikke. Den slår jo scriptet ihjel. Er der et alternativ til die(), exit() funktionen ?

Paster lige mit script, i tilfælde af at der skulle være nogen der kan se hvordan det eventuelt kan laves med die.

<form action="<?$_SERVER['PHP_SELF'];?>">
Antal Filer der skal uploades: (maks 15)<br>
<input type="Text" maxlength="2" name="uploadantal"><br>
<input type="submit" value="Yes sir">
</form>
<br>

<form action="<?$_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="100000">

Send filer:<br>
<?
$uploadantal = $_REQUEST['uploadantal'];
if ($uploadantal > 15) { // Tjekker om der er valgt flere end 15 filer at uploade! Hvilket der ikke må være!
    echo "Du kan ikke uploade mere end 15 filer!";
    exit;
};
$count = "1";
while($count <= $uploadantal) { // Mens $count er mindre end eller lig med $uploadantal skal den skrive en filboks.
    echo "<input name=\"userfile[$count]\" type=\"file\"><br>";
    $count = $count + 1;
};
echo "<input type=\"hidden\" name=\"uploadantal\" value=\"$uploadantal\"><br>";
?>
<input type="submit" value="Send Filer">
</form>
<?
// Functionen vi uploader med
function upload($fra, $til) {
  move_uploaded_file($fra, $til);
};
function checksize($size, $maxsize, $name) {
    if($size > $maxsize) {
          die("<b>IKKE UPLOADET!</b> - $name er for stor. Der accepteres kun " . $maxsize . "kb, og din fil fylder " . round($size, 1) . "kb");
    };
};

// Konfiguration
$uploadantal = $_REQUEST['uploadantal'];
$konfiguration["upload_bibliotek"] = "./updir";
$konfiguration["max_stoerrelse"] = "30000";

// Let's go then :)
$count = "1";
while($count <= $uploadantal) {
    $navn = $_FILES["userfile"]["name"][$count];
    $fra = $_FILES["userfile"]["tmp_name"][$count];
    $til = $konfiguration["upload_bibliotek"] . "/" . $_FILES["userfile"]["name"][$count];
    $size = $_FILES["userfile"]["size"][$count];
    $maxsize = $konfiguration["max_stoerrelse"];
    checksize($size, $maxsize, $navn);
    upload($fra, $til);
    if (isset($navn)) {
        echo "Filen $navn er uploadet";
        echo "<br>";
    };
    $count = $count + 1;
};
?>
Avatar billede tjens Nybegynder
27. september 2003 - 00:46 #1
Hvad med bare at echo fejlmeldingen og så returner en boolean:

function checksize($size, $maxsize, $name) {
    if($size > $maxsize) {
        echo "<b>IKKE UPLOADET!</b> - $name er for stor.
        Der accepteres kun " . $maxsize . "kb, og din fil fylder "
        . round($size, 1) . "kb";
        return false;

    };
    return true;
};

Og så test på den boolean inden upload() kaldes:

if (checksize($size, $maxsize, $navn)) {
    upload($fra, $til);
    if (isset($navn)) {
        echo "Filen $navn er uploadet";
        echo "<br>";
    }
}  // endif checksize()
Avatar billede detox Nybegynder
27. september 2003 - 00:48 #2
Måske kunne du osse med fordel rette: MAX_FILE_SIZE=100000 til: 30000.
Avatar billede Six Nybegynder
27. september 2003 - 00:52 #3
tjens. Det var præcis sådan. ;)

Har ikke leget så meget med funktioner. Så jeg er ikke lige den hurtigste puch på havnen, hvad det angår. Men takker for svaret :)

Detox: Ja, det ved jeg godt. Har bare ikke lige fået det rettet. Ved egentlig ikke om det har nogen betydning at det står i formen. Der kommer jo ingen fejl, ved det.
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