Avatar billede mike89 Nybegynder
08. marts 2012 - 22:30 Der er 8 kommentarer

Upload + komprimering af billede

Hej :) jeg er ny herinde og har fået at vide i er gode til at hjælpe
jeg er ved at lave en side hvor jeg har brug for en billed uploader, men kan ikke få den til at virke.. her er koden til siden man vælger filen + andet på.. (der var mere i formen men det skar jeg væk)

<body>       
<form action="send.php" method="post" enctype="multipart/form-data">
<div>
<a href="index.php" title="Klik her for at komme til tagwallén">Til tagwallén</a><br />

    <input type="hidden" name="MAX_FILE_SIZE" value="9999999" />
    Vælg fil:<br /> <input name="minfil" type="file" id="minfil" /> <br />
        Title:<br /><textarea name="title" id="title" cols="50" rows="1" ></textarea><br />
      Kort tekst:<br /> <textarea name="korttekst" id="korttekst" cols="50" rows="3"></textarea> <br />
        <input type="submit" value="Inds&aelig;tte indl&aelig;g" class="redigering" />
</div>
</form>

og her er "send.php" :


<?php
// der skal anvendes sessions på denne side
session_start();

//if(!isset($_SESSION['bruger']))
//{
    //session_destroy();
    //header("Location: login.php");
//}
//else
{
    // ellers er alt ok
echo '<?xml version="1.0" encoding="utf-8"?>';
ini_set('display_errors', 0);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ (...)
<html xmlns="http://www.w3.org/ (...)
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>

<body>
<?php
//hent DB-fil
require("login.conf1.php");
//åbne databaseforbindelsen
$forbindelse = openDB();
//Vælg database
mysql_select_db("databasen");
//hent data fra formular
$title = mysql_real_escape_string($_POST['title']);
$korttekst = mysql_real_escape_string($_POST['korttekst']);
$fuldtekst = mysql_real_escape_string($_POST['fuldtekst']);
$region = mysql_real_escape_string($_POST['region']);
$postnr = mysql_real_escape_string($_POST['postnr']);
$overkatagori = mysql_real_escape_string($_POST['overkatagori']);
$underkatagori = mysql_real_escape_string($_POST['underkatagori']);
$spar = mysql_real_escape_string($_POST['spar']);
//upload filen
$add="billede/".$_FILES[minfil][name]; // the path with the file name where the file will be stored, upload is the directory name.
//echo $add;
if(move_uploaded_file ($_FILES[minfil][tmp_name],$add)){
echo "Filen ".$_FILES['minfil']['name']. " blev uploadet!";
chmod("$add",0777);

}else{echo "Failed to upload file Contact Site admin to fix the problem";
exit;}
///////// Start the thumbnail generation//////////////
$n_width=100; // Fix the width of the thumb nail images
$n_height=100; // Fix the height of the thumb nail imaage

$tsrc="billede/thumb/".$_FILES[minfil][name]; // Path where thumb nail image will be stored
//echo $tsrc;
if (!($_FILES[minfil][type] =="image/jpeg" OR $_FILES[minfil][type]=="image/gif")){echo "Your uploaded file must be of JPG or GIF. Other file types are not allowed<BR>";
exit;}
//////////// Starting of GIF thumb nail creation///////////
if (@$_FILES[minfil][type]=="image/gif")
{
$im=ImageCreateFromGIF($add);
$width=ImageSx($im); // Original picture width is stored
$height=ImageSy($im); // Original picture height is stored
$newimage=imagecreatetruecolor($n_width,$n_height);
imageCopyResized($newimage,$im,0,0,0,0,$n_width,$n_height,$width,$height);
if (function_exists("imagegif")) {
Header("Content-type: image/gif");
ImageGIF($newimage,$tsrc);
}
elseif (function_exists("imagejpeg")) {
Header("Content-type: image/jpeg");
ImageJPEG($newimage,$tsrc);
}
chmod("$tsrc",0777);
}////////// end of gif file thumb nail creation//////////

////////////// starting of JPG thumb nail creation//////////
if($_FILES[minfil][type]=="image/jpeg"){
$im=ImageCreateFromJPEG($add);
$width=ImageSx($im); // Original picture width is stored
$height=ImageSy($im); // Original picture height is stored
$newimage=imagecreatetruecolor($n_width,$n_height);
imageCopyResized($newimage,$im,0,0,0,0,$n_width,$n_height,$width,$height);
ImageJpeg($newimage,$tsrc);
chmod("$tsrc",0777);
}
//////////////// End of JPG thumb nail creation //////////
//indsæt ny række i billedetabelen
//sql sætning
$sql = "INSERT INTO tilbud (id,postnr,region,title,korttekst,fuldtekst,fuldtekst,lillebillede,storbillede,spar,overkatagori,underkatagori) VALUES(id,'$postnr','$region','$title','$korttekst','$fuldtekst','$tsrc','$add','$spar','$overkatagori','$underkatagori') ";

//udført sql
$ok = mysql_query($sql,$forbindelse);
if($ok)
{
    echo "&nbsp;Oprettet i databasen<br /><a href='billede.php'>Tilføj nyt billede</a> - <a href='../index.php' title='forside CMS'>Tilbage til CMS forside</a>";
}
else
{
    echo "&nbsp;Billede blev ikke oprettet i databasen";
}
closeDB();
}
?>
</body>
</html>
Avatar billede olebole Juniormester
08. marts 2012 - 22:35 #1
<ole>

Når du skriver, at scriptet ikke virker, hvad mener du så? Hvad sker der, og hvad sker der ikke?

/mvh
</bole>
Avatar billede olebole Juniormester
08. marts 2012 - 22:41 #2
Brugeren jakobdo har skrevet nogle udmærkede guides om billedupload:

http://www.eksperten.dk/guide/1098
http://www.eksperten.dk/guide/1141
http://www.eksperten.dk/guide/1200
http://www.eksperten.dk/guide/1201

Derudover kan jeg se, du bruger et ret forældet MySQL-API. Det er der ikke rigtig nogen, der længere skriver nye applikationer i. Brug i stedet prepared statements i enten MySQLI eller PDO.

Du kan evt. tjekke denne guide. Så slipper du også for at forsøge at 'hacke' dig til sikkerhed med mysql_real_escape_string o.lign.  =)
Avatar billede olebole Juniormester
08. marts 2012 - 22:46 #3
PS: Denne linje:

echo '<?xml version="1.0" encoding="utf-8"?>';

- har du intet at bruge til. Den er en misforståelse at bruge med XHTML 1.0. Da du ikke bruger XML i dokumentet, er det i det hele taget lidt misforstået at bruge XHTML  =)

Derudover sørger denne linje:

ini_set('display_errors', 0);
´
- for, at du ikke får vist fejlmeddelelser. Den bør du helt klart udkommentere, sålænge du udvikler. Ellers får du ikke at vide, når du laver noget galt
Avatar billede mike89 Nybegynder
08. marts 2012 - 22:53 #4
lige nu får jeg min egen fejl meddelse "Failed to upload file Contact Site admin to fix the problem"
og det er efter jeg lige har udkommenteret ini_set/'display_errors',0);
Avatar billede olebole Juniormester
08. marts 2012 - 23:10 #5
Har du en mappe, som hedder 'billede' - og som ligger ved siden af 'send.php'? Og har du skriverettigheder på mappen?
Avatar billede mike89 Nybegynder
08. marts 2012 - 23:16 #6
ja det har jeg.. og også en "thumb" mappe i "billede"
Avatar billede olebole Juniormester
08. marts 2012 - 23:25 #7
Så vidt jeg kan se, har du en curly bracket for meget i begyndelsen og slutningen af scriptet ... noget, der er opstået i forbindelse med udkommenteringen i begyndelsen.

Derudover forstår jeg ikke store dele af scriptet - herunder dine chmods. De står, så vidt jeg kan se, alle i slutningen af de blokke, hvor der kan være brug for dem i begyndelsen.

Jeg må indrømme, at koden er så rodet og dårligt stillet op, at jeg ikke har lyst til at pille i den  =)
Avatar billede tobrukDk Novice
08. marts 2012 - 23:27 #8
Hvis det er sådan har jeg også et utroligt lille og nemt upload :) som ligger billede hen i en mappe og du kan bedste hvor høj den skal være osv.. :)
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