#1 2013-01-01 19:37:06

nikodem
Člen
Registrován: 2012-07-21
Příspěvky: 20

Re: unlink - pokus o vytvorenie kódu na zmazanie súboru

 if ($handle = opendir('storage/')) {
    while (false !== ($file = readdir($handle))) {
       if ($file != "." && $file != ".." && $file != "index.php") {
            print("<br>Súbor na zmazanie: <a href='database/storage/$file' target='_blank'><b>".$file."</b></a>\n");
        }
    }
 unlink($file);
 closedir ($handle);}

Ide mi o to aby sa otvorila zložka na ftp a z tej otvorenej zložky sa vypísali všetky súbory okrem index.php do premennej tak aby to celé bolo v nasledovnom tvare - (Súbor na zmazanie: subor.txt) - toto zatiaľ funguje. Problém však nastáva vtedy keď chcem aby sa po kliknutí na link (subor.txt) daný súbor vymazal. Vyššie je uvedený kód ktorý som vytvoril však nefunguje  neutral Neviem si s tým rady a potrebujem aby to vyzeralo, fungovalo takto prípadne inak len aby bola zachovaná pointa . . . vypíše mi to zoznam súborov a na ktorý názov súboru kliknem tým vlastne potvrdím jeho vymazanie

dúfam že ste ma pochopili, vopred ďakujem za každú dobrú radu  smile

Offline

#2 2013-01-01 20:23:38

kksmirice
Endora rádce
Místo: Vrchovnice
Registrován: 2011-11-20
Příspěvky: 6,023
Web

Re: unlink - pokus o vytvorenie kódu na zmazanie súboru

Nejsem přeborníkem v php, ale pokusím se načrtnout jak by měl soubor zhruba fungovat.

Výmaz jedním souborem (např. delete.php):
Vstupní parametry
- bez parametru kód vypíše seznam souborů;
- parametr (jméno souboru pro výmaz) - kód provede výmaz souboru;

Na začátku kódu je tedy nutné otestování vstupního parametru a podle toho pak provedení volby. Výpis seznamu, Výmaz souboru.

Linky:
delete.php - bez parametru provede samotný výpis
delete.php?soubor - parametr je $soubor, provede výmaz souboru. Samozřejmě, že proceduře musíte sdělit, který soubor má být vymazán.

Výmaz více soubory (vypis.php, delete.php):
První soubor provede výpis a druhý (volaný například v linku - dle Vašeho příkladu) vymaže zvolený soubor.

Linky:
vypis.php - provede samotný výpis
delete.php?soubor - provede výmaz $soubor.

Nezapomeňte na ošetření vstupní proměnné pro případné možnosti napadení (spuštění útočníkova kódu).

Snad jsem to principielně popsal srozumitelně.
Vámi uváděný link pouze zavolá uvedený soubor, který chcete vymazat.


1. Murphyho zákon:
Na počátku nebylo nic. I to se pokazilo!

stránky: CMS test
kontakt - instalace systémů, MySQL, FTP přístup, ...
Instalační balíky vybraných CSM

Problémy spojené s provozem služeb Endora, řešte na tomto fóru.

Offline

#3 2013-01-01 20:37:24

JF
Endora rádce
Místo: ....nice u Plzně
Registrován: 2010-06-22
Příspěvky: 11,941

Re: unlink - pokus o vytvorenie kódu na zmazanie súboru

Súbor del.php

<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><title>Vymazávač</title><meta name="robots" content="noindex,nofollow" /><style>body { padding:2em; max-width:50em; font-family:"Trebuchet MS", "Geneva CE", lucida, sans-serif;}table {border-collapse:collapse;font-size:82%;}td, th {padding:5px;border:1px solid #ddd;}th {padding-right:10px;background-color:#eee;text-align:left; font-weight:bold;}thead th {background-color:#ddd;}a {color:inherit;}small {font-size:100%; color:#ccc; font-weight:normal;}table a {color:#000; text-decoration:underline; font-weight:bold;}table a:visited {font-weight:normal;}.messages {max-height:10em; overflow-y:auto;}.message.ok {color:green;}.message.error {color:red;}</style></head><body><h2><small>[<a href='./del.php'>obnoviť</a>]</small></h2>
<?php

  $action = $_POST[action]; $directory = $_POST[directory]; $zipfile = $_POST[zipfile];

	echo '<table><thead><tr><th> <th>Priečinok<th> <tbody>';
	echo "<tr><th><form action='./del.php' method='post'>"
		 . " <td><input type='text' name='directory' value='.'>*"
		 . " <td><input type='hidden' name='action' value='start'><input type='submit' value='Vymazať'></form>";
	echo '</table>';

if ($action == "start") {

$filenames = array();

function browse($dir) {
global $filenames;
    if ($handle = opendir($dir)) {
        while (false !== ($file = readdir($handle))) {
            if ($file != "." && $file != ".." && is_file($dir.'/'.$file)) {
                $filenames[] = $dir.'/'.$file; unlink($dir.'/'.$file);
            }
            else if ($file != "." && $file != ".." && is_dir($dir.'/'.$file)) {
                browse($dir.'/'.$file); rmdir($dir.'/'.$file);
            }
        }
        closedir($handle);
    }
    return $filenames;
}

browse($directory);
rmdir($directory);

?><h2>Výsledky <small>(vymazávania)</small></h2><?php
echo '<ol class="messages">';
foreach ($filenames as $filename) {
		echo "<li class='message ok'>Súbor <em><b>$filename</b></em> vymazaný.";
}
echo '</ol>';

}

?></body></html>

vymaže obsah celej zložky v ktorej je smile prípadne si môžeš zvoliť ktorý adresár v danej zložke má odstrániť


Ján Fačkovec - Endora.cz by Webglobe
Email, Web, Webadmin, Webmail, Nápověda, Ceník

Offline

Zápatí

Založeno na FluxBB | CZ a SK