login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Bestanden uploaden werkt niet meer :(

Offline SimonDW - 12/06/2015 17:52
Avatar van SimonDWNieuw lid Ik heb verhuisd van server voor mijn website en nu werkt het uploaden van bestanden plots niet meer.

  1. <?
  2. include("database.php");
  3. include("variabelen.php");
  4. if (!$submit) {
  5. ?>
  6. <b>.:: Image Uploader</b>
  7. <table width="100%" border="0" cellpadding="2" cellspacing="2">
  8. <tr>
  9. <td width="50">ID</td>
  10. <td>Bestand:</td>
  11. </tr>
  12. <?
  13. $query = "SELECT * FROM downs ORDER BY `id` ASC";
  14. $result = mysql_query($query);
  15. ?>
  16. <?
  17. while ($row = mysql_fetch_array($result)) {
  18. ?>
  19. <tr>
  20. <td width="50"><a href="index.php?module=imagedelete<?print("&id=$row[id]")?>" target="_parent"><?print("$row[id]")?></a></td>
  21. <td><?print("$row[file]")?></td>
  22. </tr>
  23. <tr>
  24. <td width="50">&nbsp;</td>
  25. <td><a href="<? echo "$download_url" ?><?print("$row[file]")?>" target="_blank"><? echo "$download_url" ?><?print("$row[file]")?></a></td>
  26. </tr>
  27. <?
  28. }
  29. ?>
  30. </table>
  31. <br />
  32. Klik op het bestands ID om het bestand te verwijderen.
  33. <br /><br />
  34. <FORM ENCTYPE="multipart/form-data" ACTION="index.php?module=imageupload" METHOD="POST">
  35. <table width="100%" border="0" cellspacing="0" cellpadding="0" align="center">
  36. <tr>
  37. <td width="427" nowrap><b>.:: Bestand Uploaden</b></td>
  38. </tr>
  39. <tr>
  40. <td width="427" nowrap valign="top" height="23"><div align="left">De bestanden komen in volgende map:<br>
  41. <b><? echo "$download_url" ?></b><br>
  42. <br>
  43. <?print("<b><font color=\"FF0000\">$err_upload</font></b>")?> <br>
  44. <input type="hidden" name="MAX_FILE_SIZE" value="2000000000000" class="form">
  45. <input type="hidden" name="id" value="<?print("$id")?>" class="form">
  46. <input name="userfile" type="file" class="form" size="35">
  47. <br>
  48. <input type="submit" value="Verzenden" name="submit" class="form">
  49. </div></td>
  50. </tr>
  51. </table>
  52. </FORM>
  53. <?
  54. } else {
  55.  
  56. if ($userfile_size > 2000000 || $userfile == "none") {
  57. $err = "$userfile_type is te groot, upload een bestand kleiner dan 2Mb.";
  58. header ("Location: index.php?module=imageupload&err_upload=" .$err."&tempid=".$tempid."&hash=".$hash);
  59. }
  60.  
  61. $query = "SELECT file FROM downs WHERE id = '$id'";
  62. $result = mysql_query($query);
  63. $row = mysql_fetch_array($result);
  64. $pic = $row[file];
  65. $path = "$upload_path/$pic";
  66.  
  67. $query = "SELECT file FROM downs WHERE file = '$pic'";
  68. $result = mysql_query($query);
  69. $cnt = 0;
  70. while ($row = mysql_fetch_array($result)) {
  71. $cnt = $cnt + 1;
  72. }
  73.  
  74. if ($cnt == 1 && $pic) {
  75. unlink($path);
  76. }
  77.  
  78. $filename = $HTTP_POST_FILES['userfile']['name'];
  79. $path = "$upload_path";
  80. if (!move_uploaded_file($userfile, $path . $filename)) {
  81. $err = "Er was een fout tijdens het uploaden van $userfile_type.";
  82. echo "<p><b>.:: Image Uploader</b></p><p>Upload was <b>niet</b> succesvol. <a href=\"index.php?module=imageupload\">Klik hier om verder te gaan....</a>";
  83. }
  84.  
  85. $query = "INSERT INTO downs (id, file) VALUES ('NULL', '$filename')";
  86. $result = mysql_query($query) or die ("Kan niet invoegen in database...");
  87.  
  88. echo "<p><b>.:: Image Uploader</b></p><p>Upload succesvol. <a href=\"index.php?module=imageupload\">Klik hier om verder te gaan....</a>";
  89. }
  90. ?>



In database.php staat connectie met database, in variabelen.php staat het upload path. Dit is al aangepast naar nieuwe server.

Er komt geen foutmelding op scherm, maar er wordt niks weggeschreven in de database en geupload naar de server 

3 antwoorden

Gesponsorde links
Offline Thomas - 12/06/2015 20:03 (laatste wijziging 12/06/2015 20:05)
Avatar van Thomas Moderator Tijd om te debuggen. Zet error reporting en het weergeven van fouten aan:
  1. <?php
  2. // zet dit helemaal bovenaan je code
  3. ini_set('display_errors', 'stdout');
  4. ?>


$HTTP_POST_FILES, ik had er nog niet eens ooit van gehoord, maar deze superglobal(naam) is zwaar verouderd. Gebruik $_FILES (EDIT: en dump voor de gein eens de inhoud van $_FILES, mogelijk gaat er iets bij het uploaden zelf mis).

Dan: zorg dat de schrijfrechten van je directory/directories goed zijn. Maak desnoods de uploadmap(pen) aan via PHP om daar enigszins verzekerd van te zijn.

Vervolgens: ik zie nergens een echte controle of je wel met afbeeldingen te maken hebt. Hier kun je dus ook arbitraire code/bestanden mee uploaden? Als deze uploadfunctionaliteit door iedereen te gebruiken is (en niet achter een login steekt ofzo) zou ik dit script ook eens aan een security audit onderwerpen...
Offline SimonDW - 12/06/2015 20:20
Avatar van SimonDW Nieuw lid Thanks FangorN, heb de display_errors bovenaan gezet, maar zie geen fouten.

Tevens de $HTTP_POST_FILES vervangen door $_FILES

Schrijfrechten staan OK.

Script heeft altijd gewerkt onder PHP4 maar nieuwe server zit op PHP5.5

Mag inderdaad ook PDF's uploaden, zit via wachtwoord beveiligde folder veilig weg ;)
Offline Thomas - 12/06/2015 23:31
Avatar van Thomas Moderator Vervang $userfile door $_FILES['userfile'] (maak gebruik van superglobals).

Sloop redirects er tijdelijk uit zodat je niet meteen wordt doorgestuurd als er fouten optreden en dump $_FILES eens in je verwerkstap.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.388s