Avatar billede jens12 Nybegynder
27. maj 2006 - 20:24 Der er 27 kommentarer og
1 løsning

Hvorfor virker fejlmeddelserne ikke ?

Hej..
Jeg har et problem med mit opload sytem....
Når jeg for eksempel prøver på at oploade et billede på over 100 kb (end de tilladte 100 kb),så skulle den jo gerne sige Desværre - filen er for stor. Ejerne accepterer kun .... men det gør den ikke,nogen gange viser den "siden kan ikke vises" og nogen gange viser den fil hvor man kan vælge gennemse...Men hvis jeg vælger en fil som ikke er et billede fil så siger den fint :
Ikke et godkendt billede format: (jpeg, jpg, jpe)....Hvad er fejlen ?
<?php
session_start();
include("connect.php");

function resize( $filename, $newfilename, $maxw, $maxh )
{
    list($width, $height, $filetype, $attr) = getimagesize($filename);
    $srcim = imagecreatefromjpeg( $filename );
    $ow = imagesx( $srcim );
    $oh = imagesy( $srcim );
    $wscale = $maxw / $ow;
    $hscale = $maxh / $oh;
    $scale = ( $hscale < $wscale ? $hscale : $wscale );
    $nw = round( $ow * $scale, 0 );
    $nh = round( $oh * $scale, 0 );
    $dstim = imagecreatetruecolor( $nw, $nh );
    imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
    imagejpeg( $dstim, $newfilename, 85 );
    imagedestroy( $dstim );
    imagedestroy( $srcim );
   
    return file_exists($newfilename);
}

// TIL DEBUG
/*
echo "DEBUG - FILES";
echo "<pre>";
print_r($_FILES);
echo "</pre>";

echo "DEBUG - POST";
echo "<pre>";
print_r($_POST);
echo "</pre>";

echo "DEBUG - SESSION";
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
*/

$konfiguration['upload_large']        = "/home/web/web24064/community/profil/large/";
$konfiguration['upload_small']        = "/home/web/web24064/community/profil/small/";
$konfiguration['max_stoerrelse']    = 100*1024; //100KB
$konfiguration['max_width']            = 450; //Ja, tilladte max. højde ved large
$konfiguration['max_height']            = 450; //Tilladte max. bredde ved large
$konfiguration['small_width']        = 165; //Ja, tilladte max. højde ved small
$konfiguration['small_height']        = 130; //Tilladte max. bredde ved small

$tilladte_filtyper = array("jpeg", "jpg", "jpe");//tilladte filtyper. Tilføj fx. "image/gif"

$fra = $_FILES['upfil']['tmp_name'];
$extension = strtolower(end(explode('.',$_FILES['upfil']['name'])));
//$uniqueFile = $_SESSION['id'] . "_" . md5(uniqid(rand(), true));

$til_large = $konfiguration['upload_large'] . "profil_" . $_SESSION['id'] . "." . $extension;
$til_small = $konfiguration['upload_small'] . "profil_" . $_SESSION['id'] . "." . $extension;

//$til_large = $konfiguration['upload_large'] . $_FILES['upfil']['name'];
//$til_small = $konfiguration['upload_small'] . $_FILES['upfil']['name'];

$fil_stoerrelse = filesize($fra)/1024;//Omregner til KB
if($fil_stoerrelse > $konfiguration['max_stoerrelse'])
{
    echo"Desværre - filen er for stor. Ejerne accepterer kun " .
    $konfiguration['max_stoerrelse'] . "kb, og dit billede fylder " .
    ceil($fil_stoerrelse, 1) . " kb";
}
   
//Er fil-typen blandt tilladte?
if (in_array($extension,$tilladte_filtyper))
{
    //Lav det store billede...
    resize($fra,$til_large,$konfiguration['max_width'],$konfiguration['max_height']) or die("Desværre det store billede ikke generet!");

            //Lav det lille billede...
    resize($fra,$til_small,$konfiguration['small_width'],$konfiguration['small_height']) or die("Desværre det lille billede ikke generet!");
   
    $tjek_om_billedet_er_der = mysql_query("SELECT * FROM profil WHERE user = '".$_SESSION['user']."'") or die(mysql_error());
    $lolo = mysql_num_rows($tjek_om_billedet_er_der);
    if($lolo == "1") {    //tjekker om billedes plads er der !
    mysql_query("UPDATE profil SET dato = NOW() WHERE user = '".$_SESSION['user']."'");
    mysql_query("UPDATE profil SET godkendt = 'nej' WHERE user = '".$_SESSION['user']."'");
   
    echo"<b>Dit Profil billede er nu overført!</b><br>";
echo"<H3><font color=\"red\"><b>OBS:Du skal nu vente til at en supporter/admin godkender dit profil-billede!</b></font></H3><br><br>";
echo"<a href=\"/community/profile.php\">Klik her for at gå til din profil</a>";
}
else
{

        mysql_query("INSERT INTO profil(id,image,small_image,dato,user,godkendt)"."VALUES('".$_SESSION['id']."','".basename($til_large)."','".basename($til_small)."',NOW(),'".$_SESSION['user']."','nej')");
        echo"<b>Dit Profil billede er nu overført!</b><br>";
echo"<H3><font color=\"red\"><b>OBS:Du skal nu vente til at en supporter/admin godkender dit profil-billede!</b></font></H3><br><br>";
echo"<a href=\"/community/profile.php\">Klik her for at gå til din profil</a>";
}
}
else
{
    echo "Ikke et godkendt billede format: (jpeg, jpg, jpe)";
}

?>
<?
mysql_close();
?>
<link rel="stylesheet" href="/style/style.css" type="text/css">
Avatar billede jakobdo Ekspert
28. maj 2006 - 14:27 #1
Prøv som test at udskrive disse 2 variabler:

echo "FILSTØRRELSE: " . $fil_stoerrelse . "<br />";
echo "MAXSTØRRELSE: " . $konfiguration['max_stoerrelse'] . "<br />";
Måske de indeholder ukorrekte data.
Avatar billede jens12 Nybegynder
28. maj 2006 - 18:36 #2
Jeg prøver...:P
Avatar billede jens12 Nybegynder
28. maj 2006 - 18:39 #3
Resultatet blev :
FILSTØRRELSE:
MAXSTØRRELSE:
.....
Avatar billede jakobdo Ekspert
28. maj 2006 - 19:26 #4
Skriver den noget data ud i denne kode:

echo "DEBUG - FILES";
echo "<pre>";
print_r($_FILES);
echo "</pre>"; ??
Avatar billede jens12 Nybegynder
28. maj 2006 - 19:34 #5
Så viser den bare den side hvor man kan overføre billedet:S
Jeg synes det er godt nok underligt!
Avatar billede jens12 Nybegynder
28. maj 2006 - 19:35 #6
KAn det havde noget at gøre med timeout på serveren ?
Avatar billede jakobdo Ekspert
28. maj 2006 - 19:40 #7
Hvor stort et billede prøver du at uploade?
Avatar billede jens12 Nybegynder
28. maj 2006 - 19:42 #8
Billedet er på : 1632 x 1224
fylder 362 kb.
Avatar billede jakobdo Ekspert
28. maj 2006 - 19:43 #9
Jeg tror den fejler i denne kode: $srcim = imagecreatefromjpeg( $filename );
Store billeder bruger meget plads i hukommelsen.
Prøv at test med et mindre billede.
Avatar billede jens12 Nybegynder
28. maj 2006 - 19:53 #10
Nu har jeg prøvet med et billede som fylder 146 kb
1024 x 768
og der siger den :
Array
(
    [upfil] => Array
        (
            [name] => lol.JPG
            [type] => image/pjpeg
            [tmp_name] => /var/tmp/phpzEGHug
            [error] => 0
            [size] => 150362
        )

)
Avatar billede jens12 Nybegynder
28. maj 2006 - 19:54 #11
Og det kunne den godt overføre...Selvom det fylder over de tilladte 100 kb!
Avatar billede jakobdo Ekspert
28. maj 2006 - 20:16 #12
Prøv at ret:
if($fil_stoerrelse > $konfiguration['max_stoerrelse'])
til:
if($_FILES['upfil']['size'] > $konfiguration['max_stoerrelse'])
Avatar billede jens12 Nybegynder
28. maj 2006 - 20:54 #13
Så siger den :
Warning: Wrong parameter count for ceil() in /usr/home/web/web24064/community/profil/oploadet_profpicture.php on line 69
Desværre - filen er for stor. Ejerne accepterer kun 102400kb, og dit billede fylder kbDit Profil billede er nu overført!

OBS:Du skal nu vente til at en supporter/admin godkender dit profil-billede!


Klik her for at gå til din profil
Avatar billede jens12 Nybegynder
28. maj 2006 - 20:54 #14
Og den har overført billedet alligevel...
Avatar billede jakobdo Ekspert
28. maj 2006 - 21:24 #15
Smid en exit() efter ceil($fil_stoerrelse, 1) . " kb";
Og ret samtidig:
ceil($fil_stoerrelse, 1) . " kb";
til:
ceil($_FILES['upfil']['size']/1024, 1) . " kb";
Avatar billede jens12 Nybegynder
28. maj 2006 - 21:25 #16
Fejl:
Warning: Wrong parameter count for ceil() in /usr/home/web/web24064/community/profil/oploadet_profpicture.php on line 69
Desværre - filen er for stor. Ejerne accepterer kun 102400kb, og dit billede fylder kb
Avatar billede jens12 Nybegynder
28. maj 2006 - 21:42 #17
Nu virker denne fejl meddelse ikke :
Ikke et godkendt billede format: (jpeg, jpg, jpe)
Avatar billede jakobdo Ekspert
29. maj 2006 - 08:46 #18
Ret: ceil($_FILES['upfil']['size']/1024, 1) . " kb";
til:
ceil(($_FILES['upfil']['size']/1024), 1) . " kb";
Avatar billede jens12 Nybegynder
29. maj 2006 - 14:13 #19
Fejl : Warning: Wrong parameter count for ceil() in /usr/home/web/web24064/community/profil/oploadet_profpicture.php on line 69
Desværre - Billedet fylder for meget!. Ejerne accepterer kun 102400kb, og dit billede fylder kb
Avatar billede jakobdo Ekspert
29. maj 2006 - 17:28 #20
Kan du lidt php selv?
Eller er det bare et script du har fundet og så sat ind i din kode og håbede på det ville virke? :o)
Avatar billede jens12 Nybegynder
29. maj 2006 - 17:37 #21
Ja,Jeg kan faktisk godt php!
Avatar billede jens12 Nybegynder
29. maj 2006 - 17:42 #22
Har fået det til at virke nu!
Lig et svar
Avatar billede jakobdo Ekspert
29. maj 2006 - 17:43 #23
Prøv at test denne:

<?php
session_start();
include("connect.php");

function resize( $filename, $newfilename, $maxw, $maxh )
{
    list($width, $height, $filetype, $attr) = getimagesize($filename);
    $srcim = imagecreatefromjpeg( $filename );
    $ow = imagesx( $srcim );
    $oh = imagesy( $srcim );
    $wscale = $maxw / $ow;
    $hscale = $maxh / $oh;
    $scale = ( $hscale < $wscale ? $hscale : $wscale );
    $nw = round( $ow * $scale, 0 );
    $nh = round( $oh * $scale, 0 );
    $dstim = imagecreatetruecolor( $nw, $nh );
    imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
    imagejpeg( $dstim, $newfilename, 85 );
    imagedestroy( $dstim );
    imagedestroy( $srcim );
 
    return file_exists($newfilename);
}

$konfiguration['upload_large']        = "/home/web/web24064/community/profil/large/";
$konfiguration['upload_small']        = "/home/web/web24064/community/profil/small/";
$konfiguration['max_stoerrelse']    = 100*1024; //100KB
$konfiguration['max_width']                = 450; //Ja, tilladte max. højde ved large
$konfiguration['max_height']            = 450; //Tilladte max. bredde ved large
$konfiguration['small_width']            = 165; //Ja, tilladte max. højde ved small
$konfiguration['small_height']        = 130; //Tilladte max. bredde ved small

$tilladte_filtyper = array("jpeg", "jpg", "jpe");//tilladte filtyper. Tilføj fx. "image/gif"

$fra = $_FILES['upfil']['tmp_name'];
$extension = strtolower(end(explode('.',$_FILES['upfil']['name'])));

$til_large = $konfiguration['upload_large'] . "profil_" . $_SESSION['id'] . "." . $extension;
$til_small = $konfiguration['upload_small'] . "profil_" . $_SESSION['id'] . "." . $extension;

$fil_stoerrelse = $_FILES['upfil']['size']/1024;//Omregner til KB
if($fil_stoerrelse > $konfiguration['max_stoerrelse'])
{
    echo"Desværre - filen er for stor. Ejerne accepterer kun " .
    $konfiguration['max_stoerrelse'] . "kb, og dit billede fylder " .
    ceil($fil_stoerrelse, 1) . " kb";
}
else

    //Er fil-typen blandt tilladte?
    if (in_array($extension,$tilladte_filtyper))
    {
        //Lav det store billede...
        resize($fra,$til_large,$konfiguration['max_width'],$konfiguration['max_height']) or die("Desværre det store billede ikke generet!");
   
        //Lav det lille billede...
        resize($fra,$til_small,$konfiguration['small_width'],$konfiguration['small_height']) or die("Desværre det lille billede ikke generet!");
     
        $tjek_om_billedet_er_der = mysql_query("SELECT * FROM profil WHERE user = '".$_SESSION['user']."'") or die(mysql_error());
        $lolo = mysql_num_rows($tjek_om_billedet_er_der);
        if($lolo == 1)
        {
            //tjekker om billedes plads er der !
            mysql_query("UPDATE profil SET dato = NOW() WHERE user = '".$_SESSION['user']."'");
            mysql_query("UPDATE profil SET godkendt = 'nej' WHERE user = '".$_SESSION['user']."'");
     
            echo"<b>Dit Profil billede er nu overført!</b><br>";
            echo"<H3><font color=\"red\"><b>OBS:Du skal nu vente til at en supporter/admin godkender dit profil-billede!</b></font></H3><br><br>";
            echo"<a href=\"/community/profile.php\">Klik her for at gå til din profil</a>";
        }
        else
        {
            mysql_query("INSERT INTO profil(id,image,small_image,dato,user,godkendt)"."VALUES('".$_SESSION['id']."','".basename($til_large)."','".basename($til_small)."',NOW(),'".$_SESSION['user']."','nej')");
            echo"<b>Dit Profil billede er nu overført!</b><br>";
            echo"<H3><font color=\"red\"><b>OBS:Du skal nu vente til at en supporter/admin godkender dit profil-billede!</b></font></H3><br><br>";
            echo"<a href=\"/community/profile.php\">Klik her for at gå til din profil</a>";
        }
    }
    else
    {
      echo "Ikke et godkendt billede format: (jpeg, jpg, jpe)";
    }
}

mysql_close();
?>
Avatar billede jakobdo Ekspert
29. maj 2006 - 17:44 #24
Svar, og hvad gjorde du galt?
Avatar billede jens12 Nybegynder
29. maj 2006 - 17:45 #25
Jeg gjorde ikke noget gjaldt, Jeg fjernede bare ,1 i denne linje :
ceil(($_FILES['upfil']['size']/1024), 1) . " kb";
Avatar billede jakobdo Ekspert
29. maj 2006 - 17:49 #26
Ok! :o)
Avatar billede jakobdo Ekspert
29. maj 2006 - 17:50 #27
Men jeg tror stadig du skal bruge mit sidste indlæg, din tidligere kode vil ikke stoppe hvis billedet er forstort, koden vil stadig fortsætte.

Og jeg takker for point.
Avatar billede jens12 Nybegynder
29. maj 2006 - 17:54 #28
Tak:D
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