programmeer fout?
wat doe ik 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
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
<?
include 'config.php';
//--- zet path
$path = 'upload/'; // met slash en chmod 777! (of lager ivm veiligheid)
//--- zet max. kb's
$maxkb = 2097152; // 2097152 gedeelt door 1024 is 2048kb = 2mb. DUS 1024 keer <aantal kb's> = $maxkb
//--- watermerk path
$path_watermerk = 'watermerk.png'; // dit MOET een transparante .png zijn!!!
//--- bekijk of het bestand kleiner of net zo groot als 40 kb is en of de foto wel geupload is en of extentie wel .jpg of .jpeg is!
if ($_POST['submit'] && $_FILES['userfile']['size'] <= $maxkb && !file_exists($path . $_FILES['userfile']['name']) && $_FILES['userfile']['size'] && is_uploaded_file($_FILES['userfile']['tmp_name']) && (strtolower(substr($_FILES['userfile']['name'], -3)) == 'jpg' || strtolower(substr($_FILES['userfile']['name'], -4)) == 'jpeg'))
{
//--- upload image naar $path
move_uploaded_file($_FILES['userfile']['tmp_name'], $path . $_FILES['userfile']['name']);
$bestand = $_FILES['userfile']['name'];
$ip = $_SERVER['REMOTE_ADDR'];
mysql_query('INSERT INTO link_ads (naam, email, showurl, beschrijving, beschrijving2, url, bestand, datum, ip) VALUES (''.$naam.''.$email.''.$showurl.''.$beschrijving.''.$beschrijving2.''.$url.''.$bestand.'',NOW(),''.$ip.'')') or die(mysql_error());
//--- transparante watermerk
$watermerk = imagecreatefrompng($path_watermerk);
$watermerk_width = imagesx($watermerk);
$watermerk_height = imagesy($watermerk);
imagecreatetruecolor($watermerk_width, $watermerk_height);
//--- orriginele image
$image = imagecreatefromjpeg($path . $_FILES['userfile']['name']);
$size = getimagesize($path . $_FILES['userfile']['name']);
//--- defineer de coordinaten van het watermerk - dit voorbeeld is links onder
/*
bijv: geuploade plaatje: 180 x 130
watermerk groote: 50 x 16
berekening voor coordinaten 'x' as:
180 (breedte geuploade foto) - 50 (breedte watermerk) - 5 (ruimte rechts) = 125 pixels vanaf links
berekening voor 'y' as:
130 (hoogte geuploade foto) - 16 (hoogte watermerk) - 5 (ruimte onder) = 109 pixels vanaf boven
*/
//--- dit is voor rechts boven
$xas = $size[0] - $watermerk_width - 5;
$yas = 5;
//--- overschrijf het 'geuploade bestand' en voeg watermerk toe
imagecopymerge($image, $watermerk, $xas, $yas, 0, 0, $watermerk_width, $watermerk_height, 100);
//--- upload image
imagejpeg($image, $path . $_FILES['userfile']['name']); // max. kwaliteit
imagedestroy($image);
imagedestroy($watermerk);
echo 'De foto is geupload.<br />';
echo '<META HTTP-EQUIV=Refresh CONTENT=\'2; URL=upload.php\'>';
}
else
{
//--- errors
if ($_POST['submit'])
{
if (file_exists($path . $_FILES['userfile']['name']) && $_FILES['userfile']['name'])
echo '<b>Error! Bestand bestaat al, hernoem de foto en probeer het opnieuw.</b><p>';
elseif ($_FILES['userfile']['size'] > $maxkb)
echo '<b>Error! Bestand is groter dan ' . $maxkb . 'bytes. Verklein de foto en probeer het opnieuw</b><p>';
elseif (strtolower(substr($_FILES['userfile']['name'], -3)) != 'jpg' && strtolower(substr($_FILES['userfile']['name'], -4)) != 'jpeg')
echo '<b>Error! De foto heeft een verkeerde bestandsnaam. Er mogen alleen foto's geupload worden met als bestandsnaam .jpg.</b><p>';
else
echo '<b>Error! De foto is niet goed geupload of er is helemaal geen foto geupload. Probeer het opnieuw.</b><p>';
}
else
echo 'Selecteer een foto om te uploaden. LET OP: hij mag NIET groter zijn dan 2MB en moet in je .jpg formaat zijn.<p>';
//--- formulier met enctype multipart/form-data ivm de file upload
echo '<form method=\'post\' action=\'upload.php\' enctype=\'multipart/form-data\'>';
echo 'naam: <input type='text' name='naam'><br>';
echo 'e-mail: <input type='text' name='email'><br>';
echo 'title: <input type='text' name='showurl'><br>';
echo 'beschrijving: <textarea name='beschrijving' rows='3' cols='20'></textarea><br>';
echo 'cijfer: <select name='beschrijving2'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
<option value='7'>7</option>
<option value='8'>8</option>
<option value='9'>9</option>
<option value='10'>10</option>
</select><br>';
echo 'datum: <input type='text' name='url'><br>';
echo 'foto: ';
echo '<input type=\'hidden\' name=\'MAX_FILE_SIZE\' value=\'' . $maxkb . '\' />';
echo '<input type=\'file\' name=\'userfile\' value=\'' . $_POST['userfile'] . '\' /><br />';
echo '<input type=\'submit\' name=\'submit\' value=\'uploaden\' />';
echo '</form>';
}
?>
include 'config.php';
//--- zet path
$path = 'upload/'; // met slash en chmod 777! (of lager ivm veiligheid)
//--- zet max. kb's
$maxkb = 2097152; // 2097152 gedeelt door 1024 is 2048kb = 2mb. DUS 1024 keer <aantal kb's> = $maxkb
//--- watermerk path
$path_watermerk = 'watermerk.png'; // dit MOET een transparante .png zijn!!!
//--- bekijk of het bestand kleiner of net zo groot als 40 kb is en of de foto wel geupload is en of extentie wel .jpg of .jpeg is!
if ($_POST['submit'] && $_FILES['userfile']['size'] <= $maxkb && !file_exists($path . $_FILES['userfile']['name']) && $_FILES['userfile']['size'] && is_uploaded_file($_FILES['userfile']['tmp_name']) && (strtolower(substr($_FILES['userfile']['name'], -3)) == 'jpg' || strtolower(substr($_FILES['userfile']['name'], -4)) == 'jpeg'))
{
//--- upload image naar $path
move_uploaded_file($_FILES['userfile']['tmp_name'], $path . $_FILES['userfile']['name']);
$bestand = $_FILES['userfile']['name'];
$ip = $_SERVER['REMOTE_ADDR'];
mysql_query('INSERT INTO link_ads (naam, email, showurl, beschrijving, beschrijving2, url, bestand, datum, ip) VALUES (''.$naam.''.$email.''.$showurl.''.$beschrijving.''.$beschrijving2.''.$url.''.$bestand.'',NOW(),''.$ip.'')') or die(mysql_error());
//--- transparante watermerk
$watermerk = imagecreatefrompng($path_watermerk);
$watermerk_width = imagesx($watermerk);
$watermerk_height = imagesy($watermerk);
imagecreatetruecolor($watermerk_width, $watermerk_height);
//--- orriginele image
$image = imagecreatefromjpeg($path . $_FILES['userfile']['name']);
$size = getimagesize($path . $_FILES['userfile']['name']);
//--- defineer de coordinaten van het watermerk - dit voorbeeld is links onder
/*
bijv: geuploade plaatje: 180 x 130
watermerk groote: 50 x 16
berekening voor coordinaten 'x' as:
180 (breedte geuploade foto) - 50 (breedte watermerk) - 5 (ruimte rechts) = 125 pixels vanaf links
berekening voor 'y' as:
130 (hoogte geuploade foto) - 16 (hoogte watermerk) - 5 (ruimte onder) = 109 pixels vanaf boven
*/
//--- dit is voor rechts boven
$xas = $size[0] - $watermerk_width - 5;
$yas = 5;
//--- overschrijf het 'geuploade bestand' en voeg watermerk toe
imagecopymerge($image, $watermerk, $xas, $yas, 0, 0, $watermerk_width, $watermerk_height, 100);
//--- upload image
imagejpeg($image, $path . $_FILES['userfile']['name']); // max. kwaliteit
imagedestroy($image);
imagedestroy($watermerk);
echo 'De foto is geupload.<br />';
echo '<META HTTP-EQUIV=Refresh CONTENT=\'2; URL=upload.php\'>';
}
else
{
//--- errors
if ($_POST['submit'])
{
if (file_exists($path . $_FILES['userfile']['name']) && $_FILES['userfile']['name'])
echo '<b>Error! Bestand bestaat al, hernoem de foto en probeer het opnieuw.</b><p>';
elseif ($_FILES['userfile']['size'] > $maxkb)
echo '<b>Error! Bestand is groter dan ' . $maxkb . 'bytes. Verklein de foto en probeer het opnieuw</b><p>';
elseif (strtolower(substr($_FILES['userfile']['name'], -3)) != 'jpg' && strtolower(substr($_FILES['userfile']['name'], -4)) != 'jpeg')
echo '<b>Error! De foto heeft een verkeerde bestandsnaam. Er mogen alleen foto's geupload worden met als bestandsnaam .jpg.</b><p>';
else
echo '<b>Error! De foto is niet goed geupload of er is helemaal geen foto geupload. Probeer het opnieuw.</b><p>';
}
else
echo 'Selecteer een foto om te uploaden. LET OP: hij mag NIET groter zijn dan 2MB en moet in je .jpg formaat zijn.<p>';
//--- formulier met enctype multipart/form-data ivm de file upload
echo '<form method=\'post\' action=\'upload.php\' enctype=\'multipart/form-data\'>';
echo 'naam: <input type='text' name='naam'><br>';
echo 'e-mail: <input type='text' name='email'><br>';
echo 'title: <input type='text' name='showurl'><br>';
echo 'beschrijving: <textarea name='beschrijving' rows='3' cols='20'></textarea><br>';
echo 'cijfer: <select name='beschrijving2'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
<option value='7'>7</option>
<option value='8'>8</option>
<option value='9'>9</option>
<option value='10'>10</option>
</select><br>';
echo 'datum: <input type='text' name='url'><br>';
echo 'foto: ';
echo '<input type=\'hidden\' name=\'MAX_FILE_SIZE\' value=\'' . $maxkb . '\' />';
echo '<input type=\'file\' name=\'userfile\' value=\'' . $_POST['userfile'] . '\' /><br />';
echo '<input type=\'submit\' name=\'submit\' value=\'uploaden\' />';
echo '</form>';
}
?>
Toevoeging op 28/05/2011 20:34:45:
ik heb hem hier van
http://www.phphulp.nl/php/script/php-algemeen/upload-watermerk-admin/976/
Gewijzigd op 28/05/2011 20:29:17 door Sven video
kijk naar de kleurtjes........
Met een goede titel, goede content, niet zomaar het plakken van code?
Met een goede uitleg en fouten vermeld?
Met dingen die je geprobeerd hebt en gegoogled hebt, zodat we zien dat je je best doet maar er nu niet meer uitkomt?
Toevoeging op 28/05/2011 20:41:49:
http://svenvideo.byethost6.com/atracties/upload.php
een voorbeeld
Toevoeging op 28/05/2011 20:50:34:
fout melding:
Column count doesn't match value count at row 1
Sven video op 28/05/2011 20:40:50:
fout melding:
Column count doesn't match value count at row 1
Column count doesn't match value count at row 1
Dat is vast niet de hele foutmelding. Normaal staat er ook nog in ieder geval een regelnummer bij...
Maar als je die foutmelding ziet, dan weet je toch al wat het probleem is? Gewoon vertalen. Zo moeilijk is het niet...
Je code laat verder ook nog aardig te wensen over. Onnodige variabelen, ongelukkige manier van gebruik van ' en " waardoor je (onnodig veel) moet escapen.
Geen foutafhandeling.
Controleren of een formulier gepost is doe je niet met if ($_POST['submit'])
Lees de topics die hier geplaatst worden nog eens door. Je bent niet de 1e die die fout maakt.