Upload script werkt niet
na enige tijd debuggen kom ik er niet uit.. ik ben met een upload script bezig die een plaatje moet uploaden in een map op de ftp. De website geeft aan dat het aan het uploaden is en dat het succesvol gelukt is, maar als ik in de map kijk dan staat er geen plaatje.. Ik gebruik het goede bestandsformaat met het plaatje.
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
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
<?php
session_start();
$userSes = $_SESSION['username'];
if(isset($_POST['submit']))
{
echo "<h2></h2>";
echo "
<form action='index.php?pagina=addKlus' method='post' enctype='multipart/form-data'>
<table>
<input type='hidden' name='user' value='".$userSes."'/>
<tr><td>Afbeelding: </td><td><input type='file' name='file' id='file'></td></tr>
<tr><td>Naam: </td><td><input type='text' name='naam' value='".$_POST['naam']."'/></td></tr>
<tr><td>Plaats: </td><td><input type='text' name='plaats' value='".$_POST['plaats']."'/></td></tr>
<tr><td>Onderwerp: </td><td><input type='text' name='onderwerp' value='".$_POST['onderwerp']."'/></td></tr>
<tr><td>Budget: </td><td><input type='text' name='prijs' placeholder='Heel getal'/><font size='1'>*U kunt ze ook een prijs laten geven, dmv geen prijs in te vullen!</font></td></tr>
<tr><td valign='top'>Omschrijving over de klus: </td><td><textarea name='omschrijving' style='width: 400px; height: 200px;'></textarea></td></tr>
<tr><td> </td></tr>
<tr><td>Overige informatie: </td><td><textarea name='info' style='width: 200px; height: 100px;'></textarea></td></tr>
<tr><td></td><td><input type='submit' name='klus' value='Plaats klus' class='buttonStyle' /></td></tr>
</table>
</form>";
}
if(isset($_POST['klus']))
{
if ((($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/PNG"))
&& ($_FILES["file"]["size"] < 26214400))
{
if ($_FILES["file"]["error"] > 0)
{
$error = "Error code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
$error = $_FILES["file"]["name"] . " bestaat al. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . $_FILES["file"]["name"]);
$afbeelding_naam = $_FILES["file"]["name"];
$afbeelding = 'http://www.klusdeals.nl/ingame/pagina/upload/' . $_FILES["file"]["name"];
$tekst = "Bestand succesvol geupload";
}
}
}
else
{
$error = "Verkeerd bestandformaat, jpg & png bestanden zijn toegestaan tot 1mb";
}
echo "Uw klus is succesvol geplaatst!";
}
?>
session_start();
$userSes = $_SESSION['username'];
if(isset($_POST['submit']))
{
echo "<h2></h2>";
echo "
<form action='index.php?pagina=addKlus' method='post' enctype='multipart/form-data'>
<table>
<input type='hidden' name='user' value='".$userSes."'/>
<tr><td>Afbeelding: </td><td><input type='file' name='file' id='file'></td></tr>
<tr><td>Naam: </td><td><input type='text' name='naam' value='".$_POST['naam']."'/></td></tr>
<tr><td>Plaats: </td><td><input type='text' name='plaats' value='".$_POST['plaats']."'/></td></tr>
<tr><td>Onderwerp: </td><td><input type='text' name='onderwerp' value='".$_POST['onderwerp']."'/></td></tr>
<tr><td>Budget: </td><td><input type='text' name='prijs' placeholder='Heel getal'/><font size='1'>*U kunt ze ook een prijs laten geven, dmv geen prijs in te vullen!</font></td></tr>
<tr><td valign='top'>Omschrijving over de klus: </td><td><textarea name='omschrijving' style='width: 400px; height: 200px;'></textarea></td></tr>
<tr><td> </td></tr>
<tr><td>Overige informatie: </td><td><textarea name='info' style='width: 200px; height: 100px;'></textarea></td></tr>
<tr><td></td><td><input type='submit' name='klus' value='Plaats klus' class='buttonStyle' /></td></tr>
</table>
</form>";
}
if(isset($_POST['klus']))
{
if ((($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/PNG"))
&& ($_FILES["file"]["size"] < 26214400))
{
if ($_FILES["file"]["error"] > 0)
{
$error = "Error code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
$error = $_FILES["file"]["name"] . " bestaat al. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . $_FILES["file"]["name"]);
$afbeelding_naam = $_FILES["file"]["name"];
$afbeelding = 'http://www.klusdeals.nl/ingame/pagina/upload/' . $_FILES["file"]["name"];
$tekst = "Bestand succesvol geupload";
}
}
}
else
{
$error = "Verkeerd bestandformaat, jpg & png bestanden zijn toegestaan tot 1mb";
}
echo "Uw klus is succesvol geplaatst!";
}
?>
Tevens zou ik het hele HTML stuk escapen en gewoon als HTML weergeven en geen php voor gebruiken. Is onnodige belasting van je server.
Ook controleer je niet met isset, maar met if ($_SERVER['REQUEST_METHOD'] == "POST")
Gewijzigd op 11/12/2012 09:20:06 door Chris PHP
Maar daar kan nu op dit moment de fout niet liggen lijkt mij, aangezien ik in mijn andere bestand de quotes al heb geprobeerd om te draaien, maar hetzelfde resultaat
Om te beginnen zou ik controleren wat move_uploaded_file() aangeeft. Die functie geeft een boolean terug om aan te geven of het copieren gelukt is.
Hoe kan ik dat controleren?
Tevens heb je hier een fout gemaakt.
Eerst zeg je if(isset($_POST['submit'])) //Klopt niet want je submit name is klus niet submit
en hier zeg je if(isset($_POST['klus']))
Ook zet je alle foto's in 1 map, maar hoe controleer je of de afbeeldingsnaam al niet voorkomt? Bijvoorbeeld afb001.jpg?
Gewijzigd op 11/12/2012 09:38:41 door Chris PHP
ik zoek enkel de fout waarom hij niet upload..
Jeremy Evers op 11/12/2012 09:34:38:
Hoe kan ik dat controleren?
Pardon? Dat zeg ik. Het is een functie en die geeft een boolean terug.
Jeremy Evers op 11/12/2012 09:37:30:
Chris, ik maak wel gebruik van de Submit, maar dat is op de vorige pagina. ;) Dus dat is gewoon correct.
ik zoek enkel de fout waarom hij niet upload..
ik zoek enkel de fout waarom hij niet upload..
Dat is niet correct, POST wordt niet onthouden wanneer je op die pagina nomgaals een submit doet (je upload form). Dan wordt je eerste $_POST variabel leegemaakt en krijg je die van je formulier.
Gebruik hier dan $_GET voor.
Volgens mij maak je ook verkeerd gebruik van tmp_name en name, echo beide is en kijk eens of ze geven wat je verwacht.
Gewijzigd op 11/12/2012 09:42:00 door Chris PHP
Chris NVT op 11/12/2012 09:35:55:
Ook zet je alle foto's in 1 map, maar hoe controleer je of de afbeeldingsnaam al niet voorkomt? Bijvoorbeeld afb001.jpg?
Dat doet hij wel:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
$error = $_FILES["file"]["name"] . " bestaat al. ";
}
?>
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
$error = $_FILES["file"]["name"] . " bestaat al. ";
}
?>
Erwin H op 11/12/2012 09:41:39:
Dat doet hij wel:
Chris NVT op 11/12/2012 09:35:55:
Ook zet je alle foto's in 1 map, maar hoe controleer je of de afbeeldingsnaam al niet voorkomt? Bijvoorbeeld afb001.jpg?
Dat doet hij wel:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
$error = $_FILES["file"]["name"] . " bestaat al. ";
}
?>
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
$error = $_FILES["file"]["name"] . " bestaat al. ";
}
?>
Ja klopt, zag het te laat ;)
Hmm. nog steeds geen resultaat als ik het op GET zet..
Jeremy Evers op 11/12/2012 09:47:37:
Hmm. nog steeds geen resultaat als ik het op GET zet..
je weet dat $_GET met je url meegezonden moet worden he? Dus het is niet een questie van $_POST veranderen in $_GET.
Tevens zie ik dat je alles in je index.php doet, endus zal je sessie niet goed werken aangezien session_start() niet bovenaan de pagina staat.
Tevens, heeft je map 'upload' wel de 777 rechten?
Gewijzigd op 11/12/2012 09:52:43 door Chris PHP
Upload map is 777
Ja en dat over de GET begrijp ik, maar omdat ik met een pagina systeem werk, en dus de pagina in de url zet, werkt de get niet helemaal goed nu. maar hij moet het toch ook gewoon doen met de POST?
En zeker nog steeds niet gechecked of het copieren van het bestand wel lukt... lijkt me toch het eerste wat je doet. Daarnaast ook nog foutmeldingen aan zetten, helpt soms ook wel om te ontdekken wat er dan fout gaat.
Het werkt nog steeds niet, ik heb hem even gebruikt op een andere pagina, gewoon nieuw bestand aangemaakt, een test.php en dit getest. Hij deed het prima, toen heb ik hem weer terug gezet precies hoe hij het deed, maar in die pagina doet hij het niet.. hoe kan dit nou..