Afbeelding uploaden werkt in xampp wel, online niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Koen Vestjens

Koen Vestjens

17/12/2012 12:22:26
Quote Anchor link
Hallo,

Ik heb een upload scriptje gemaakt die verschillende afbeeldingen samenvoegt en het geüploade logo indien nodig verkleint. In xampp werkt alles prima, maar wanneer ik alles upload in Filezilla en dan online probeer blijft ie laden er wordt er niks geüpload. Ik heb al geprobeerd de map rechten naar 777 te zetten, maar dit levert niks op. Hieronder het script. Misschien zien jullie de fout.

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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<?php
session_start();
$session_id='1'; //$session id
$path = "images/uploaded_logos/";

    #valid formats
    $valid_formats = array("png", "tiff");
    
    #check if $_POST is set and request method is POST
    if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST")
    {

        #check name and size of the uploaded file
        $name = $_FILES['photoimg']['name'];
        $size = $_FILES['photoimg']['size'];
            
        #get lenght of name
        if(strlen($name))
        {

            #take apart name and extension
            list($txt, $ext) = explode(".", $name);
            
            #check if extension is in the valid_formats array
            if(in_array($ext,$valid_formats))
            {

                    
                #check if uploaded file is < 1gb
                if($size < (1024 * 1024 * 1024))
                {

                    #actual_image_name = the number of seconds since January 1 1970 00:00:00 GMT
                    #if there are space in $txt, replace with underscore
                    #add extension

                    $actual_image_name = time().substr(str_replace(" ", "_", $txt), 5).".".$ext;
                    
                    $tmp = $_FILES['photoimg']['tmp_name'];
                    
                    #move temporary file to destination
                    if(move_uploaded_file($tmp, $path.$actual_image_name))
                    {

                        #logo posities
                        $logoX = $_SESSION['logo_position_X'];
                        $logoY = $_SESSION['logo_position_Y'];
                        
                        $imageWidth = 280;
                        $imageHeight = 199;
                        
                        #twee plaatjes
                        $image_1 = imagecreatefrompng('images/art_images/' . $_SESSION['art_background'] . '');
                        $logo = imagecreatefrompng('images/uploaded_logos/'.$actual_image_name.'');
                        $filter = imagecreatefrompng('images/art_images/' . $_SESSION['art_filter'] . '');
                        $watermark = imagecreatefrompng('images/art_images/watermark_landscape.png');
                          
                        #breedte en hoogte van het geuploade logo
                        list($uploadedLogoWidth, $uploadedLogoHeight, $type, $attr) = getimagesize('images/uploaded_logos/'.$actual_image_name.'');
                        
                        #waar het gecopieerde plaatje wordt opgeslagen - parameters zijn breedte en hoogte
                        $img_with_watermark = imagecreatetruecolor($imageWidth, $imageHeight);
                        
                        # $desiredLogoWidth, $desiredLogoHeight
                        #breedte en hoogte na scale
                        
                        #scale logo zodat die in het kunstwerk past

                        if($uploadedLogoWidth > $uploadedLogoHeight)
                        {

                            $scalePercentage = $_SESSION['logo_framework_width'] / $uploadedLogoWidth;
                        }
                        
                        if($uploadedLogoHeight > $uploadedLogoWidth)
                        {

                            $scalePercentage = $_SESSION['logo_framework_height'] / $uploadedLogoHeight;
                        }

                        
                        $desiredLogoWidth = $uploadedLogoWidth * $scalePercentage;
                        $desiredLogoHeight = $uploadedLogoHeight * $scalePercentage;

                        if($desiredLogoWidth < $_SESSION['logo_framework_width'])
                        {

                            $logoX = $logoX +($_SESSION['logo_framework_width'] - $desiredLogoWidth) / 2;
                        }

                        if($desiredLogoHeight < $_SESSION['logo_framework_height'])
                        {

                            $logoY = $logoY +($_SESSION['logo_framework_height'] - $desiredLogoHeight) / 2;
                        }

                        
                        #copieer het plaatje
                        imagecopy($img_with_watermark, $image_1, 0, 0, 0, 0, $imageWidth, $imageHeight);
                        imagecopyresampled($img_with_watermark, $logo, $logoX, $logoY, 0, 0, $desiredLogoWidth, $desiredLogoHeight, $uploadedLogoWidth, $uploadedLogoHeight);
                        imagecopy($img_with_watermark, $filter, 0, 0, 0, 0, $imageWidth, $imageHeight);

                        imagecopy($img_with_watermark, $watermark, 0, 0, 0, 0, $imageWidth, $imageHeight);

                        #naam van het plaatje zoals die wordt opgeslagen
                        $save_img_with_watermark = $actual_image_name;;

                        # Save the image to a file
                        imagepng($img_with_watermark, 'images/uploaded_art_with_images/'.$save_img_with_watermark);
                        
                        $_SESSION['saved_img_path'] = $save_img_with_watermark;
                        echo '<img src="images/uploaded_art_with_images/'.$save_img_with_watermark.'" class="preview">';
                    }

                    else
                    {
                        echo "Het uploaden van uw logo is niet gelukt.";
                    }
                }

                else
                {
                    echo "De bestandsgrootte van uw logo is groter dan 1 gigabyte.";                    
                }
            }

            else
            {
                echo "U probeert een logo met een niet toegestane extentie te uploaden.";
            }
        }

        else
        {
            echo "Please select image..!";
        }
    
        exit;
    }

?>
 
PHP hulp

PHP hulp

27/12/2024 14:01:27
 
Kris Peeters

Kris Peeters

17/12/2012 12:31:56
Quote Anchor link
Koen Vestjens op 17/12/2012 12:22:26:
... Ik heb al geprobeerd de map rechten naar 777 te zetten, maar dit levert niks op. ...



En is dat gelukt?
Heb je kunnen zien dat de map effectief op 777 komt te staan?
Als dat niet lukt, kan dat liggen aan de server instellingen; dat dus de host jou niet toestaat om CHMOD aan te passen; dan zal je contact moeten opnemen met je host.
 
Koen Vestjens

Koen Vestjens

17/12/2012 12:35:19
Quote Anchor link
Wanneer ik de mappen op 777 zet, wordt er nog steeds niets geüpload, echter de mappen blijven wel op 777 staan. Maar het ligt zover jij kan zien niet aan het script?
 
- SanThe -

- SanThe -

17/12/2012 12:35:33
Quote Anchor link
Zet errors aan.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

// rest van je script
?>
 
Koen Vestjens

Koen Vestjens

17/12/2012 12:40:02
Quote Anchor link
Ik krijg helaas geen errors...
 
- Ariën  -
Beheerder

- Ariën -

17/12/2012 12:41:57
Quote Anchor link
Wat zegt $_FILES['photoimg']['error']?
 
Koen Vestjens

Koen Vestjens

17/12/2012 12:47:31
Quote Anchor link
Niks...
 
- Ariën  -
Beheerder

- Ariën -

17/12/2012 12:50:08
Quote Anchor link
lijkt me sterk.....

laat anders eens je array zien uit $_FILES
Gewijzigd op 17/12/2012 12:50:41 door - Ariën -
 
Koen Vestjens

Koen Vestjens

17/12/2012 12:58:44
Quote Anchor link
In de localhost van xampp, krijg ik wanneer ik echo $_FILES['photoimg']['error']; uitvoer 0. Wanneer ik het online uitvoer krijg ik geen respons.

Kan ik op de een of andere manier testen of de server CHMOD toelaat?
 
- Ariën  -
Beheerder

- Ariën -

17/12/2012 13:08:06
Quote Anchor link
Ja, kijken vanuit phpinfo() welk OS er op draait. Indien Linux wordt chmod ondersteund, indien WIndows dan zit je vast aan de bestandrechten-permissies.
 
- SanThe -

- SanThe -

17/12/2012 13:13:40
Quote Anchor link
Koen Vestjens op 17/12/2012 12:58:44:
... Wanneer ik het online uitvoer krijg ik geen respons.


En wat geeft print_r($_FILES);?
 
Koen Vestjens

Koen Vestjens

17/12/2012 13:13:45
Quote Anchor link
System: Linux ns1.securenameserver8.net 2.6.18-308.8.2.el5.028stab101.1 #1 SMP Sun Jun 24 20:25:35 MSD 2012 x86_64

Kan het zijn dat ik van de hoger gelegen mappen ook de rechten moet aanpassen?

print_r($_FILES) geeft in de xampp versie het onderstaande, in de online versie krijg ik geen respons.

Array ( [photoimg] => Array ( [name] => logo3.png [type] => image/png [tmp_name] => C:\xampp\tmp\php4018.tmp [error] => 0 => 305822 ) )
Gewijzigd op 17/12/2012 13:15:39 door Koen Vestjens
 
- Ariën  -
Beheerder

- Ariën -

17/12/2012 13:23:39
Quote Anchor link
Je zou dan toch een array moeten zien? Welke PHP-serie draai je online eigenlijk?
 
Koen Vestjens

Koen Vestjens

17/12/2012 14:11:23
Quote Anchor link
PHP versie is 5.3.19. Hieronder de link naar alle info

http://www.brandofart.com/phpinfo.php
 
- Ariën  -
Beheerder

- Ariën -

17/12/2012 14:13:04
Quote Anchor link
na je: if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST")

zou je toch echt wel een print_r($_FILES); moeten kunnen gebruiken, lijkt me.
 
- SanThe -

- SanThe -

17/12/2012 14:15:57
Quote Anchor link
Of ben je enctype="multipart/form-data" vergeten in <form>?
 
Koen Vestjens

Koen Vestjens

17/12/2012 14:18:02
Quote Anchor link
Nee helaas, waarschijnlijk komt dat omdat die blijft laden. Het is wel ajax gebaseerd, dus wanneer er iets geüpload wordt, zul je de afbeelding direct op diezelfde pagina zien. Hieronder het formulier.

<table>
<tr>
<td>Upload logo:</td>
<td>
<form id="imageform" method="post" enctype="multipart/form-data" action='ajaximage.php'>
<input type="file" name="photoimg" id="photoimg">
</form>
</td>
</tr>
<tr>
<td></td>
<td><a href="bestellen.php" style="text-decoration: none;">Volgende ></a></td>
</tr>
</table>

Toevoeging op 17/12/2012 14:22:12:

Nee ik ben dat niet vergeten, probleem is dat die lokaal (xampp) wel werkt en online niet...
 
Dylan PHP

Dylan PHP

17/12/2012 14:48:16
Quote Anchor link
Je kunt beter pathinfo() gebruiken om de extensie te achterhalen

http://nl3.php.net/pathinfo
 
Kris Peeters

Kris Peeters

17/12/2012 14:52:47
Quote Anchor link
Ja, inderdaad.
Dit is geen goed idee:

list($txt, $ext) = explode(".", $name);

Stel nu dat een hacker het bestand 'mijn_afbeelding.png.exe' doorstuurt.
Pathinfo werkt wel goed.
 
Koen Vestjens

Koen Vestjens

17/12/2012 15:06:53
Quote Anchor link
Oke bedankt voor de tip! Dat moet ik later dan gaan aanpassen. Het uploaden werkt nu echter nog niet, dus dat vormt nog een probleem.

Ik zal als ik er vandaag nog tijd voor heb eens proberen of die met een andere host wel werkt.

Toevoeging op 18/12/2012 10:09:11:

Op een andere host werkt het ook niet helaas.

Toevoeging op 18/12/2012 12:30:39:

Eindelijk! Ik krijg een error:

Warning: move_uploaded_file(images/uploaded_logos/1355829560.png):

failed to open stream: Permission denied in /var/www/vhosts/brandofart.com/httpdocs/ajaximage.php
on line 44 Warning: move_uploaded_file():

Unable to move '/tmp/php8hGnCC' to 'images/uploaded_logos/1355829560.png' in /var/www/vhosts/brandofart.com/httpdocs/ajaximage.php
on line 44
Gewijzigd op 17/12/2012 15:07:24 door Koen Vestjens
 



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.