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:
<?php
$konyvtar = 'kepek/';
$kiterjesztesek = 'jpg jpeg png gif';
$kepek = array();

$kiterjesztesek = '/\.('.
  implode('|', array_map('preg_quote', explode(' ', $kiterjesztések))) .
  ')$/i';
if (is_dir($konyvtar) && ($files = scandir($konyvtar))) {
  foreach ($files as $file) {
    if(preg_match($kiterjesztesek, $file)) {
      $kepek[] = $konyvtar.'/'.$file;
    }
  }
}
natsort($kepek);
foreach ($kepek as $kep) :
?>

<a href=$kep><img src="<?php echo htmlspecialchars($kep, ENT_QUOTES, 'UTF-8') ?>" width=160 height=120></a>

<?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:

foreach (glob("*.gif,*.jpg,*.png") as $kep) {
   echo "$kep size " . filesize($kep) . "\n";
   unlink($kep);
}
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
<?php
$konyvtar = 'Images';
$kiterjesztesek = 'jpg jpeg png gif';
$kepek = array();

$kiterjesztesek = '/\.('.
  implode('|', array_map('preg_quote', explode(' ', $kiterjesztesek))) .
  ')$/i';
// Végigmegyünk a könyvtáron, és feltöltjük a képek listáját.
if (is_dir($konyvtar) && ($files = scandir($konyvtar))) {
  foreach ($files as $file) {
    if(preg_match($kiterjesztesek, $file)) {
      $kepek[] = $konyvtar . '/' . $file;
    }
  }
}

// Ha törlés parancs volt, és a kép létezik a listánkban
if (isset($_GET['action']) && $_GET['action'] == 'delete' &&
    isset($_POST['kep']) && ($key = array_search($_POST['kep'], $kepek)) !== FALSE) {
  // Töröljük a képet, átdobjuk a felhasználót.
  unlink($kepek[$key]);
  header('Location: http://' . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF']);
  exit();
}

/**
 * Megfelelően kódolja a szöveget, 
 * hogy HTML attribútumban elhelyezhető legyen
 */
function check_plain($text) {
  return htmlspecialchars($text, ENT_QUOTES, 'UTF-8');
}

natsort($kepek);

// Kódoljuk az összes elemet
$kepek = array_map('check_plain', $kepek);
?>
<!DOCTYPE HTML>
<html lang="en-US">
<head>
  <meta charset="UTF-8">
  <title>Képek</title>
</head>
<body>
  <h1>Képek</h1>
  <ul>
<?php foreach ($kepek as $kep) : ?>
    <li>
      <form action="<?php print $_SERVER['PHP_SELF']; ?>?action=delete" method="post">
        <div>
          <a href="<?php echo $kep; ?>"><img src="<?php echo $kep; ?>" width="160" height="120" alt="" /></a>
          <input type="hidden" value="<?php echo $kep; ?>" name="kep" />
          <input type="submit" value="Törlés" />
        </div>
      </form>
    </li>
<?php endforeach; ?>
  </ul>
</body>
</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!!!!!!!