Avatar billede stormdk Nybegynder
15. oktober 2005 - 18:32 Der er 6 kommentarer

Upload i php

Hejsa exp.dk brugere!

Jeg har et billedeupload system som egentlig virker godt nok, bortset fra at det ik checker om billedet er over en vis højde / bredde. Scriptet bliver 'fodret' med input'et file. Nogen der kan se hvorfor at man ikke bliver sendt til ".$_SERVER["PHP_SELF"]."?pMsg=5 ?

Koden er som følger, ved godt 10 er et meget lavt tal for en bredde, og dette ændres.

$extlimit = "ja";
$limitedext = array(".JPG",".jpg",".jpeg");
$sizelimit = "ja";
$sizebytes = "35000";
$absolute_path = "img/users";


if($_POST['act']){
  $dir = "dir";
if ($file != "") {
  $ext=strrchr($file_name,'.');
  $ext=strtolower($ext);


if ($_FILES['file']['size'] > $sizebytes) {
  header("location: ".$_SERVER["PHP_SELF"]."?pMsg=1");
  break;
}


if (($extlimit == "ja") && (!in_array($ext,$limitedext))) {
  header("location: ".$_SERVER["PHP_SELF"]."?pMsg=2");
  break;
}

@copy($file, $absolute_path."/".$_COOKIE[user]."".$ext) or die("File couldn't be copied to server :  ".$absolute_path."/".$_COOKIE[user]."".$ext);

    #-+ Read the source image
    $src_img = ImageCreateFromJPEG($absolute_path."/".$_COOKIE[user]."".$ext);

    #Hent billedets bredde og højde
    $imginfo = getimagesize($absolute_path."/".$_COOKIE[user]."".$ext);

    $org_w= $imginfo[0];
    $org_h = $imginfo[1];

$maxwidth = "10";

    if($org_w < $maxwidth){
    header("location: ".$_SERVER["PHP_SELF"]."?pMsg=5");
    break;
    }


    #Sæt det nye billede
    $dst_img = imagecreatetruecolor($org_w,$org_h);

    #Ændre det!
    ImageCopyResized($dst_img, $src_img, 0, 0, 0, 0, $org_w, $org_h, $org_w, $org_h);

    #Gem det!
      ImageJPEG($dst_img, $absolute_path."/".$_COOKIE[user]."".$ext, "95");

    #slet "midlertidige" filer fra serveren.
    imagedestroy($dst_img);
} else {
  header("location: ".$_SERVER["PHP_SELF"]."?pMsg=3");
}
mysql_query("UPDATE users SET image='".$_COOKIE['user']."".$ext."' WHERE id= '$_COOKIE[user]' LIMIT 1");
header("location: ".$_SERVER["PHP_SELF"]."?pMsg=4");
}

Håber I har nogle gode svar :)
Avatar billede razmuzdk Nybegynder
15. oktober 2005 - 18:42 #1
Prøv at lave en print_r($imginfo); efter linjen

$imginfo = getimagesize($absolute_path."/".$_COOKIE[user]."".$ext);

og se hvad den skriver...
Avatar billede stormdk Nybegynder
15. oktober 2005 - 20:30 #2
Har jeg prøver, den giver bare width og height, men har jo læst på php.net, så variablerne er rigtige nok :)
Avatar billede razmuz_dk Nybegynder
15. oktober 2005 - 20:39 #3
Jamen hvad udskriver den? Du skriver jo, at den ikke tjekke højde/bredde ordenligt. Ved at fortælle os/mig hvad $imginfo indeholder, kan vi komme nærmere en løsning :)
Avatar billede stormdk Nybegynder
15. oktober 2005 - 21:01 #4
Jeg har fundet fejlen, den chekker det sådan set helt fint :)

Problemer er at man bliver sendt videre ved hjælp af headers nede omkring updaten, for hvis jeg sætter en echo 'fejl'; så udskriver den fejlen.

Hvordan løser jeg header problemet? Jeg skal ha den til at registrere
header("location: ".$_SERVER["PHP_SELF"]."?pMsg=5");

På forhånd tak,
Christian
Avatar billede razmuzdk Nybegynder
15. oktober 2005 - 23:48 #5
"Problemer er at man bliver sendt videre ved hjælp af headers nede omkring updaten, for hvis jeg sætter en echo 'fejl'; så udskriver den fejlen."

Hvilke headers? Hvilken "update"? :) Jeg forstår ik' hvad det er du spørger om.
Avatar billede stormdk Nybegynder
16. oktober 2005 - 10:14 #6
Hehe, ja var vist en dårlig formulering :/

Men jeg har løst problemet ved at skrive et nyt script :)
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