ugrás a tartalomhoz

Törlés gomb létrehozása

Qem201 · 2011. Jún. 9. (Cs), 20.05
Sziasztok!

Van egy kódom ami megjeleníti a mappában található képeket, és törlés gombot szeretnék berakni.

próbálkoztam ezzel az unlink-el de nem akar összejönni. href-kódot hogy illesztem be, de szerintem az unlink is rossz

<?php

foreach (glob("*.gif,*.jpg,*.png") as $kep) {
   echo "$kep size " . filesize($kep) . "\n";
   unlink($kep);
}


$konyvtar = 'kepek/';
$kiterjesztesek = 'jpg jpeg png gif';

$kiterjesztesek = '/('.implode('|', explode(' ', $kiterjesztések)).')\z/i';
$filek = opendir($konyvtar);
$kepek = array();
while(($file = readdir($filek)) !== false)
if(preg_match($kiterjesztesek, $file)) {
if(is_file($konyvtar.'/'.$file)) {
$kepek[] = $konyvtar.'/'.$file;
}
}
natsort($kepek);
while(list(, $kep) = each($kepek)) {
echo "<a href=$kep><img src=$kep width=160 height=120></a>\n";


}

?>
 
1

Mit csinál

Poetro · 2011. Jún. 10. (P), 00.21
És a törlés gomb mit csinál? Az unlink-kel egyetlen fájlt lehet törölni. Melyik fájlt szeretnéd törölni? Mindet? Vagy csak egyet? Vagy csak azokat, amiknek megfelelő a kiterjesztése? Számoltál a törlés biztonsági kockázatával (azaz megfelelően módosított felhasználó által bevitt adatok alapján esetleg olyan fájlokat is le lehet törölni, amit nem szeretnél)?

Kicsit szebb kód a listázáshoz:
  1. <?php  
  2. $konyvtar = 'kepek/';  
  3. $kiterjesztesek = 'jpg jpeg png gif';  
  4. $kepek = array();  
  5.   
  6. $kiterjesztesek = '/\.('.  
  7.   implode('|'array_map('preg_quote'explode(' '$kiterjesztések))) .  
  8.   ')$/i';  
  9. if (is_dir($konyvtar) && ($files = scandir($konyvtar))) {  
  10.   foreach ($files as $file) {  
  11.     if(preg_match($kiterjesztesek$file)) {  
  12.       $kepek[] = $konyvtar.'/'.$file;  
  13.     }  
  14.   }  
  15. }  
  16. natsort($kepek);  
  17. foreach ($kepek as $kep) :  
  18. ?>  
  19.   
  20. <a href=$kep><img src="<?php echo htmlspecialchars($kep, ENT_QUOTES, 'UTF-8') ?>" width=160 height=120></a>  
  21.   
  22. <?php endforeach; ?>  
2

Képeket jelenít meg a listázó

Qem201 · 2011. Jún. 10. (P), 15.58
Képeket jelenít meg a listázó és a képek mellett szeretnék törlés gombot.
3

Kérdések

Poetro · 2011. Jún. 10. (P), 16.44
Kérlek válaszolj a kérdésekre is.
5

Törlés gomb egyesével törölné

Qem201 · 2011. Jún. 10. (P), 16.54
Törlés gomb egyesével törölné a kepék mappámban lévő képeket ezek *.jpg kiterjesztésük.
Van egy másik script ami ki listázza a képeket egy adott oldalon de folyamatosan frissülés van ami azt jelenti hogy a régi képek nem kellenek ezért kell a törlés.

Konkrétan egy disco web oldal része ez ahol a fő oldalon megjelennek a flayerek és azokat cserélgetjük admin rendszerben, és így nem kell ftp-re felmenni.

Listázás admin részben van és van feltöltési rész is ezek szépen működnek de a törlés egy kis fejtörést okozott nekem.
4

Nem akarok kötekedni, de...

H.Z. v2 · 2011. Jún. 10. (P), 16.50
ez:
  1. foreach (glob("*.gif,*.jpg,*.png"as $kep) {  
  2.    echo "$kep size " . filesize($kep) . "\n";  
  3.    unlink($kep);  
  4. }  
szerintem listázza és egy laza mozdulattal törli is a képfájlokat...
6

mint elején írtam hogy nem

Qem201 · 2011. Jún. 10. (P), 17.24
mint elején írtam hogy nem akar össze jönni ez a törlés része:S
7

Példa

Poetro · 2011. Jún. 10. (P), 18.08
  1. <?php  
  2. $konyvtar = 'Images';  
  3. $kiterjesztesek = 'jpg jpeg png gif';  
  4. $kepek = array();  
  5.   
  6. $kiterjesztesek = '/\.('.  
  7.   implode('|'array_map('preg_quote'explode(' '$kiterjesztesek))) .  
  8.   ')$/i';  
  9. // Végigmegyünk a könyvtáron, és feltöltjük a képek listáját.  
  10. if (is_dir($konyvtar) && ($files = scandir($konyvtar))) {  
  11.   foreach ($files as $file) {  
  12.     if(preg_match($kiterjesztesek$file)) {  
  13.       $kepek[] = $konyvtar . '/' . $file;  
  14.     }  
  15.   }  
  16. }  
  17.   
  18. // Ha törlés parancs volt, és a kép létezik a listánkban  
  19. if (isset($_GET['action']) && $_GET['action'] == 'delete' &&  
  20.     isset($_POST['kep']) && ($key = array_search($_POST['kep'], $kepek)) !== FALSE) {  
  21.   // Töröljük a képet, átdobjuk a felhasználót.  
  22.   unlink($kepek[$key]);  
  23.   header('Location: http://' . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF']);  
  24.   exit();  
  25. }  
  26.   
  27. /** 
  28.  * Megfelelően kódolja a szöveget,  
  29.  * hogy HTML attribútumban elhelyezhető legyen 
  30.  */  
  31. function check_plain($text) {  
  32.   return htmlspecialchars($text, ENT_QUOTES, 'UTF-8');  
  33. }  
  34.   
  35. natsort($kepek);  
  36.   
  37. // Kódoljuk az összes elemet  
  38. $kepek = array_map('check_plain'$kepek);  
  39. ?>  
  40. <!DOCTYPE HTML>  
  41. <html lang="en-US">  
  42. <head>  
  43.   <meta charset="UTF-8">  
  44.   <title>Képek</title>  
  45. </head>  
  46. <body>  
  47.   <h1>Képek</h1>  
  48.   <ul>  
  49. <?php foreach ($kepek as $kep) : ?>  
  50.     <li>  
  51.       <form action="<?php print $_SERVER['PHP_SELF']; ?>?action=delete" method="post">  
  52.         <div>  
  53.           <a href="<?php echo $kep; ?>"><img src="<?php echo $kep; ?>" width="160" height="120" alt="" /></a>  
  54.           <input type="hidden" value="<?php echo $kep; ?>" name="kep" />  
  55.           <input type="submit" value="Törlés" />  
  56.         </div>  
  57.       </form>  
  58.     </li>  
  59. <?php endforeach; ?>  
  60.   </ul>  
  61. </body>  
  62. </html>  
8

Ezer hála, nagyon szépen

Qem201 · 2011. Jún. 10. (P), 20.24
Ezer hála, nagyon szépen köszönöm!!!!!!!