Poslao: 03 Sep 2010 05:33
|
offline
- zend
- Počasni građanin
- Pridružio: 22 Okt 2009
- Poruke: 900
- Gde živiš: Pancevo
|
Imam mali problem kada izlistam fajlove iz direktorijuma.
Kako da posebno izbrisem neki dir.
E sada, kako da uradim kada se kliknem na stavku images u polje obrisi da se ona obrise. U dole navedenom primeru.
Ne koristim bazu da naglasim unapred jer je jako mala skripta tako da nema potrebe za bazom. Nadam se da me razumete o cemu govorim
Listing izgleda ovako:
----------------------------------------
Ime Fajla | Tip | Velicina | Obrisi
----------------------------------------
images | dir | 210 | Obrisi
----------------------------------------
style.css | file | 258 | Obrisi
----------------------------------------
Kod za izlistavanje mi izgleda ovako
$myDirectory = opendir(".");
// get each entry
while($entryName = readdir($myDirectory)) {
$dirArray[] = $entryName;
}
// close directory
closedir($myDirectory);
// count elements in array
$indexCount = count($dirArray);
Print ("$indexCount files<br>\n");
// sort 'em
sort($dirArray);
// print 'em
print("<TABLE border=1 cellpadding=5 width=500 cellspacing=0 class=whitelinks>\n");
print("<TR><TH>Ime Fajla</TH><th>Tip</th><th>Velicina</th><th>Obrisi</th></TR>\n");
// loop through the array of files and print them all
for($index=0; $index < $indexCount; $index++) {
if (substr("$dirArray[$index]", 0, 1) != "."){ // don't list hidden files
print("<TR><TD><a href=\"$dirArray[$index]\">$dirArray[$index]</a></td>");
print("<td>");
print(filetype($dirArray[$index]));
print("</td>");
print("<td>");
print(filesize($dirArray[$index]));
print("</td>");
print("<td>");
print "OVDE TREBA DA POZOVEM BRISANJE";
print("</td>");
print("</TR>\n");
}
}
print("</TABLE>\n");
pokusavao sam sa funkcijama
rmdir
unlink
Ali i dalje nisam siguran kako da ih upotrebim u ovoj scripti
Unapred Hvala!!!
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 03 Sep 2010 08:51
|
offline
- |_MeD_|
- Zaslužni građanin
- Pridružio: 02 Okt 2005
- Poruke: 546
|
function delete_directory($dirname) {
if (is_dir($dirname))
$dir_handle = opendir($dirname);
if (!$dir_handle)
return false;
while($file = readdir($dir_handle)) {
if ($file != "." && $file != "..") {
if (!is_dir($dirname."/".$file))
unlink($dirname."/".$file);
else
delete_directory($dirname.'/'.$file);
}
}
closedir($dir_handle);
rmdir($dirname);
return true;
}
Ovo sam izguglao na brzinu, trebalo bi da radi posao.
|
|
|
|
Poslao: 03 Sep 2010 15:04
|
offline
- zend
- Počasni građanin
- Pridružio: 22 Okt 2009
- Poruke: 900
- Gde živiš: Pancevo
|
I ja sam to izgooglao pa mi je ceo dir obrisalo i index.php. Ne radi mi to posao treba brise stavku koju ja oznacim za brisanje....
|
|
|
|
Poslao: 03 Sep 2010 16:15
|
offline
- |_MeD_|
- Zaslužni građanin
- Pridružio: 02 Okt 2005
- Poruke: 546
|
Funkcija brise onaj direktorijum koji jos prosledis.
A da bi direktorijum mogao da se obrise mora prvo da se izprazni.
|
|
|
|
Poslao: 03 Sep 2010 16:48
|
offline
- zend
- Počasni građanin
- Pridružio: 22 Okt 2009
- Poruke: 900
- Gde živiš: Pancevo
|
Ok reci mi onda kako ja sada da je pozovem u ovome?
Da na klik obrisi on obrise odabranu stavku.
print "<a href = " " > Obrisi </a>
Probao sam ovako
if (isset($_GET['del'])) $dirname=$_GET['del'];
else $dirname='$dirArray[$index]';
switch($dirname){
case 'delite' :
delete_directory($dirname);
break;
default :
echo 'no run';
}
Vraca mi
Notice: Undefined variable: dir_handle in C:\wamp\www\Ivan\New Folder\admin.php on line 159
|
|
|
|
Poslao: 17 Sep 2010 21:25
|
offline
- eevan79
- Građanin
- Pridružio: 21 Apr 2007
- Poruke: 98
|
Ako sam shvatio tačno šta ti treba, onda to možeš uraditi pomoću javascript gde označiš (selektuješ) fajlove za brisanje uz mogućnost da selektuješ sve odjednom. To bi ovako izgledalo:
<script language="JavaScript">
function toggle(source) {
checkboxes = document.getElementsByName('checkbox[]');
for(var i in checkboxes)
checkboxes[i].checked = source.checked;
}
</script>
<form name ='myform' action='' method='post'>
<input type='checkbox' onClick='toggle(this)' /> // Ovaj input je za select all
Zatim u petlji izlistaš ono što ti je potrebno, a pre imena staviš checkbox:
<input type="checkbox" name="checkbox[]" value="' . $dirArray[$index] . '">
Tamo gde je $dirArray[$index], možeš staviti ime fajla (sa npr. putanjom) kako bi lakše brisao selektovane fajlove (unlink).
U tvom slučaju to bi otprilike ovako izgledalo:
print("<TR><TD><input type=\"checkbox\" name=\"checkbox[]\" value=\"' . $dirArray[$index] . '\"><a href=\"$dirArray[$index]\">$dirArray[$index]</a></td>"); ... itd itd...
Sledi submit button:
<input class="inputButton" type="submit" name="Submit" value="Briši"></form>
Zatim ispod ide kod za brisanje označenih fajlova:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (isset($_POST['Submit'])) {
for ($i = 0; $i < count($_POST['checkbox']); $i++) {
echo "<br />value $i = " . $_POST['checkbox'][$i]; //Ovo koristi za debugovanje kako bi video sta je selektovano
unlink('PUTANJA_DO_FAJLA/$_POST['checkbox'][$i]'); //Ako si kao input value stavio ime fajla
}
}
}
|
|
|
|
Poslao: 18 Sep 2010 08:40
|
offline
- zend
- Počasni građanin
- Pridružio: 22 Okt 2009
- Poruke: 900
- Gde živiš: Pancevo
|
@eevan79
Hvala na odgovoru, pokusacu tvoj primer!!!
|
|
|
|
Poslao: 19 Sep 2010 03:12
|
offline
- Blood
- Ugledni građanin
- Pridružio: 26 Jul 2003
- Poruke: 384
- Gde živiš: Beograd
|
eevan79 ::
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (isset($_POST['Submit'])) {
for ($i = 0; $i < count($_POST['checkbox']); $i++) {
echo "<br />value $i = " . $_POST['checkbox'][$i]; //Ovo koristi za debugovanje kako bi video sta je selektovano
unlink('PUTANJA_DO_FAJLA/$_POST['checkbox'][$i]'); //Ako si kao input value stavio ime fajla
}
}
}
A joj.. ovo je tako low security da nemas pojma.. ako radis nesto za vezbu sam.. na lokanom kompu kome spolji svet nema pristup, onda ok..
U svakom slucaju.. razmisli kako bi mogao da poboljsas sigurnost ovog koda. Koristice ti!.
p0z!
|
|
|
|
Poslao: 20 Sep 2010 02:10
|
offline
- eevan79
- Građanin
- Pridružio: 21 Apr 2007
- Poruke: 98
|
Bože...
Zašto da razmišljam da poboljšam sigurnost? Pa kod nije za mene. Ja uvek sve filtriram preko neke funkcije ili klase ($_POST, $_GET, $_SESSION...).
Kod sam napisao kao smernicu kako da uradi ovo.
Ako autor ne zna da izfiltrira ovaj kod (što je veoma jednostavno), onda mu sigurno i ostatak skripte nije siguran.
U svakom slučaju, zašto ti nisi napisao nešto korisno kako se ovo može odraditi? Ovo što si napisao zna svaki početnik.
Kako donosite zaključke to je strašno, realno.
Pozz.
|
|
|
|