Uploaden van images - MSQL
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)
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
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');
}
}
?>
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 -
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)
1
2
3
4
5
2
3
4
5
<?php
list( $dirname, $basename, $extension, $filename ) = array_values( pathinfo($dst_name) );
$dst_ext = strtolower($extension)
echo $extension;
?>
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