ugrás a tartalomhoz

Hivatkozásra kattintva töröljön egy fájlt

erkman · 2007. Május. 15. (K), 20.28
sziasztok

tudna valaki aki okosabb nálam segíteni egy olyan kérdésben, hogy hogyan tudom azt beállítani, hogy tényleg egy hivatkozásra töröljön nekem egy fájlt. Ime a félkész dolog, lehet ugy ahogy van rossz, de nekem nem jön össsze:
<?php
$dl = "http://valami.hu/fajlok";

$absolute_path = "fajlok/";

$dir = opendir($absolute_path);

while($file = readdir($dir)) {

if (($file != "..") and ($file != ".")) {

$myFile = "$file";

$read .= "<a href='$dl/$file'>$file<br>";
$torles .= "<a href='$del'>Törlés: $file<br>";
$fh = fopen($myFile, 'w') or die("nem lehet megnyitni");
fclose($fh);
$del = unlink('$dl/$file');

}

}

$list .= "</table>";

echo $read;
echo $torles;
?>
a lényeg az lenne, hogy ahogy megjeleniti a fájlt és mellete vagy alatta az legyen, hogy törölni is lehessen egy hivatkozással. Ilyen fájl kezelő rendszer gagyi (szöveges) változata.
A segítséget köszönöm!:)
 
1

Háteznemjó

janoszen · 2007. Május. 15. (K), 22.03
Hát ez nem igazán jó. Mondd, amikor ezt a kódot írtad, akkor mi volt a koncepció?

Nagyon fapadosan így nézne ki:
<?php
 if (isset($_POST['del']))
 {
  if (unlink(dirname(__FILE__) . "/fileok/" . basename($_POST['del'])))
  {
   echo("<p>Jól kitöröltem!</p>");
  } else {
   echo("<p>Ez nem jött össze.</p>");
  }
 }

 echo("<form action=\"" . $_SERVER['REQUEST_URI'] . "\" method=\"post\">");
 echo("<label for=\"del\">Törlendő fájl</label>");
 echo("<select id=\"del\" name=\"del\">");

 if ($dir = opendir(dirname(__FILE__) . "/fileok")
 {
  while($file = readdir($dir))
  {
   if (($file != ".") && ($file != ".."))
   {
    echo("<option>" . $file . "</option>");
   }
  }
 }

 echo("</select>");
 echo("<input type=\"submit\" value=\"OK\" />");
 echo("</form>");
?>
Legközelebb tessék elolvasni a doksit, mert úgy fölnyomják az oldaladat mint a huzat. Ja, és természetesen nem garantált, hogy a fenti kód jó, fejből írtam de nagyjából látod a lényeget.
2

nem bizti segit...

reptile27 · 2007. Május. 15. (K), 22.30
<?php

$dl = "http://valami.hu/fajlok";
$absolute_path = "fajlok/";
$dir = opendir($absolute_path);

if ($_REQUEST[file]){
$del = unlink('$dl/$file');
}

while($file = readdir($dir)) {

if (($file != "..") and ($file != ".")) {

$myFile = $file;
$read .= "<a href='$dl/$file'>$file<br>";
$torles .= "<a href='$_SERVER['PHP_SELF']?file=$file'>Törlés: $file<br>";
$fh = fopen($myFile, 'w') or die("nem lehet megnyitni");
fclose($fh);
}

}

$list .= "</table>";


echo $read;
echo $torles;

?>
3

Nem jó

janoszen · 2007. Május. 16. (Sze), 00.24
Nem biztos, hogy ez a jó megoldás, mert egyrészt ha ráböksz a törlésre már törölte is, nem kell még megnyomnod egy OK gombot másrészt így lehetséges olyan linket csinálni/küldeni, amire ha ráböksz, akkor töröl a szerveredről.
4

re: Nem jó...

reptile27 · 2007. Május. 16. (Sze), 01.54
Dehogy nem jó az... :) a srác valószínüleg nem egy szimpla oldalra rakja ki
ezt a file törlősdit, feltételezem le van védve, szal. nem bogarászol te onnan semmit! LoL Ezt most nem kötekedés képpen írtam, úgyhogy ne vedd magadra, látom hogy vágod a témát. Amúgy meg a hivatkozásra kérdezett rá nem pedig egy ilyen perfekt megoldásra.

Írj nekem légyszi olyan linket amivel törölni tudsz a szerverről! Kiváncsi vok. hogy oldanád meg. Mármint amit az áltlam leírt kódot lenne hivatott kicslezni. (Ez télleg csak kiváncsiság és nem kötekedés!)

Remélem nincs hari! :)
5

lolz

Gal Kristof · 2007. Május. 16. (Sze), 13.14
LOLz vagy.
8

kedves LOL boy

virág · 2007. Május. 17. (Cs), 08.31
ez milyen hozzászólás? nagyon értékes és vitaindító, remélem még sok ilyen színvonalas megnyilvánulásod lesz...
11

köszi

Gal Kristof · 2007. Május. 17. (Cs), 18.57
én is azt remélem virágdoktor!
6

Kicselezés

janoszen · 2007. Május. 16. (Sze), 15.33
Tfh, meg van csinálva a dolog úgy, ahogy Te javasoltad. Akkor csinálok egy linket és egy kis szerencsével rá fog kattintani... vagy JavaScripttel megcsinálom hogy rákattintódjon... mivel be van lépve az admin felületre, ezért simán kérdés nélkül törölni a fájlt.

Sőt, egy fokkal tovább viszem a dolgot, elküldöm neki e-mail-ben a HTML formázott levelet, amiben belinkelem az előbbit és olyan szöveget írok hozzá, hogy elhigyje. Nem is olyan nehéz, főleg hogy teljesen nyilvánvaló változót választottál a file megadására.

Összegezve, nem hiszem, hogy Te böngészés közben folyamatosan azt nézed, hova megy az éppen megbökni készült link. Ha már GET-es megoldászt választasz, akkor minimum egy megerősítés. De egyébként az első hozzászólásban leírtam, hogy kellene megcsinálni.
7

megerősítés mindenképpen

virág · 2007. Május. 17. (Cs), 08.29
szerintem reptile27 arra gondolt, hogy a felhasználó ennek a funkciónak a használata előtt már átesett egy megfelelő erősségű beléptető rendszeren, kapott megfelelő szintű jogosultságokat és a mint írja a szerver is megfelelően le van védve. + a srác aki kérdezett, kizárólag a törlésre volt kíváncsi.

abban viszont igazad van, hogy megerősítésre mindenképpen szükség van, egy fájlt nem lehet csak úgy kérdés nélkül törölni. nem bízunk a felhasználóban...!
9

Nem csak a felhasználóban nem

janoszen · 2007. Május. 17. (Cs), 14.12
én még magamban sem bízom, véletlenül mellékattintok aztán joccakát a fájlomnak? Az nem jó ötlet...
10

köszönöm

erkman · 2007. Május. 17. (Cs), 16.29
Hu, igen, egy beléptető rendszer egy ilyen valami védelmet nyujt:
header('WWW-Authenticate: Basic realm="magánoldal."');

header('HTTP/1.0 401 Unauthorized');

Bár nem értek hozzá annyira, de szerintem ez azé eléggé biztonságos, ha valaki ezt megkerüli, akkor már gonoszabb gondolatai lehetnek sima fájltörlésnél...
Kb 3-4 haveromnak gyártanám igy, és csak egy bizonyos mappa tartalmát láthatják, nos így nagy kárt szerintem nem tehetnek.

De köszönöm a válaszokat, ok gomb nem nagyon kell, ha rákattint valaki hogy törölje, akkor igencsak megkülönböztethető a két hivatkozás majd, és ha olvasni nem győz valaki, akkor lehet akár több OK gomb is ott.

Viszont kiprobáltam mindkét verziót, de akkor se mükszik egyik se. Akkor mi lehet a gixer? mert eredményül egy nagy üres oldal jön be. Én nem értek annyira phphez mint ti. Ez lett volna az első projektem magamtól, de hát bebuktam. Olvastam doksit, bár konkrét jó dokumentációt nem láttam sehol, bocsi, vagy tudtok jot? akár könyvet ilyesmit?
12

Error reporting

janoszen · 2007. Május. 17. (Cs), 21.22
Az lesz, hogy ki van kapcsolva az error_reporting és valahol gépelési hibát vétettél, ami ahhoz vezet, hogy kapsz egy nagy fehér oldalt. :)