Avatar billede dejbjerg Nybegynder
28. maj 2004 - 11:51 Der er 11 kommentarer og
2 løsninger

Upload script virker i Explorer men ikke Mozilla?

Nedenstående (billede)upload script virker ikke i Mozilla, men det virker fint i MS Explorer..

Er der nogen der kan give mig en ide om hvorfor?

frm_upload.php:
<?php require("../tjek_logind.php"); ?>
<html>
<head>

<h1>Upload billede eller fil<hr></h1>

<form enctype="multipart/form-data" action="forms/upload_proc.php" method="post">
Vælg fil: <input name="brugerfil" type="file"><br><br>
<input type="submit" value="Upload fil"><br>
</form>


<?php
$indhold = ListFiler("./upload/billeder");
echo $indhold;
?>
<hr>
<font style="font-size:11px; color:red">Bemærk: Undlad at bruge mellemrum i filnavne. Brug_feks_underscore_til_at_adskille_ord.<br>
Hvis du oploader en fil med samme navn og filtype, som en der allerede eksisterer, erstattes denne - uden advarsel.<br>
I listen vises kun billeder på lager. Hvis du vil se de øvrige uploadede filer skal du taste /upload/ i browservinduet.<br>
</font>
</body>
</html>


upload_proc.php:
<?php require("../tjek_logind.php"); ?>
<html>
<head>

<body>
<?php

$upfile_image ="../upload/billeder/".$brugerfil_name;
$upfile_other ="../upload/".$brugerfil_name;

if ($brugerfil_type == "image/png" || $brugerfil_type == "image/gif" || $brugerfil_type == "image/jpg" || $brugerfil_type == "image/pjpeg")
{
    if (!copy($brugerfil, $upfile_image))
    {
        echo "Der er opstået et problem; filen kan ikke flyttes til den valgte mappe";
    }
}else{
    if (!copy($brugerfil, $upfile_other))
    {
        echo "Der er opstået et problem2; filen kan ikke flyttes til den valgte mappe";
    }
}

header("Location: ../admin.php");

?>

</body>
</html>


Funktionen List_filer (i hf_lib.php):
function ListFiler($bibliotek) {

  if($bib = @opendir($bibliotek)) {
 
    while (false !== ($fil = readdir($bib))) {
      if($fil != "." && $fil != ".." && !ereg("^\..+", $fil)) {
          $fil_liste[] = "<a href=\"$bibliotek/$fil\">$fil</a>";
      }
    }
    closedir($bib);

    if(is_array($fil_liste)) {
      $liste = "<li>" . join("</li><li>", $fil_liste) . "</li>";
    } else {
      $liste = "<li>Ingen filer på lager</li>";
    }
    return "<h1>På lager:</h1><ul>" . $liste . "</ul>";
  } else {
    die("Kunne ikke åbne biblioteket: " . $bibliotek);
  }

}
Avatar billede fangel Nybegynder
28. maj 2004 - 11:57 #1
evt. fejlmeddelser ville være rart

en mulig fejl er din fuck'ed (undskyld sproget) markup i frm_upload.php

---
<html>
<head>
<h1>..</h1>
<form>..</form>
---

5 point til den der kan se fejlen ...
1) du mangler afslutning af <head>
2) du har ingen <body>
3) du har ingen afslutning af <body>
4) du har inden afslutning af <html>
!!!
det skal se mere sådan her ud

<html>
<head>
  <title>...</title>
</head>
<body>
  <h1>...</h1>
  <form>...</form>
</body>
</html>

Prøv det, og se om så ikke Mozilla kan overskue og render siden ordenligt ;)

Morten
Avatar billede dejbjerg Nybegynder
28. maj 2004 - 12:04 #2
ah .. det skyldes klippe klistre fejl..

Begge viser siden fint, det er når jeg submitter, den er gal.

I Explorer uploades filen som den skal, men ikke i Mozilla.
Avatar billede dejbjerg Nybegynder
28. maj 2004 - 12:18 #3
Nul fejlmeddelelser...den uploader bare ikke
Avatar billede fangel Nybegynder
28. maj 2004 - 12:21 #4
prøv på upload_proc at indsæt

if(isset($_FILES['brugerfil'])){
  echo '<pre>';
  print_r($_FLES['brugerfil']);
  echo '</pre>';
}
else
  echo '$_FILES['brugerfil'] (aka din fil) blev ikke overført!';

for at få lidt debug info...

Morten
Avatar billede dejbjerg Nybegynder
28. maj 2004 - 12:25 #5
har fundet fejlen, explorer sender filen som .pjpeg
mozilla som .jpeg
Avatar billede dejbjerg Nybegynder
28. maj 2004 - 12:27 #6
if ($brugerfil_type == "image/png" || $brugerfil_type == "image/gif" || $brugerfil_type == "image/jpg" || $brugerfil_type == "image/pjpeg" || $brugerfil_type == "image/jpeg" )

retter op på det.
Avatar billede dejbjerg Nybegynder
28. maj 2004 - 12:28 #7
Tak for hjælpen.
Avatar billede fangel Nybegynder
28. maj 2004 - 12:28 #8
ok, så det er bare IE der fucker op i MIME-types... vældig interesant...

MEN, du bør bruge det pæne $_FILES array, nu der er kommet ind, da det 'fremtids-sikre' dit script... tjek php.net manualen for hvordan man lege med det...

Morten
Avatar billede fangel Nybegynder
28. maj 2004 - 12:29 #9
smidder et svar, så kan du acceptere det hvis du vil - eller selv lægge et svar ofor at lukke spørgsmålet
Avatar billede dejbjerg Nybegynder
28. maj 2004 - 12:29 #10
LUKKER
Avatar billede dejbjerg Nybegynder
28. maj 2004 - 12:30 #11
:)
Avatar billede sukos Juniormester
28. maj 2004 - 14:37 #12
I stedet for dine if type......
vil tro at du med fordel kan bruge:

if(false == ($str = getimagesize($_FILES["brugerfil"]["tmp_name"]))) {
echo"Valgte fil til upload er ikke en billedfil!!!";
exit();
}

if($str[2] > 3) {
echo"Kun jpg, gif og png filer kan uploades!!!";
exit();
}

1. Du tjekker om det rent faktisk er en billedfil
2. $str[2] fortæller hvilken type af fil det er. 1 -> gif, 2 -> jpg, 3 -> png
Avatar billede dejbjerg Nybegynder
31. maj 2004 - 00:10 #13
Unægteligt lidt fiksere, takker :)
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