Uploaden met afbeelding werkt niet
Tijdje geleden ondertussen ;)
Maar ik heb een probleempje :s en Geraak er maar niet uit.. :/
Ik heb een upload script voor het bewerken van een bepaalde pagina (edit pagina).
Alles loopt goed. Tot hij moet uploaden dan gaat er iets mis.
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
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
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$page = $_POST['page'];
$id = $_POST['id'];
$onderwerp = htmlspecialchars($_POST['naam'], ENT_QUOTES);
$inhoud = htmlspecialchars(nl2br($_POST['bericht'], ENT_QUOTES));
date_default_timezone_set('Europe/Brussels');
$currentdate = date("Y-m-d H:i:s");
if(!empty($_FILES['uploaded']['name'])){
$target = "uploads/";
$target = $target . basename( $_FILES['uploaded']['name']) ;
$filename = basename( $_FILES['uploaded']['name']);
$filename_parts = explode('.',$filename);
$count = count($filename_parts);
if($count> 1){
$ext = $filename_parts[$count-1];
unset($filename_parts[$count-1]);
$filename_to_md5 = implode('.',$filename_parts);
$new = md5($filename_to_md5). '.' . $ext ;
}else{
$new = md5($filename);
}
$ok=1;
//This is our size condition
if ($uploaded_size > 350000){
$err = "Your file is too large.<br>";
$ok=0;
}
if(file_exists('uploads/' . $_FILES['uploaded']['name'])){
$err = $err."File with that name already exists.<br>";
$ok=0;
}
//This is our limit file type condition
if ($uploaded_type =="text/php"){
$err = $err."No PHP files<br>";
$ok=0;
}
//Here we check that $ok was not set to 0 by an error
if ($ok==0){
$succes = "<div class='alert alert-danger'>Er ging iets mis. ". $err ."</div>";
}else{
//If everything is ok we try to upload it
if(move_uploaded_file($_FILES['uploaded']['tmp_name'], "uploads/{$new}")){
$image = "uploads/".$new;
$sql = "UPDATE data SET titel = ".$onderwerp.", inhoud = ".$inhoud.", edit_date = ".$currentdate.", img = ".$image." WHERE id =".$id."";
$retval = mysql_query($sql);
if($retval){
$succes = "<div class='alert alert-danger'>Er ging duidelijk iets mis. Probeer later opnieuw.</div>";
}else{
$message .= "Dit gedeelte (". $page .") werd succesvol geupdate.";
$succes = "<script type='text/javascript'>alert('".$message." . ".$sorry."');</script>";
}
}else{
$succes = "<div class='alert alert-danger'>Er ging iets mis met het uploaden.</div>";
}}}else{
$succes = "<div class='alert alert-danger'>Geen afbeelding gevonden.</div>";
}
}
?>
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$page = $_POST['page'];
$id = $_POST['id'];
$onderwerp = htmlspecialchars($_POST['naam'], ENT_QUOTES);
$inhoud = htmlspecialchars(nl2br($_POST['bericht'], ENT_QUOTES));
date_default_timezone_set('Europe/Brussels');
$currentdate = date("Y-m-d H:i:s");
if(!empty($_FILES['uploaded']['name'])){
$target = "uploads/";
$target = $target . basename( $_FILES['uploaded']['name']) ;
$filename = basename( $_FILES['uploaded']['name']);
$filename_parts = explode('.',$filename);
$count = count($filename_parts);
if($count> 1){
$ext = $filename_parts[$count-1];
unset($filename_parts[$count-1]);
$filename_to_md5 = implode('.',$filename_parts);
$new = md5($filename_to_md5). '.' . $ext ;
}else{
$new = md5($filename);
}
$ok=1;
//This is our size condition
if ($uploaded_size > 350000){
$err = "Your file is too large.<br>";
$ok=0;
}
if(file_exists('uploads/' . $_FILES['uploaded']['name'])){
$err = $err."File with that name already exists.<br>";
$ok=0;
}
//This is our limit file type condition
if ($uploaded_type =="text/php"){
$err = $err."No PHP files<br>";
$ok=0;
}
//Here we check that $ok was not set to 0 by an error
if ($ok==0){
$succes = "<div class='alert alert-danger'>Er ging iets mis. ". $err ."</div>";
}else{
//If everything is ok we try to upload it
if(move_uploaded_file($_FILES['uploaded']['tmp_name'], "uploads/{$new}")){
$image = "uploads/".$new;
$sql = "UPDATE data SET titel = ".$onderwerp.", inhoud = ".$inhoud.", edit_date = ".$currentdate.", img = ".$image." WHERE id =".$id."";
$retval = mysql_query($sql);
if($retval){
$succes = "<div class='alert alert-danger'>Er ging duidelijk iets mis. Probeer later opnieuw.</div>";
}else{
$message .= "Dit gedeelte (". $page .") werd succesvol geupdate.";
$succes = "<script type='text/javascript'>alert('".$message." . ".$sorry."');</script>";
}
}else{
$succes = "<div class='alert alert-danger'>Er ging iets mis met het uploaden.</div>";
}}}else{
$succes = "<div class='alert alert-danger'>Geen afbeelding gevonden.</div>";
}
}
?>
Iemand die weet wat ik mis doe? "<div class='alert alert-danger'>Er ging iets mis met het uploaden.</div>" dit geeft hij weer.
Ik denk dat hier het probleem zit (kan ook fout zijn):
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
if(move_uploaded_file($_FILES['uploaded']['tmp_name'], "uploads/{$new}")){
$image = "uploads/".$new;
$sql = "UPDATE data SET titel = ".$onderwerp.", inhoud = ".$inhoud.", edit_date = ".$currentdate.", img = ".$image." WHERE id =".$id."";
$retval = mysql_query($sql);
if($retval){
$succes = "<div class='alert alert-danger'>Er ging duidelijk iets mis. Probeer later opnieuw.</div>";
}else{
$message .= "Dit gedeelte (". $page .") werd succesvol geupdate.";
$succes = "<script type='text/javascript'>alert('".$message." . ".$sorry."');</script>";
}
}else{
$succes = "<div class='alert alert-danger'>Er ging iets mis met het uploaden.</div>";
}}
?>
if(move_uploaded_file($_FILES['uploaded']['tmp_name'], "uploads/{$new}")){
$image = "uploads/".$new;
$sql = "UPDATE data SET titel = ".$onderwerp.", inhoud = ".$inhoud.", edit_date = ".$currentdate.", img = ".$image." WHERE id =".$id."";
$retval = mysql_query($sql);
if($retval){
$succes = "<div class='alert alert-danger'>Er ging duidelijk iets mis. Probeer later opnieuw.</div>";
}else{
$message .= "Dit gedeelte (". $page .") werd succesvol geupdate.";
$succes = "<script type='text/javascript'>alert('".$message." . ".$sorry."');</script>";
}
}else{
$succes = "<div class='alert alert-danger'>Er ging iets mis met het uploaden.</div>";
}}
?>
Iemand die mij kan helpen? :)
Alvast bedankt :D
Gewijzigd op 05/11/2015 10:15:37 door Webmaster Robbe
Let er ook op dat de mysql-functies verouderd zijn. Gebruik liever MySQLi of PDO.
Gewijzigd op 05/11/2015 10:32:05 door - Ariën -
- waar komt $uploaded_type vandaan?
Daarnaast, uitgaan van het MIME-type van $_FILES is gevaarlijk, omdat deze enkel gebaseerd is op wat de browser doorgeeft (je kunt dus een executable uploaden als textbestand of afbeelding). De browser op haar beurt baseert de MIME-type enkel op de extensie van het te uploaden bestand. Daarbij lijkt het mij ook onverstandig om een blacklist te hanteren (en ook weet ik niet of er zoiets bestaat als een text/php MIME-type?); gebruik een whitelist.
- waar is je formulier? staat enctype="multipart/form-data" in je form-tag?
Als je het melden+weergeven van fouten eens aanzet in je code, ik denk dat je dan eerst aan de slag kunt met het oplossen van enkele ongedefinieerde variabelen.