Upload script werkt niet
Beste mensen,
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.
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!";
}
?>
Waarom draait iedereen altijd de quotes om? Het is enkel ' voor echo's en dubbel " voor HTML.
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")
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?
Nee maar het is wel ongelofelijk lastig troubleshooten zo. Alles is als echo weergegeven dus een tikfout is zo gemaakt. Nogmaals het is ook onnodige belasting van de server om client side code te laten uitvoeren door de server.
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?
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
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..
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
Chris, de sessies werken perfect, het is met een pagina systeem ;)
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?
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.
Update van het script:
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..
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..




