Avatar billede zyxep Nybegynder
08. december 2003 - 15:34 Der er 13 kommentarer og
1 løsning

opload med filtyper

hey!!

jeg har lavet et upload system men jeg skal også have på så man kun kan oploade bestemte fil typer, har lavet et array med typerne i, men ved ik hvordan jeg skal få det på, skal have så hvis bare en af de 3 typer er forkerte, så skal den sige fejl og den skal ikke oprettes, min kode er sådan her

<?php
// include og sådan nogen ting
ob_start();
session_start();
include("db.inc.php");

?>

<html>
<head>
<title>Jaguar.dk</title>
<link href="jaguar.css" rel="stylesheet" type="text/css">
<script>
    function submitForm() {
        if (window.event.keyCode == 13) {
            document.add.submit();
        }
    }
</script>
</head>
<body bgcolor="a0bbd0">
<table width="750" height="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td width="160" valign="top" class="text1"><?php
$res = mysql_query("SELECT * from users where username = '$username'");
          session_register("user"); $user = mysql_fetch_array($res);
          if($_SESSION['user']['level'] >= 1) {
              include("loggedin.php");
          } else {
    include("login.php");
}
?>
</td>
    <td valign="top" class="text1">
    <form action="addbil.php" method="post" name="add" id="add" enctype="multipart/form-data">
  <table width="590" border="0" cellspacing="0" cellpadding="0" class="text1">
    <tr>
      <td width="174">Navn:</td>
      <td width="416"><input name="navn" type="text" class="login" id="navn"></td>
    </tr>
    <tr>
      <td>Motor:</td>
      <td><input name="motor" type="text" class="login" id="motor"></td>
    </tr>
    <tr>
      <td>Topfart:</td>
      <td><input name="topfart" type="text" class="login" id="topfart"></td>
    </tr>
    <tr>
      <td>Pris:</td>
      <td><input name="pris" type="text" class="login"></td>
    </tr>
    <tr>
      <td>Acceleration:</td>
      <td><input name="Acceleration" type="text" class="login" id="acceleration"></td>
    </tr>
    <tr>
      <td>Gear:</td>
      <td><input name="gear" type="text" class="login" id="gear"></td>
    </tr>
    <tr>
      <td>Billede 1: </td>
      <td><input name="billed" type="file" class="login" id="billed"></td>
    </tr>
    <tr>
      <td>Billede 2: </td>
      <td><input name="billed2" type="file" class="login" id="billed2"></td>
    </tr>
    <tr>
      <td>Billede 3: </td>
      <td><input name="billed3" type="file" class="login" id="billed3"></td>
    </tr>
    <tr>
      <td colspan="2"><a href="java script:document.add.submit();" class="midt">Add bil</a></td>
    </tr>
  </table>
  <input type="hidden" name="MAX_FILE_SIZE" value="30000">
</form>
<?php
function billed()
{
    global $_FILES;
    global $file;
    global $typer;

$dir = "Biler/";
$file = $dir. $_FILES['billed']['name'];
$list = explode(".", $_FILES['billed']['name']);

$typer = array("image/pjpeg", "image/jpeg", "image/gif", "image/x-png", "image/x-dwg");
if (!in_array($_FILES['billed']['type'], $typer)) {
echo "du må ikke uploade den filtype";
    }
move_uploaded_file($_FILES['billed']['tmp_name'], $file);
};

function billed2()
{
    global $_FILES;
    global $file2;
    global $typer2;

$dir2 = "Biler/";
$file2 = $dir2. $_FILES['billed2']['name'];
$list = explode(".", $_FILES['billed2']['name']);

$typer2 = array("image/pjpeg", "image/jpeg", "image/gif", "image/x-png", "image/x-dwg");
if (!in_array($_FILES['billed2']['type'], $typer2)) {
echo "du må ikke uploade den filtype";
    }
move_uploaded_file($_FILES['billed2']['tmp_name'], $file2);
};

function billed3()
{
    global $_FILES;
    global $file3;
    global $typer3;

$dir3 = "Biler/";
$file3 = $dir3. $_FILES['billed3']['name'];
$list = explode(".", $_FILES['billed3']['name']);

$typer3 = array("image/pjpeg", "image/jpeg", "image/gif", "image/x-png", "image/x-dwg");
if (!in_array($_FILES['billed3']['type'], $typer3)) {
echo "du må ikke uploade den filtype";
    }
move_uploaded_file($_FILES['billed3']['tmp_name'], $file3);
};


if ($_SERVER["REQUEST_METHOD"] == "POST") {
    billed();
    billed2();
    billed3();
    mysql_query("insert into modeller (modelnavn) values ('$_POST[navn]')") or die (mysql_error());
    $modelnr = mysql_query("select modelnr from modeller order by modelnr desc") or die (mysql_error());
    $r = mysql_fetch_array($modelnr);
    mysql_query("INSERT INTO biler (modelnr, billed, billed2, billed3, navn, pris, gear, topfart, motor, Acceleration) values ('$r[modelnr]', '$file', '$file2', '$file3', '$_POST[navn]', '$_POST[pris]', '$_POST[gear]', '$_POST[topfart]', '$_POST[motor]', '$_POST[Acceleration]')") or die (mysql_error());
    header("location: index.php");
}
?>
    </td>
  </tr>
</table>
   


plz håber nogen kan hjælpe mig, måske med en bedre kode ved ik
Avatar billede Slettet bruger
08. december 2003 - 15:50 #1
Jeg er ikke sikker på jeg har forstået dit script, men hvad forhindrer dig i at lave en if-sætning, som tjekker om billed 1-3 er tomme variabler?
Avatar billede zyxep Nybegynder
08. december 2003 - 15:56 #2
det forstår jeg ikke lige ?,
Avatar billede oomalkeoo Nybegynder
08. december 2003 - 16:03 #3
<?
ob_start();
?>
<html><head><title>Upload resultat</title>
<link rel="stylesheet" type="text/css" href="upload.css">
</head>
<body>
<p>
<center>
<table><tr>
<td><?php

if (isset($_FILES['upfile'])) {

//til brug for info om filtyper
$str1 = $_FILES['upfile']['name'];
$str2 = $_FILES['upfile']['size'];
$str3 = $_FILES['upfile']['type'];

//Filer som kan uploades
$filetyper = array("image/gif", "image/jpeg", "image/pjpeg", "image/png");

//stien, hvortil filerne skal placeres   
$dist = "";

//Tjek om der er en fil, samt om den overholder filtypen som kan uploades
    if (isset($_FILES['upfile']['name']) && $_FILES['upfile']['name'] == "") {
echo"Ingen fil valgt! <a href=\"$_SERVER[HTTP_REFERER]\">tilbage</a></td>\n";
echo"</tr></table>\n";
echo"</center>\n";
echo"</body></html>";
exit;

}elseif (!in_array($_FILES['upfile']['type'], $filetyper)) {
echo "Filen kan ikke uploades.<br>\n<b>$str3</b> er ikke tilladt for upload! <a href=\"$_SERVER[HTTP_REFERER]\">tilbage</a></td>\n";
echo"</tr></table>\n";
echo"</center>\n";
echo"</body></html>";
exit;
    }

echo"&Oslash;nsket fil til upload:<p>\n";

    if (isset($_FILES['upfile']['name']) && $_FILES['upfile']['name'] !="") {

//se http://dk.php.net/manual/en/function.is-uploaded-file.php for "is_uploaded_file"       
        if(is_uploaded_file($_FILES['upfile']['tmp_name'])) {

//Flyt filen fra upload-tmp til et dir. Husk at ændre "$dist" ovenover så det passer med din server :O)
move_uploaded_file($_FILES['upfile']['tmp_name'], $dist . $_FILES['upfile']['name']);
        }else{
        echo"Sorry, men upload skete IKKE!";
    }

header("location: index.php");
echo "<b>Navn:</b> $str1, <b>st&oslash;rrelse:</b> $str2 bytes, <b>filtype:</b> $str3<br>\n";
echo"</p>";
    }
}else{

echo "Du skal v&aelig;lge en fil til upload. <a href=\"index.php\">Index</a>";
}
?></td>

</tr></table>

</center>

</body></html>
Avatar billede zyxep Nybegynder
08. december 2003 - 16:04 #4
oomalkeoo det kan jeg ikke bruge, det skal være sammen med mit også! sry
Avatar billede oomalkeoo Nybegynder
08. december 2003 - 16:05 #5
Brug: if (!in_array($_FILES['upfile']['type'], $filetyper)) {
hvor $filetyper er dit array
Avatar billede zyxep Nybegynder
08. december 2003 - 16:08 #6
har prøvet virker ik :(
Avatar billede googolplex Novice
08. december 2003 - 22:45 #7
Kan du ikke lige prøve at skrive '$_FILES['billed']['type']' ud, den burde virke, jeg bruger den selv.

$_FILES er forresten superglobal, så du behøver ikke bruge 'global $_FILES'.
Avatar billede googolplex Novice
08. december 2003 - 22:54 #8
Alternativt kan du finde filens extension og så tjekke på den, så skal du bare lave dine arrays om til:

$filtyper = array("jpg", "bmp");

Derefter:

$extension = end(explode('.', $_FILES['billed']['name']));

if (!in_array($extension, $filtyper)
{
    // Ingen upload
}
else
{
    // Upload
}
Avatar billede googolplex Novice
08. december 2003 - 22:55 #9
Hov, mangler lige et ')' på:

if (!in_array($extension, $filtyper))
Avatar billede zyxep Nybegynder
09. december 2003 - 11:02 #10
hmmm det virker ik :( har lige prøvet
Avatar billede sukos Juniormester
09. december 2003 - 11:10 #11
Mangler du ikke at bruge en exit(); efter
echo "du må ikke uploade den filtype";

???

Selvom du echo'er, vil billedet jo blive flyttet?
Avatar billede sukos Juniormester
09. december 2003 - 11:12 #12
Og jeg ville lave en forløkke, til at hente antal filer som uploades
Avatar billede zyxep Nybegynder
09. december 2003 - 12:12 #13
sukos, hmm nej for hvis jeg bruger exit(); så dræber den det måde jeg laver det på så vidt jeg husker :( ikke så godt så det tror jeg ik, men det virker anyway ikke
Avatar billede zyxep Nybegynder
08. januar 2004 - 17:04 #14
lukker
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