login  Naam:   Wachtwoord: 
Registreer je!
 Forum

imagedestroy();

Offline finduilas - 13/07/2006 08:06 (laatste wijziging 13/07/2006 08:06)
Avatar van finduilasPHP gevorderde Hallo;

Ik wil nu iemand de avatar laten verwijderen.Op php.net vond ik imagedestroyt();.Dit heb ik dan in me code ingebouwd:
  1. <?php $username = $_SESSION['username'];
  2. if($_GET['actie'] == "delete")
  3. {
  4. $query = mysql_query("SELECT avatar FROM leden WHERE username = '".$username."'");
  5. $obj = mysql_fetch_assoc($query);
  6. echo $obj['avatar'];
  7. if(imagedestroy($obj['avatar']))
  8. {
  9. $update = "UPDATE leden SET avatar='' WHERE username='".$username."'";
  10. $query = mysql_query($update) or die(mysql_error());
  11. echo'Avater succesvol verwijdert!';
  12. }
  13. } ?>

Maar ik krijg steeds de melding Warning: imagedestroy(): supplied argument is not a valid Image resource in D:\wamp\www\finduilas\avaterwijzigen.php on line 14

Nochtans als ik echo $obj['avatar']; krijg ik avatars/finduilas.gif
en dat is het bestand die moet worden verwijderd.Moet er iets meer bij?
Me mappen zijn zo:
Finduilas:
+avaterwijzigen.php
+avatars
++finduilas.gif

Hoe los ik dit op?

7 antwoorden

Gesponsorde links
Offline sjak - 13/07/2006 08:15
Avatar van sjak HTML interesse alle urls goed?
Offline Bart - 13/07/2006 08:20
Avatar van Bart PHP expert bool imagedestroy ( resource image )

Wat jij daarin hebt staan is hoogstwaarschijnlijk alleen finduilas.gif he?
Je moet het exacte path opgeven voor imagedestroy()
Offline marten - 13/07/2006 09:48 (laatste wijziging 13/07/2006 09:49)
Avatar van marten Beheerder mmm imagedestroy is een functie voor het legen van resources als je met gd library zelf een plaatje maakt. Dat zal hier waarschijnlijk niet werken omdat je dat niet gedaan hebt

verwijderen doe je met unlink bijvoorbeeld
Offline finduilas - 13/07/2006 12:24 (laatste wijziging 13/07/2006 12:31)
Avatar van finduilas PHP gevorderde Ow,Ty marten

@Quicky: Als je goed me post las zie je :
Citaat:
Nochtans als ik echo $obj['avatar']; krijg ik avatars/finduilas.gif

EDIT: Het werkt prima:
Alleen zit er nog ergens een foutje in:
  1. <?php
  2. if (!is_logged_in())
  3. {
  4. echo "Je bent niet ingelogd.";
  5. }
  6. else
  7. {
  8. $username = $_SESSION['username'];
  9. if($_GET['actie'] == "delete")
  10. {
  11. $query = mysql_query("SELECT avatar FROM leden WHERE username = '".$username."'");
  12. $obj = mysql_fetch_assoc($query);
  13. if(unlink($obj['avatar']))
  14. {
  15. $update = "UPDATE leden SET avatar='' WHERE username='".$username."'";
  16. $query = mysql_query($update) or die(mysql_error());
  17. echo'Je avater is succesvol verwijderd!';
  18. header("location: index.php?pagina=profiel");
  19. }
  20. }
  21. if($_GET['actie'] == "wijzig")
  22. { $map = "avatars/";
  23. $groote = 50;
  24. $extensie = array ('jpg', 'jpeg', 'gif', 'png');
  25. $max_width = "100";
  26. $max_heigth = "100";
  27.  
  28. $query = mysql_query("SELECT avatar FROM leden WHERE username = '".$username."'");
  29. $obj = mysql_fetch_assoc($query);
  30. $avatar = '<img src="'.$obj['avatar'].'" border="0" />';
  31. $avatar_oud = $obj['avatar'];
  32. if(isset($_POST['submit_upload']))
  33. {
  34. $file_size = round($_FILES['avatar']['size'] / 1024);
  35. $file_type = $_FILES['avatar']['type'];
  36. $file = basename($_FILES['avatar']['name']);
  37. $ext = explode(".", $file);
  38. $file_extension = array_pop($ext);
  39. $file_name = $_SESSION['username'];
  40. $size = getimagesize($_FILES['avatar']['tmp_name']);
  41. $width = $size[0];
  42. $height = $size[1];
  43. $file2 = $file_name.".".$file_extension;
  44. $aError = array();
  45. if(!isset($_FILES['avatar']))
  46. {
  47. array_push($aError,'Je hebt geen avater opgegeven.');
  48. }
  49. if(file_exists("$map$file2"))
  50. {
  51. array_push($aError,'U moet eerst uw andere avatar verwijderen!');
  52. }
  53. if($file_size > $groote)
  54. {
  55. array_push($aError,'Uw avatar is groter dan '.$groote.' kb.<br />');
  56. }
  57. if($width > $max_width OR $height > $max_heigth)
  58. {
  59. array_push($aError,'De afmetingen voor je avatar zijn beperkt.Breedte:'.$max_width.' Hoogte:'. $max_heigth);
  60. }
  61. if(!in_array(strtolower($file_extension),$extensie))
  62. {
  63. array_push($aError,'Je afbeelding is niet van het type:'.implode(",", $extensie));
  64. }
  65. if (count($aError) != 0)
  66. {
  67. echo 'De volgende fouten zijn opgetreden:<br \>';
  68. foreach($aError as $sError)
  69. {
  70. echo '- ' . $sError . '<br />';
  71. }
  72. }
  73. else
  74. { echo $map.$file_name.'.'.$file_extension."<br \>";
  75. echo $file_name.'.'.$file_extension;
  76. $file = $map;
  77. $file.= $file_name.".";
  78. $file.= $file_extension;
  79. $dbavatar = mysql_query("UPDATE leden SET avatar = '".$file."' WHERE username = '".$username."'");
  80. if(move_uploaded_file($_FILES['avatar']['tmp_name'], $map . $file_name . "." . $file_extension))
  81. {
  82. echo 'Uw avatar is geupload!<br />';
  83. echo 'Bekijk hem hier: <a href="'.$map . $file_name . "." . $file_extension.'">Afbeelding</a>';
  84. }
  85. }
  86. }
  87. else
  88. {
  89. ?>
  90. <form action="<?php $_SERVER['REQUEST_URI']; ?>" method="post" enctype="multipart/form-data">
  91. <table>
  92. <tr>
  93. <td align="left">
  94. <b>Huidige avatar:</b>
  95. </td>
  96. <td align="left">
  97. <?php echo $avatar ?>
  98. </td>
  99. </tr>
  100. <tr>
  101. <td align="center" colspan="2">
  102. <b>Avatar Uploaden:</b>
  103. </td>
  104. </tr>
  105. <tr>
  106. <td align="center" colspan="2">
  107. <input type="file" name="avatar" size="40" />
  108. </td>
  109. </tr>
  110. <tr>
  111. <td colspan="2" align="center">
  112. <input type="submit" name="submit_upload" value="Upload" />
  113. </td>
  114. </tr>
  115. </table>
  116. </form>
  117. <?php
  118. }
  119. }
  120. else
  121. {
  122. echo'Ongeldige actie!';
  123. }
  124. }
  125. ?>

Als ik nu pagina=avaterwijzigen&actie=delete doet hij wat hij moet doen maar geeft hij ook Ongeldige actie die normaal niet zou mogen.
Offline Thomas - 13/07/2006 13:54
Avatar van Thomas Moderator Euh, imagedestroy verwijdert een image uit het tijdelijke werkgeheugen, als je een fysiek plaatje (bestand) wilt verwijderen doe je dit met unlink().

imagedestroy() gebruik je voor "cleanup" tijdens de uitvoer van je script - hiermee worden plaatjes uit het tijdelijke geheugen verwijderd. Na afloop van het script wordt al dit geheugen sowieso vrijgegeven als het goed is .
Offline Maarten - 13/07/2006 14:01
Avatar van Maarten Erelid Wat FangorN hierboven zegt is inderdaad de juiste uitleg.
imagedestroy hoor je eigenlijk altijd te gebruiken als je een afbeelding genereert: als je afbeelding klaar is, doe je imagepng() of een ander formaat om je afbeelding naar het scherm te sturen, en daarna ruim je alles op met imagedestroy(). Belangerijk voor het optimaal presteren van je server.
Offline finduilas - 13/07/2006 16:11 (laatste wijziging 13/07/2006 19:23)
Avatar van finduilas PHP gevorderde Dat is niet mijn probleem meer.Ik had het al gevonden/gekregen .
Alleen krijg ik de echo van m'n laaste else bij if($_GET['actie'] == "delete") en dat mag/wil ik ook niet.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.192s