Afbeelding uploaden werkt in xampp wel, online niet
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)
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
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;
}
?>
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;
}
?>
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.
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?
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
// rest van je script
?>
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
// rest van je script
?>
Ik krijg helaas geen errors...
Wat zegt $_FILES['photoimg']['error']?
Niks...
Kan ik op de een of andere manier testen of de server CHMOD toelaat?
Ja, kijken vanuit phpinfo() welk OS er op draait. Indien Linux wordt chmod ondersteund, indien WIndows dan zit je vast aan de bestandrechten-permissies.
Koen Vestjens op 17/12/2012 12:58:44:
... Wanneer ik het online uitvoer krijg ik geen respons.
En wat geeft print_r($_FILES);?
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
Je zou dan toch een array moeten zien? Welke PHP-serie draai je online eigenlijk?
zou je toch echt wel een print_r($_FILES); moeten kunnen gebruiken, lijkt me.
Of ben je enctype="multipart/form-data" vergeten in <form>?
<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...
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.
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