Uploaden van images - MSQL

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

CNEPHP -

CNEPHP -

30/08/2013 14:05:51
Quote Anchor link
Beste,

Ik heb dmv mijn localhost server een functie in mijn script zitten waarmee ik met een CMS-Systeempje makkelijk foto's + logo's kan uploaden. Path van de afbeeldingen wordt opgeslagen in de database. Op mijn localhost server werkt dit 100% zonder problemen. Eenmaal online gezet krijg ik de melding die ik in mijn script heb verwerkt dat de extensie niet geldig is. Terwijl ik dezelfde afbeeldingen probeer te uploaden.

Iemand hier ervaring mee?

Upload script:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?php
    session_start();
    
    include 'connect.php';
    
    if ($_SESSION['login'] != 1)
    {

        header('location:login.php');
        exit();
    }

    else
    {
        $sql = mysql_query("SELECT * FROM home");
        
        if (mysql_num_rows($sql) > 0)
            mysql_query("UPDATE home SET tekst='".mysql_real_escape_string($_POST['tekst'])."',
            facebook='"
.mysql_real_escape_string($_POST['facebook'])."', twitter='".mysql_real_escape_string($_POST['twitter'])."', googleplus='".mysql_real_escape_string($_POST['googleplus'])."', linkedin='".mysql_real_escape_string($_POST['linkedin'])."'");
        else
            mysql_query("INSERT INTO home(tekst, facebook, twitter, googleplus, linkedin)
            VALUES('"
.mysql_real_escape_string($_POST['tekst'])."', '".mysql_real_escape_string($_POST['facebook'])."', '".mysql_real_escape_string($_POST['twitter'])."', '".mysql_real_escape_string($_POST['googleplus'])."', '".mysql_real_escape_string($_POST['linkedin'])."')");
        
        function
uploadImage($img_ff, $dst_path, $dst_img)
        {

            $i = 0;
            //Get variables for the function.
            //complete path of the destination image.

            $dst_cpl = $dst_path . basename($dst_img);
            //name without extension of the destination image.
            $dst_name = preg_replace('/\.[^.]*$/', '', $dst_img);
            //extension of the destination image without a "." (dot).
            //$dst_ext = strtolower(end(explode(".", $dst_img)));
            //$dst_ext = strtolower(substr($dst_img, -(strpos($dst_img, '.')-1)));

            $dst_ext = substr($dst_img , strlen($dst_img) - 3 , 3);
            
            //remove the spaces from the file name
            $dst_name = str_replace (" ", "", $dst_name);
            
            //Check if destination image already exists, if so, the image will get an extra number added.
            while(file_exists($dst_cpl) == true){
                $i = $i+1;
                $dst_img = $dst_name . $i . '.' . $dst_ext;
                $dst_cpl = $dst_path . basename($dst_img);
            }


                //upload the file and move it to the specified folder.
            move_uploaded_file($_FILES[$img_ff]['tmp_name'], $dst_cpl);

                //get type of image.
            $dst_type = exif_imagetype($dst_cpl);

                //Checking extension and imagetype of the destination image and delete if it is wrong.
            if(( (($dst_ext =="jpg") && ($dst_type =="2")) || (($dst_ext =="jpeg") && ($dst_type =="2")) || (($dst_ext =="gif") && ($dst_type =="1")) || (($dst_ext =="png") && ($dst_type =="3") )) == false){
                unlink($dst_cpl);
                die('<p>Het bestand "'. $dst_img . '" met de extensie "' . $dst_ext . '" en imagetype "' . $dst_type . '" is geen geldige afbeelding. Upload een afbeelding met als extensie .JPG, .JPEG, .PNG of .GIF. Zorg ook dat het bestand niet groter is
                dan 128mb.</p>'
);
            }

            else {
                $extra = "4e/";
                switch($img_ff)
                {
                    case
'afbeelding':
                        mysql_query("UPDATE home SET afbeelding='".$extra.$dst_path.$dst_img."'");
                        break;
                }
            }
        }

        //Script ends here.

        // If the form is posted do this:

        if($_SERVER['REQUEST_METHOD'] == 'POST')
        {

            //Variables needed for the function.
            
            if($_FILES['afbeelding']['name'] != "")
            {

                $simg = mysql_fetch_assoc(mysql_query("SELECT afbeelding FROM home"));
                if ($simg['afbeelding'] != '')
                    unlink(substr($simg['afbeelding'], 3));
                    
                $img_ff = 'afbeelding';
                $dst_path = 'images/home/';
                $dst_img = strtolower($_FILES[$img_ff]['name']);
                uploadImage($img_ff, $dst_path, $dst_img);
            }

            
            echo 'Home-pagina succesvol geüpdatet.';
            header('refresh:2;url=index.php');
        }
    }

?>


Alvast bedankt als iemand de fout vindt!

Corné Steenbakkers

Edit:
Code-tags i.p.v. Quote-tags gebruikt...
Gewijzigd op 30/08/2013 14:12:25 door - Ariën -
 
PHP hulp

PHP hulp

17/11/2024 14:32:44
 
Kris Peeters

Kris Peeters

30/08/2013 15:26:00
Quote Anchor link
Dat is geen goede redenering om de extensie te vinden (dat met die strlen($dst_img) - 3 , 3); ).
Extensies zijn niet drie per definitie karakters lang, (sinds Windows het overnam van DOS, als ik het me goed herinner)

Kijk eens naar de functie pathinfo.

Kijk, hiermee krijg je een juiste extensie.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
list( $dirname, $basename, $extension, $filename ) = array_values( pathinfo($dst_name) );
$dst_ext = strtolower($extension)
echo $extension;
?>


Verder kan ik me voorstellen dat exif niet geïnstalleerd is op de server.

Eventueel kan je voorlopig die: && ($dst_type =="...") verwijderen in die if().
Gewijzigd op 30/08/2013 15:27:23 door Kris Peeters
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.