Uploaden en naam naar DB
ik wil graag namelijk plaatjes uploaden en dan tegelijk de naam in de DB toevoegen zodat een ander script (die wel werkt) het er uit kan halen en netjes plaatjes kan weergeven.
kunnen jullie mij met mijn probleem helpen?
hier het script dat ik nu heb (en niet werkt) :
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
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
<?php
include("connect.php");
$uploaddir = 'uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
$file_name = basename($_FILES['userfile']['name']);
$spatie = ' ';
$datum = date('Y-m-d H:i:s');
$filesize = $_FILES['userfile']['size'];
if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
mysql_query ("INSERT INTO jeroen_foto (`naam`,`dir`,`size`,`spatie`,`datum`) VALUES ('".$file_name."','".$uploaddir."','".$filesize."','".$spatie."','".$datum."')") or die (mysql_error());
mysql_close();
echo "Afbeelding staat op de server<br><br>";
}
else
{
echo "Possible file upload attack!\n";
}
?>
<form action="foto-toevoegen.php" method="post">
Foto: <input type="file" name="userfile" /><br />
<input type="submit" value="Upload File" />
</form>
include("connect.php");
$uploaddir = 'uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
$file_name = basename($_FILES['userfile']['name']);
$spatie = ' ';
$datum = date('Y-m-d H:i:s');
$filesize = $_FILES['userfile']['size'];
if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
mysql_query ("INSERT INTO jeroen_foto (`naam`,`dir`,`size`,`spatie`,`datum`) VALUES ('".$file_name."','".$uploaddir."','".$filesize."','".$spatie."','".$datum."')") or die (mysql_error());
mysql_close();
echo "Afbeelding staat op de server<br><br>";
}
else
{
echo "Possible file upload attack!\n";
}
?>
<form action="foto-toevoegen.php" method="post">
Foto: <input type="file" name="userfile" /><br />
<input type="submit" value="Upload File" />
</form>
Wat werkt er niet? En dit script is hartstikke onveilig... En backticks horen niet thuis in een query.
Kortom, geef eens meer informatie over wat je probleem nu eigenlijk is...
geen foutmeldingen!
maar dat komt waarschijnlijk omdat het script nog niet helemaal klopt
maar in ieder geval geen foutmeldingen van mysql
@ Douwe
de beveiliging voeg ik later apart in met mijn loginscript
Gewijzigd op 01/01/1970 01:00:00 door Jeroen v schie
Quote:
Lijkt me logisch aangezien de foutafhandeling in je script volledig ontbreekt!geen foutmeldingen!
Begin je script eens met:
En ga vervolgens ook eens degelijke foutafhandeling van je SQL queries toepassen...
En de beveiliging die wordt bedoeld
Quote:
de beveiliging voeg ik later apart in met mijn loginscript
heeft niets met inloggen te maken maar met mysql-injection.
Notice: Undefined index: userfile in ... on line 8
Notice: Undefined index: userfile in ... on line 12
Notice: Undefined index: userfile in ... on line 16
dat geeft ie dan weer
maar kun je niet een stukje voorbeeld geven van wat ik het beste zou kunnen doen?
ben namelijk een totale NOOB
<form action="foto-toevoegen.php" method="post">
Moet zijn:
<form action="foto-toevoegen.php" method="post" enctype="multipart/form-data">
maar het help niet tegen die foutmeldingen...
Wat moet ik nog meer veranderen om het werkend te krijgen?
@ jeroen: wat weerhoudt me ervan om iets anders dan een foto te uploaden? LET OP: mensen die een beetje zwak van geest zijn kunnen zo wel eens je db binnen raken!
alloewel hij nu wel het plaatje heeft geupload en de naam enz in de database heeft gebracht
isset().
De volgende stap is controleren of een $var bestaat. Zie onder andere Kun je een voorbeeld geven van hoe ik het zou moeten beveiligen?
zoals ik al zei ik ben een totale NOOB.......
Jeroen schreef op 21.09.2008 13:02:
alloewel hij nu wel het plaatje heeft geupload en de naam enz in de database heeft gebracht
Zonder dat 'enctype="multipart/form-data"' zal <input type="file"> nooit werken. En de errors die je nu krijgt komen doordat je voor de eerste keer op de pagina komt en er is nog geen formulier gepost.
Quote:
Misschien dat het dan slim is om eerst eens met deze PHP Beginnershandleiding te beginnen?zoals ik al zei ik ben een totale NOOB.......
Jeroen schreef op 21.09.2008 13:04:
@tikkes:
Kun je een voorbeeld geven van hoe ik het zou moeten beveiligen?
zoals ik al zei ik ben een totale NOOB.......
Kun je een voorbeeld geven van hoe ik het zou moeten beveiligen?
zoals ik al zei ik ben een totale NOOB.......
Ik deed t zo:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?PHP
if (strtolower(substr($_FILES['defile']['name'], -3)) != "jpg" XOR strtolower(substr($_FILES['defile']['name'], -4)) != "jpeg" XOR strtolower(substr($_FILES['defile']['name'], -3)) != "gif") {
exit ('enkel fotos!');
}
?>
if (strtolower(substr($_FILES['defile']['name'], -3)) != "jpg" XOR strtolower(substr($_FILES['defile']['name'], -4)) != "jpeg" XOR strtolower(substr($_FILES['defile']['name'], -3)) != "gif") {
exit ('enkel fotos!');
}
?>
@Tikkes: En wat als de file 'blablajpg' heet?
niet?
anders doe je gewoon telkens ipv -3, -4 en zet je != .jpg etc...
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
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
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
$uploaddir = 'uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
$file_name = basename($_FILES['userfile']['name']);
$spatie = ' ';
$datum = date('Y-m-d H:i:s');
$filesize = $_FILES['userfile']['size'];
if (strtolower(substr($_FILES['defile']['name'], -3)) != "jpg" XOR strtolower(substr($_FILES['defile']['name'], -4)) != "jpeg" XOR strtolower(substr($_FILES['defile']['name'], -3)) != "gif") {
exit ('enkel fotos!');
}
else (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
mysql_query ("INSERT INTO jeroen_foto (`naam`,`dir`,`size`,`spatie`,`datum`) VALUES ('".$file_name."','".$uploaddir."','".$filesize."','".$spatie."','".$datum."')") or die (mysql_error());
mysql_close();
echo "Afbeelding staat op de server<br><br>";
}
else
{
echo "Possible file upload attack!\n";
}
?>
ini_set('display_errors', 1);
error_reporting(E_ALL);
$uploaddir = 'uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
$file_name = basename($_FILES['userfile']['name']);
$spatie = ' ';
$datum = date('Y-m-d H:i:s');
$filesize = $_FILES['userfile']['size'];
if (strtolower(substr($_FILES['defile']['name'], -3)) != "jpg" XOR strtolower(substr($_FILES['defile']['name'], -4)) != "jpeg" XOR strtolower(substr($_FILES['defile']['name'], -3)) != "gif") {
exit ('enkel fotos!');
}
else (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
mysql_query ("INSERT INTO jeroen_foto (`naam`,`dir`,`size`,`spatie`,`datum`) VALUES ('".$file_name."','".$uploaddir."','".$filesize."','".$spatie."','".$datum."')") or die (mysql_error());
mysql_close();
echo "Afbeelding staat op de server<br><br>";
}
else
{
echo "Possible file upload attack!\n";
}
?>
Kijk naar 'mimetype'?
@Jeroen: Nou ontbreekt in ieder geval nog de veiligheid. Nooit onbeveiligde data in de database zetten. Lees eens over mysql-injection.
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
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
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
<?php
function checkfiletype($file,$ext){
if(strtolower(substr($file, -3)) != $ext){
return true;
}else{
return false;
}
}
function quote_smart($value){
if(get_magic_quotes_gpc()){
$value = stripslashes($value);
}
if(version_compare(phpversion(),"4.3.0") == "-1"){
return mysql_escape_string($value);
}else{
return mysql_real_escape_string($value);
}
}
ini_set('display_errors', 1);
error_reporting(E_ALL);
$uploaddir = 'uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
$file_name = basename($_FILES['userfile']['name']);
$spatie = ' ';
$datum = date('Y-m-d H:i:s');
$filesize = $_FILES['userfile']['size'];
if (checkfiletype($_FILES['defile']['name'],'jpg') XOR checkfiletype($_FILES['defile']['name'],'gif') XOR checkfiletype($_FILES['defile']['name'],'jpeg') XOR checkfiletype($_FILES['defile']['name'],'JPG') XOR checkfiletype($_FILES['defile']['name'],'GIF') XOR checkfiletype($_FILES['defile']['name'],'JPEG')) {
exit ('Alleen foto\'s! (jpg, gif, jpeg)');
}else(is_uploaded_file($_FILES['userfile']['tmp_name'])) {
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
mysql_query("INSERT INTO jeroen_foto (`naam`,`dir`,`size`,`spatie`,`datum`) VALUES ('".quote_smart($file_name)."','".quote_smart($uploaddir)."','".quote_smart($filesize)."','".quote_smart($spatie)."','".quote_smart($datum)."')") or die (mysql_error());
mysql_close();
echo "Afbeelding staat op de server<br><br>";
}
else
{
echo "Possible file upload attack!\n";
}
?>
function checkfiletype($file,$ext){
if(strtolower(substr($file, -3)) != $ext){
return true;
}else{
return false;
}
}
function quote_smart($value){
if(get_magic_quotes_gpc()){
$value = stripslashes($value);
}
if(version_compare(phpversion(),"4.3.0") == "-1"){
return mysql_escape_string($value);
}else{
return mysql_real_escape_string($value);
}
}
ini_set('display_errors', 1);
error_reporting(E_ALL);
$uploaddir = 'uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
$file_name = basename($_FILES['userfile']['name']);
$spatie = ' ';
$datum = date('Y-m-d H:i:s');
$filesize = $_FILES['userfile']['size'];
if (checkfiletype($_FILES['defile']['name'],'jpg') XOR checkfiletype($_FILES['defile']['name'],'gif') XOR checkfiletype($_FILES['defile']['name'],'jpeg') XOR checkfiletype($_FILES['defile']['name'],'JPG') XOR checkfiletype($_FILES['defile']['name'],'GIF') XOR checkfiletype($_FILES['defile']['name'],'JPEG')) {
exit ('Alleen foto\'s! (jpg, gif, jpeg)');
}else(is_uploaded_file($_FILES['userfile']['tmp_name'])) {
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
mysql_query("INSERT INTO jeroen_foto (`naam`,`dir`,`size`,`spatie`,`datum`) VALUES ('".quote_smart($file_name)."','".quote_smart($uploaddir)."','".quote_smart($filesize)."','".quote_smart($spatie)."','".quote_smart($datum)."')") or die (mysql_error());
mysql_close();
echo "Afbeelding staat op de server<br><br>";
}
else
{
echo "Possible file upload attack!\n";
}
?>