Uploaden en naam naar DB

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen v schie

Jeroen v schie

21/09/2008 11:30:00
Quote Anchor link
Ik heb een paar problemen met mijn script

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)
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
<?php
 
include("connect.php");
 
$uploaddir = 'uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
 
$file_name = basename($_FILES['userfile']['name']);
$spatie = '&nbsp;&nbsp;&nbsp;';
$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>
 
PHP hulp

PHP hulp

20/04/2024 16:16:14
 
Douwe

Douwe

21/09/2008 11:32:00
Quote Anchor link
Wat werkt er niet? En dit script is hartstikke onveilig... En backticks horen niet thuis in een query.
 
Joren de Wit

Joren de Wit

21/09/2008 11:33:00
Quote Anchor link
Wat gaat er fout? Krijg je foutmeldingen? Wat gaat er niet zoals je verwacht?

Kortom, geef eens meer informatie over wat je probleem nu eigenlijk is...
 
Jeroen v schie

Jeroen v schie

21/09/2008 11:44:00
Quote Anchor link
Hij upload het plaatje niet en voegt de naam niet in de database!

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
 
Joren de Wit

Joren de Wit

21/09/2008 11:55:00
Quote Anchor link
Quote:
geen foutmeldingen!
Lijkt me logisch aangezien de foutafhandeling in je script volledig ontbreekt!

Begin je script eens met:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>

En ga vervolgens ook eens degelijke foutafhandeling van je SQL queries toepassen...
 
- SanThe -

- SanThe -

21/09/2008 12:03:00
Quote Anchor link
Zet dit bovenin je script.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

// rest
?>


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.
 
Jeroen v schie

Jeroen v schie

21/09/2008 12:50:00
Quote Anchor link
Notice: Undefined index: userfile in ... on line 6

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
 
- SanThe -

- SanThe -

21/09/2008 12:55:00
Quote Anchor link
Begin eens met de <form> tag compleet te maken.
<form action="foto-toevoegen.php" method="post">

Moet zijn:
<form action="foto-toevoegen.php" method="post" enctype="multipart/form-data">
 
Jeroen v schie

Jeroen v schie

21/09/2008 12:59:00
Quote Anchor link
Gedaan!

maar het help niet tegen die foutmeldingen...


Wat moet ik nog meer veranderen om het werkend te krijgen?
 
Tikkes C

Tikkes C

21/09/2008 12:59:00
Quote Anchor link
@ 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!
 
Jeroen v schie

Jeroen v schie

21/09/2008 13:02:00
Quote Anchor link
alloewel hij nu wel het plaatje heeft geupload en de naam enz in de database heeft gebracht
 
- SanThe -

- SanThe -

21/09/2008 13:02:00
Quote Anchor link
De volgende stap is controleren of een $var bestaat. Zie onder andere isset().
 
Jeroen v schie

Jeroen v schie

21/09/2008 13:04:00
Quote Anchor link
@tikkes:

Kun je een voorbeeld geven van hoe ik het zou moeten beveiligen?

zoals ik al zei ik ben een totale NOOB.......
 
- SanThe -

- SanThe -

21/09/2008 13:07:00
Quote Anchor link
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.
 
Joren de Wit

Joren de Wit

21/09/2008 13:15:00
Quote Anchor link
Quote:
zoals ik al zei ik ben een totale NOOB.......
Misschien dat het dan slim is om eerst eens met deze PHP Beginnershandleiding te beginnen?
 
Tikkes C

Tikkes C

21/09/2008 13:16:00
Quote Anchor link
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.......



Ik deed t zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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!');

}


?>
 
- SanThe -

- SanThe -

21/09/2008 13:19:00
Quote Anchor link
@Tikkes: En wat als de file 'blablajpg' heet?
 
Tikkes C

Tikkes C

21/09/2008 13:21:00
Quote Anchor link
je hebt toch altijd een extrensie nodig....blablajpg.exe

niet?

anders doe je gewoon telkens ipv -3, -4 en zet je != .jpg etc...
 
Jeroen v schie

Jeroen v schie

21/09/2008 13:27:00
Quote Anchor link
komt dat er dan zo uit te zien ? :

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
<?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 = '&nbsp;&nbsp;&nbsp;';
$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";
}

 

?>
 
- SanThe -

- SanThe -

21/09/2008 13:28:00
Quote Anchor link
@Tikkes: Extensie is niet verplicht hoor.
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 -
 
Jeroen v schie

Jeroen v schie

22/09/2008 19:34:00
Quote Anchor link
zo dan:


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
<?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 = '&nbsp;&nbsp;&nbsp;';
$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";
}

 

?>
 



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.