Avatar billede noodrem Nybegynder
02. oktober 2007 - 10:23 Der er 6 kommentarer og
1 løsning

Problem ved upload af billede

Hej eksperter.

Når jeg kører understående kode igennem, opdaterer den kun varablerne $overskrift og $tekst i min database, mens $filnavn og $filnavnthumb forbliver tomme. Samtidig er mappen 'forsidet' tom på min webserver på trods af at der burde være en fil i.

Kan i knække koden og finde fejlen i understående kode:?

OBS der oprettes forbindelse til databasen i en anden include.

___________________________________


<?

if(!isset($_SESSION['admin'])) {
    include("login/admincheck.php");
    } else {
        $tekst = $_REQUEST['tekst'];
        $overskrift = $_REQUEST['overskrift'];
        $submit = $_REQUEST['submit'];
        $upfil = $_REQUEST['upfil'];
       
       
    ///*** FIL START FIL START ***///
               
        function replace_string($ind_str){
            $soketter = array("æ","ø","å","Æ","Ø","Å"," ");
            $byttil = array("ae","oe","aa","AE","OE","AA","_");
            $tekst = str_replace($soketter,$byttil,$ind_str);
            return $tekst;
        }
        function resize( $filename, $newfilename, $maxw, $maxh ){
            $result = false;
            $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 );
            $result = imagejpeg( $dstim, $newfilename, 85 );
            imagedestroy( $dstim );
            imagedestroy( $srcim );
            return $result;
        }
        if(isset($_POST['submit'])){
            if($_FILES["upfil"]["size"] > 0) {
            $konfiguration["upload_bibliotek"] = "./forsidet";
            $konfiguration["max_stoerrelse"] = "10000";
           
            /* Hvor flytter vi fra og til */
            $fra = $_FILES["upfil"]["tmp_name"];
            $til = $konfiguration["upload_bibliotek"] . "/" . replace_string($_FILES["upfil"]["name"]);
            $til_t = $konfiguration["upload_bibliotek"] . "/thumb_" . replace_string($_FILES["upfil"]["name"]);
               
            /* Check PHP-version */
            list($major, $minor, $rev) = explode(".", phpversion());
            if($major < 4){
              die("Jeg kan kun arbejde med PHP 4.0.0 eller derover");
              }
           
            /* Skab de "moderne" arrays hvis vi arbejder med en aeldre PHP */
              if($minor < 1){
              $_FILES = $HTTP_POST_FILES;
            $_POST = $HTTP_POST_VARS;
            $_SERVER = $HTTP_SERVER_VARS;
              }
           
              /* Accepterer vi filens stoerrelse? */
              $fil_stoerrelse = filesize($fra)/1024;
              if($fil_stoerrelse > $konfiguration["max_stoerrelse"]){
              die("Desværre - filen er for stor. Jeg accepterer kun " .
            $konfiguration["max_stoerrelse"] . "kb, og din fil fylder " .
            ceil($fil_stoerrelse, 1) . " kb");
              }
           
              if(function_exists("move_uploaded_file")) {
            resize($fra, $til, 162, 108);
              resize($fra, $til_t, 200, 130);
            }
            else {
              copy($fra, $til);
            }
            }
       
           
                $filnavn = $til;
                $filnavnthumb = $til_t;
            }
           
        ///*** FIL SLUT  FIL SLUT ***///
   
           
            $opdater_overskrift = mysql_query("UPDATE forsidef SET overskrift='$overskrift'") or die(mysql_error());
            $opdater_forside = mysql_query("UPDATE forsidef SET tekst='$tekst'") or die(mysql_error());
            $opdater_filnavn = mysql_query("UPDATE forsidef SET filnavn='$filnavn'") or die(mysql_error());
            $opdater_filnavnthumb = mysql_query("UPDATE forsidef SET filnavnthumb='$filnavnthumb'") or die(mysql_error());
           
            header("location:index.php");
        }
   
   

?>

__________________________________
Avatar billede dkfire Nybegynder
02. oktober 2007 - 11:33 #1
Hvordan ser din form ud ??
Avatar billede noodrem Nybegynder
02. oktober 2007 - 13:43 #2
Således:

<?

if(!isset($_SESSION['admin'])) {
    include("login/admincheck.php");
} else {
   
    $query = mysql_query("SELECT * FROM forsidef") or die(mysql_error());
    $row = mysql_fetch_assoc($query);
   
    $overskrift = $row['overskrift'];
    $tekst = $row['tekst'];
       
    echo "<form action='index.php?side=redforside' method='post'>";
    echo "<p>Billede<br /><input type='file' name='upfil' /></p>";
    echo "<p>Overskrift:  </p><input type='text' name='overskrift' value='$overskrift'>";
    echo "<p>Tekst:  </p><textarea name='tekst' rows='10' cols='40'>".str_replace("<br />", "", $tekst)."</textarea><br /><br />";
    echo "<input type='submit' name='submit' value='Rediger'>";
    echo "</form>";
}

?>
Avatar billede dkfire Nybegynder
02. oktober 2007 - 13:53 #3
Din form mangler lige en attribut:
enctype="multipart/form-data"

ellers bliver din fil ikke uploadet
Avatar billede noodrem Nybegynder
02. oktober 2007 - 14:13 #4
så virker det meste af det, mange tak dkfire. Du smider bare et svar.

Har dog endnu et problem, som lyder på at den uploadede fil ikke er i mappen 'forsidet' som den burde være. Skal jeg lave nogle bestemte indstillinger på mappen, eller er mit link til direktivet forkert?
Avatar billede noodrem Nybegynder
02. oktober 2007 - 14:15 #5
Kan se URL'en på billedet som fremstår som et X på siden (billede kan ikke vises er ) forsidet/Ac_DC.jpg så den skulle være god nok. Problemet må altså være at filen ikke bliver uploadet.
Avatar billede noodrem Nybegynder
02. oktober 2007 - 14:27 #6
Enablede write for ¨både group og others i CHMOD for mappen og nu virker det :)
Avatar billede dkfire Nybegynder
02. oktober 2007 - 14:29 #7
Jamen så svare jeg da :-)
Ja man skal huske at webserveren skal have skriverettigheder til den mappe hvor man vil lægge filerne i.
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