Nejste přihlášeni
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 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
Offline
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
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 prípadne si môžeš zvoliť ktorý adresár v danej zložke má odstrániť
Offline