login  Naam:   Wachtwoord: 
Registreer je!
 Forum

formulier met afbeelding uploaden

Offline Gust - 15/10/2008 18:05
Avatar van GustMySQL interesse Ik heb een formuliertje, waar je ook een afbeelding kunt uploaden. Op de afbeelding na zijn alle velden verplicht

Indien de afbeelding geupload wordt:
- alleen jpg of gif
- niet groter dan 500px
- niet zwaarder dan 50kb

Ik slaag er alleen niet in dit voor elkaar te krijgen. dit is wat ik heb:
  1. if(!strlen($_POST['datum'])) {
  2. echo ' Je hebt geen datum ingevuld <br><br>';
  3. echo '<a href="javascript:history.back(1);">Terug</a><br><br>';
  4. } elseif(!strlen($_POST['titel'])) {
  5. echo ' Je hebt geen titel ingevuld<br><br>';
  6. echo '<a href="javascript:history.back(1);">Terug</a><br><br>';
  7. } elseif(!strlen($_POST['groep'])) {
  8. echo ' Je hebt geen groep ingevuld<br><br>';
  9. echo '<a href="javascript:history.back(1);">Terug</a><br><br>';
  10. } elseif(!strlen($_POST['beschrijving'])) {
  11. echo ' Je hebt geen beschrijving ingevuld <br><br>';
  12. echo '<a href="javascript:history.back(1);">Terug</a><br><br>';
  13. } elseif(!strlen($_POST['adres'])) {
  14. echo ' Je hebt geen adres ingevuld <br><br>';
  15. echo '<a href="javascript:history.back(1);">Terug</a><br><br>';
  16. } elseif($_FILES['afbeelding']['size']>50000) {
  17. echo ' De afbeelding is te groot. Niet meer dan 200kb aub <br><br>';
  18. echo '<a href="javascript:history.back(1);">Terug</a><br><br>';
  19. } elseif(!eregi("((.gif|.jpg)$)", $_FILES['afbeelding']['name'])) {
  20. echo ' De afbeelding heeft de verkeerde extensie.<br>Alleen jpg of gif aub.<br><br>';
  21. echo '<a href="javascript:history.back(1);">Terug</a><br><br>';
  22. } elseif($width > 500 or $height > 500){
  23. echo ' Maximale grootte 500x500. Probeer het opnieuw.<br><br>';
  24. echo '<a href="javascript:history.back(1);">Terug</a><br><br>';
  25. } elseif (strlen($_POST['emailadres']) && !CheckEmail($_POST['emailadres'])) {
  26. echo ' Je hebt een ongeldig emailadres opgegeven!<br><br>';
  27. echo '<a href="javascript:history.back(1);">Terug</a><br><br>';

24 antwoorden

Gesponsorde links
Offline Rens - 15/10/2008 18:08
Avatar van Rens Gouden medaille

Crew algemeen
Staat je form-tag zo:
  1. <form method="post" action="<filenaam>" enctype="multipart/form-data">

Dat is nodig voor het uploaden.
Offline Gust - 15/10/2008 20:38
Avatar van Gust MySQL interesse O, een form voor het uploaden? Dat is nieuw  

Rens,
het gedeelte waar jij het over hebt is de TOEVOEGpagina,
het gedeelte waar ik het over heb is de VERWERKpagina.

Of moet ik er een tekening bijmaken?
Offline Wim - 15/10/2008 20:52
Avatar van Wim Crew algemeen
Gust schreef:
Of moet ik er een tekening bijmaken?


als je ze voor Rens niet moet maken maak je ze maar voor mij, want jij bent wel degelijk bezig met een formulier om bestanden op te laden:
Citaat:
} elseif($_FILES['afbeelding']['size']>50000) {


bovendien, ik vind het iig erg onbeleefd van je om zo'n botte reactie te geven. als ik rens was zou ik niet meer reageren in dit topic en je laten verder sukkelen
Offline Gust - 15/10/2008 22:38
Avatar van Gust MySQL interesse  Met die tekening bedoel ik de code hé  

dit is toevoegen.php:
<form method="post" action="agenda_verwerk.php bla bla bla>
<input name="afbeelding" type="file" size="35" />
de rest
</form>

en hetgeen ik daarnet heb gepost is verwerk.php
Offline zointer - 16/10/2008 00:37
Avatar van zointer HTML gevorderde @ts eerst en vooral leer netjes scripten, je code is echt bagger 
Offline Kr4nKz1n - 16/10/2008 08:55
Avatar van Kr4nKz1n Onbekend
Gust schreef:
:p Met die tekening bedoel ik de code hé  

dit is toevoegen.php:
<form method="post" action="agenda_verwerk.php bla bla bla>
<input name="afbeelding" type="file" size="35" />
de rest
</form>

en hetgeen ik daarnet heb gepost is verwerk.php
Waar staat toevoegen? Ik zie geen code tussen code tags dus dan zie ik geen code..
Offline Gust - 16/10/2008 18:38
Avatar van Gust MySQL interesse toevoegen.php
  1. <form method="post" action="agenda_verwerk.php bla bla bla>
  2. <input name="afbeelding" type="file" size="35" />
  3. de rest
  4. </form>


agenda_verwerk.php
  1. $uploaddir = 'pad naar de afbeeldingmap/';
  2. $uploadfile = $uploaddir . $_FILES['afbeelding']['name'];
  3.  
  4.  
  5. $datum = $_POST["datum"];
  6. $uur = $_POST["uur"];
  7. $titel = $_POST["titel"];
  8. $groep = $_POST["groep"];
  9. $beschrijving = $_POST["beschrijving"];
  10. $land = $_POST["land"];
  11. $adres = $_POST["adres"];
  12. $url = $_POST["url"];
  13. $afbeelding = $_FILES["afbeelding"]["name"];
  14.  
  15. list($width, $height) = getimagesize("images/$afbeelding");
  16.  
  17.  
  18.  
  19. echo "
  20. <style>
  21.  
  22. body {
  23.  
  24. background-color: #FFFFCC;
  25. }
  26.  
  27.  
  28. </style>
  29. <div align=\"center\"><b><font color=\"#CC0000\" face=\"Helvetica, Arial, sans-serif\" size=\"4\">Voeg een activiteit toe</font></b></div><br><br>
  30. <table width=\"400\" border=\"1\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" bordercolor=\"#CC0000\">
  31. <tr>
  32. <td>
  33. <div align=\"center\"><b><font color=\"#CC0000\" face=\"Helvetica, Arial, sans-serif\" size=\"2\">
  34. <br>";
  35.  
  36.  
  37. if(!strlen($_POST['datum'])) {
  38. echo ' Je hebt geen datum ingevuld <br><br>';
  39. echo '<a href="javascript:history.back(1);">Terug</a><br><br>';
  40. } elseif(!strlen($_POST['titel'])) {
  41. echo ' Je hebt geen titel ingevuld<br><br>';
  42. echo '<a href="javascript:history.back(1);">Terug</a><br><br>';
  43. } elseif(!strlen($_POST['groep'])) {
  44. echo ' Je hebt geen groep ingevuld<br><br>';
  45. echo '<a href="javascript:history.back(1);">Terug</a><br><br>';
  46. } elseif(!strlen($_POST['beschrijving'])) {
  47. echo ' Je hebt geen beschrijving ingevuld <br><br>';
  48. echo '<a href="javascript:history.back(1);">Terug</a><br><br>';
  49. } elseif(!strlen($_POST['adres'])) {
  50. echo ' Je hebt geen adres ingevuld <br><br>';
  51. echo '<a href="javascript:history.back(1);">Terug</a><br><br>';
  52. } elseif($_FILES['afbeelding']['size']>50000) {
  53. echo ' De afbeelding is te groot. Niet meer dan 50kb aub <br><br>';
  54. echo '<a href="javascript:history.back(1);">Terug</a><br><br>';
  55. } elseif(exif_imagetype($_FILES['afbeelding']) != IMAGETYPE_JPEG) {
  56. echo 'De afbeelding heeft de verkeerde extensie.<br>Alleen .jpg is toegelaten';
  57. echo '<a href="javascript:history.back(1);">Terug</a><br><br>';
  58. } elseif($width > 500 or $height > 500){
  59. echo ' Maximale grootte 500x500. Probeer het opnieuw.<br><br>';
  60. echo '<a href="javascript:history.back(1);">Terug</a><br><br>';
  61. } elseif (strlen($_POST['emailadres']) && !CheckEmail($_POST['emailadres'])) {
  62. echo ' Je hebt een ongeldig emailadres opgegeven!<br><br>';
  63. echo '<a href="javascript:history.back(1);">Terug</a><br><br>';
  64.  
  65. echo '
  66. <br>
  67. </font></b></div>
  68. <br>
  69. <br>
  70. </td>
  71. </tr>
  72. </table>
  73. <br>
  74. <br>
  75. ';
  76.  
  77. } else
  78. {
  79. $query="INSERT INTO ...
  80.  
  81. ?>
Offline Kr4nKz1n - 16/10/2008 18:40
Avatar van Kr4nKz1n Onbekend
Gust schreef:
O, een form voor het uploaden? Dat is nieuw  

Rens,
het gedeelte waar jij het over hebt is de TOEVOEGpagina,
het gedeelte waar ik het over heb is de VERWERKpagina.

Of moet ik er een tekening bijmaken?
Humor.


Formulier.......
Offline marten - 16/10/2008 18:56
Avatar van marten Beheerder Je mist een quote van je action en zoals Rens al zei moet je de enctype meegeven.
Offline Rens - 16/10/2008 19:26 (laatste wijziging 16/10/2008 19:26)
Avatar van Rens Gouden medaille

Crew algemeen
Inderdaad, wat Marten hier weer aanhaalt, je vergeet de enctype.
Dus ik snap niet helemaal waarom jij zo reageert, als je gelezen en gekeken had was het waarschijnlijk al opgelost...
  1. <form method="post" action="agenda_verwerk.php bla bla bla>

Zo ziet jou code er uit.
Er zit sowieso al 1 fout in, maar omdat het een upload-formulier moet zijn zitten er 2 fouten in.
Je vergeet je sluit quote van je actie, en, zoals ik al meteen zei, je hebt je enctype niet ingesteld.
Offline Gust - 16/10/2008 19:56 (laatste wijziging 17/11/2008 14:06)
Avatar van Gust MySQL interesse Ik zeg net: <form bla bla bla...> Ik ga niet al die ziever meesturen want er is niets mis met de form. Dit is hoe mijn form eruitziet: <form id="form1" name="form1" method="post" action="agenda_verwerk.php" enctype="multipart/form-data">

Laten we ons nu even concentreren in de verwerkpagina, wat we met die foto's kunnen doen. Denk je dat die code juist is?

De rest is al opgelost, nu het probleem van die extensies nog
Offline roberini - 17/11/2008 17:40
Avatar van roberini HTML beginner
Citaat:
Laten we ons nu even concentreren in de verwerkpagina, wat we met die foto's kunnen doen. Denk je dat die code juist is?


Op de manier hoe je het zegt, lijkt het net of je wil dat hun het voor je maken. Probeer ten eerste eens wat er word gezegt, en als het dan niet lukt, kan je altijd nog vragen wat je verder moet.
Offline BigBug - 17/11/2008 18:28
Avatar van BigBug PHP expert strlen(); geeft de lengte van een string aan. Als je die functie niet gebruikt door strlen(); zonder voowaarde te gebruiken kun je beter empty(); gebruiken.

strlen(); wordt vaker gebruikt als bijv:
  1. <?php
  2. if(strlen($_POST['iets']) < 5)
  3. {
  4. ?>
Offline Gust - 18/11/2008 16:14
Avatar van Gust MySQL interesse Dank je, BigBug, heb het inmiddels toegepast

Maar het moeilijkste blijft natuurlijk de extensie. Dit heb ik nu toegepast:
  1. } elseif(isset($_FILES['afbeelding'])&& (!eregi("((.gif|.jpg)$)", $_FILES['afbeelding']['name']))) {
  2. echo ' De afbeelding heeft de verkeerde extensie.<br>Alleen jpg of gif aub.<br><br>';
  3. echo '<a href="javascript:history.back(1);">Terug</a><br><br>';


De bedoeling is dat het uploaden van een afbeelding niet verplicht is. Indien er toch iets geupload wordt mag het alleen jpg of gif zijn. Tot nu toe vraagt ie ook naar deze extensies als er niets geupload wordt.
Offline BigBug - 18/11/2008 19:22 (laatste wijziging 18/11/2008 19:23)
Avatar van BigBug PHP expert Dat is heel makkelijk:

  1. <?php
  2. if($_FILES['afbeelding']['type'] == "image/gif" || $_FILES['afbeelding']['type'] == "image/jpg" || $_FILES['afbeelding']['type'] == "image/jpeg")
  3. {
  4. // afbeelding is gif, jpg of jpeg!
  5. }
  6. else
  7. {
  8. // geef error weer oid
  9. }
  10. ?>


Succes!  

Edit: zoals jij het doet is het niet zo handig! Als ik een bestand hack.jpg.exe zou uploaden, dan heb jij een probleem 
Offline Gust - 19/11/2008 09:31 (laatste wijziging 19/11/2008 09:33)
Avatar van Gust MySQL interesse Ok, nu is het niet meer verplicht, maar het is de bedoeling dat er alleen jpg of gif mag geupload worden.

Hoe jij het hebt, kun je alle bestanden uploaden, behalve gif of jpg!

Als ik de == verander in != dan doet ie dat. Maar dan geeft ie ook een error wanneer er niets geupload wordt.

Dus wat het moet worden:
- uploadveld niet verplicht
- indien toch een upload: alleen jpg of gif
Offline Kr4nKz1n - 19/11/2008 10:35
Avatar van Kr4nKz1n Onbekend
BigBug schreef:
Dat is heel makkelijk:

[..code..]

Succes!  

Edit: zoals jij het doet is het niet zo handig! Als ik een bestand hack.jpg.exe zou uploaden, dan heb jij een probleem 
Zeker handig, nog handiger is een array.

  1. $aFiles = Array('image/gif', 'image/jpg', 'image/jpeg');
  2. If(In_Array($_FILES['afbeelding']['type'], $aFiles))
Offline Gust - 19/11/2008 11:01
Avatar van Gust MySQL interesse Het uploadveld is nu niet verplicht, dat is al goed.

Maar voor de rest doet ie het omgekeerde:

- geeft een error wanneer er gif of jpg wordt geupload
- geeft geen error wanneer er een andere extensie geupload wordt

Moet er ergens een ! bij? bv
  1. if(!In_Array($_FILES['afbeelding']['type'], !$aFiles)){
Offline TotempaaltJ - 19/11/2008 17:30
Avatar van TotempaaltJ PHP interesse
  1. <?php
  2. if($_FILES['afbeelding']['type'] == "image/gif" || $_FILES['afbeelding']['type'] == "image/jpg" || $_FILES['afbeelding']['type'] == "image/jpeg")
  3. {
  4. // afbeelding is gif, jpg of jpeg!
  5. }
  6. else
  7. {
  8. // geef error weer oid
  9. }
  10. ?>


Gust: Je programmeert, je moet dingen lezen! Niet ff snel er overheen kijken: L E Z E N

Er staat letterlijk: // geef error weer oid. Get the point? Is het zo moeilijk? Je reageert alsof je denkt dat je alles weet! 
Offline BigBug - 19/11/2008 18:43
Avatar van BigBug PHP expert Een 'quick peek' in deze tutorial zou ook geen slecht idee zijn:

http://www.site..._bestanden
Offline Gust - 19/11/2008 19:40
Avatar van Gust MySQL interesse
Bigboss schreef:
Gust: Je programmeert, je moet dingen lezen! Niet ff snel er overheen kijken: L E Z E N

Er staat letterlijk: // geef error weer oid. Get the point? Is het zo moeilijk? Je reageert alsof je denkt dat je alles weet! 


Ik snap het echt niet hoor, ik kijk er niet snel overeen.

Mogelijk blijft het probleem zich voordoen omdat ik het probeer te integreren in de rest van de code, en dan reageert het met het resultaat dat ik aanhaalde. Komt dat over alsof ik alles al weet? Dan zou ik hier niet zijn hé  

Dit is het resultaat:
  1. if(!strlen($_POST['datum'])) {
  2. echo ' Je hebt geen datum ingevuld <br><br>';
  3. echo '<a href="javascript:history.back(1);">Terug</a><br><br>';
  4. } elseif(!strlen($_POST['titel'])) {
  5. echo ' Je hebt geen titel ingevuld<br><br>';
  6. echo '<a href="javascript:history.back(1);">Terug</a><br><br>';
  7. } elseif(!strlen($_POST['groep'])) {
  8. echo ' Je hebt geen groep ingevuld<br><br>';
  9. echo '<a href="javascript:history.back(1);">Terug</a><br><br>';
  10. } elseif(!strlen($_POST['beschrijving'])) {
  11. echo ' Je hebt geen beschrijving ingevuld <br><br>';
  12. echo '<a href="javascript:history.back(1);">Terug</a><br><br>';
  13. } elseif(!strlen($_POST['adres'])) {
  14. echo ' Je hebt geen adres ingevuld <br><br>';
  15. echo '<a href="javascript:history.back(1);">Terug</a><br><br>';
  16. } elseif($_FILES['afbeelding']['size']>50000) {
  17. echo ' De afbeelding is te groot. Niet meer dan 200kb aub <br><br>';
  18. echo '<a href="javascript:history.back(1);">Terug</a><br><br>';
  19. } elseif($_FILES['afbeelding']['type'] == "image/gif" || $_FILES['afbeelding']['type'] == "image/jpg" || $_FILES['afbeelding']['type'] == "image/jpeg") {
  20. echo ' De afbeelding heeft de verkeerde extensie.<br>Alleen jpg of gif aub.<br><br>';
  21. echo '<a href="javascript:history.back(1);">Terug</a><br><br>';
  22. } elseif($width > 500 or $height > 500){
  23. echo ' Maximale grootte 500x500. Probeer het opnieuw.<br><br>';
  24. echo '<a href="javascript:history.back(1);">Terug</a><br><b
  25. } elseif (strlen($_POST['emailadres']) && !CheckEmail($_POST['emailadres'])) {
  26. echo ' Je hebt een ongeldig emailadres opgegeven!<br><br>';
  27. echo '<a href="javascript:history.back(1);">Terug</a><br><br>';
Offline Kr4nKz1n - 20/11/2008 09:30 (laatste wijziging 20/11/2008 09:31)
Avatar van Kr4nKz1n Onbekend Aan de kleuren zie je dat je een fout hebt.

Ook is het sneller om || te gebruiken i.p.v. OR in PHP.
Terwijl je wel weer && gebruikt i.p.v. AND. Beetje door elkaar...

line 24 ';

Edit
Wat me nu ineens op viel
  1. elseif(!strlen($_POST['titel']))
??
  1. elseif(empty($_POST['titel']))
Is handiger.
Offline Gerard - 20/11/2008 11:20
Avatar van Gerard Ouwe rakker PHP.net: strlen heeft wel de voorkeur boven controleren met PHP.net: empty. In een andere thread heb ik hier een keer een uitleg gegeven over het verschil.
Offline Kr4nKz1n - 20/11/2008 12:12
Avatar van Kr4nKz1n Onbekend Ok doorgelezen, klopt ja.

Maar dan ga ik er nog even op in, dat dit sowieso geen goede en mooie methode is om te controleren of een veld leeg is. Het mooiste is om hiervoor een kleine simpele functie te gebruiken waarin je de variabele door een trim heen haalt en uit eindelijk controleert met strlen. Want met ' 3 ' heb ik wel 7 tekens. Terwijl je wilt dat je systeem het rekent als 1.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.657s