PHP - Dateien anzeigen + löschfunktion
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
all
anpassen
anzeigen
button
byte
check
code
datei
datum
eintrag
fehlermeldung
file
header
message
ordner
re
test
url
variable ordner
verzeichnis
-
Href="/tag/all">allo..
ich habe folgendes Script:
echo "<br><h2>Deine Dateien:</h2><br><br>"; date_default_timezone_set('Europe/Berlin'); /* notwendig ab PHP 5.3, sonst Warnung */ $verzeichnisname = "usr/{$_SESSION['Nickname']}"; $verzeichnis = opendir($verzeichnisname); while($eintrag = readdir ($verzeichnis)) { $test = $verzeichnisname . "/" . $eintrag; if(is_dir($test) or (($eintrag==".htaccess") or ($eintrag=="verboten.html"))) { /* echo "<!-- $eintrag -->\n"; */ } else { echo "<tr>\n<td align=\"left\"><a href=\"usr/{$_SESSION['Nickname']}/$eintrag\">$eintrag</a></td>\n"; echo "<td align=\"right\">" . filesize($test) . " Byte</td>\n"; echo "<td align=\"left\">" . strftime("%a, %d.%b.%y, %H:%M", filemtime($test)) . "</td>\n<br>"; } } closedir($verzeichnis);
ich möchte da noch eine Löschfunktion hinzufügen.. Dass quasi neben der Datei noch ein kleiner Löschen bUtton ist, mit dem man die Datei löschen kann..
Ich bekomm das aber iwie nicht richtig hin.. Kann mir jmnd von euch helfen? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
(niedliche stacheln ;)
also ich kann mir das in etwa so vorstellen:
wenn auch so etwas funktioniert, würde ich das aber doch nicht tun!<?php session_start(); $_SESSION['Nickname'] = 'test'; // DAS IST NUR FÜR'S TESTEN (subdirectory-name!) if(!empty($_POST['delete'])) { $res = "<strong>hier kannst die datei löschen:</strong> ./{$_SESSION['Nickname']}/{$_POST['delete']}"; // proggen musst du schon selber ;) } else { $res = <<< EOT <h2>Deine Dateien:</h2> <form action"" method="post"> EOT; date_default_timezone_set('Europe/Berlin'); $folder = "./{$_SESSION['Nickname']}"; $ls = glob($folder.'/*'); foreach($ls as $file) { $bfile = basename($file); $res .= " <a href=\"$file\">$bfile</a> <input type=\"submit\" name=\"delete\" value=\"$bfile\" /><br />\n"; } $res .= "</form>"; } exit(''.print_r($res, true));
was hast du eigentlich vor?
Beitrag zuletzt geändert: 19.1.2012 3:54:54 von hemiolos -
hmm.. funtzt nicht ganz..
Hab es jetzt mal so Probiert:
<?php if(isset($_SESSION['UserID'])){ include("upload.php"); echo "<br><h2>Deine Dateien:</h2><br><br>"; date_default_timezone_set('Europe/Berlin'); if (isset ($_POST['eintrag'])) { unlink( "usr/{$_SESSION['Nickname']}/{$_POST['eintrag']}" ); echo "{$_POST['eintrag']} wurde gelöscht"; } else { $verzeichnisname = "usr/{$_SESSION['Nickname']}"; $verzeichnis = opendir($verzeichnisname); while($eintrag = readdir ($verzeichnis)) { $test = $verzeichnisname . "/" . $eintrag; if(is_dir($test) or (($eintrag==".htaccess") or ($eintrag=="verboten.html"))) { /* echo "<!-- $eintrag -->\n"; */ } else { echo "<tr>\n<td align=\"left\"><a href=\"usr/{$_SESSION['Nickname']}/$eintrag\">$eintrag</a></td> \n"; echo "<td align=\"right\">" . filesize($test) . " Byte</td>\n"; echo "<td align=\"left\">" . strftime("%a, %d.%b.%y, %H:%M", filemtime($test)) . "</td> <form action=\"index.php\" method=\"post\"> <input type=\"hidden\" name=\"eintrag\" value=\"$eintrag\"> <input type=\"submit\" name=\"doit\" value=\"löschen\"> \n<br>"; } } } closedir($verzeichnis); } else{ ?> Hallo.. <br> Leider bist du noch nicht eingeloggt.<br> Bitte logge dich ein, um deine Dateien zu sehen.. <?php } ?>
Jetzt wird nach dem druck auf den löchen BUtton zwar gelöscht, aber leider immer die Letzte Datei in der liste, und nicht die ausgewähle..
kann mir einer sagen was ich falsch mache?
EDIT:
LOOOL.. Fehler gefunden:
liegt am fehlenden </form> in der Schleife ...
bin wohl schon zulange wach..
Da hängt man stundenlan an so nem script, und dann nur, wel ich zu blöd war, einen simplen html tag zu schliessen..
Ich könnt im Boden versinken^^
Vielen Dank für eure Mühen..
Beitrag zuletzt geändert: 19.1.2012 12:14:00 von paddy-herrmy -
Hallo
zum Thema: PHP - Dateien anzeigen + löschfunktion
hier mal ein Script zum Löschen von allen Dateien und ganzen Ordnern
... löscht innerhalb des Verzeichnis, in dem das Script liegt.
eher zur Kontrolle der Dateien auf dem Webspace, also nix für die User :)
oder doch ?
.... die Variable $ordner = '.'; als User-Verzeichnis anpassen
und die Zugangskontrolle (Login) entsprechend ändern
hier die Datei: delete_all.php zum anzeigen und löschen von Dateien und Ordner
<?php // ------------------------------------------------------------ // ----------------- DELETE files and folders ----------------- // ------------------------------------------------------------ $password = 'admin'; // --- bitte anpassen / aendern !!! // -------------------------------------------- $secsalt = 'c4RtG81Qwi'; $ordner = '.'; $message = 'Bitte eine Datei oder ein Verzeichnis auswählen:'; // -------------------------------------------- header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); $runfile = basename($_SERVER['SCRIPT_NAME']); $run_dir = dirname($_SERVER['SCRIPT_NAME']); // -------------------------------------------- function deldir($dir) { $dp = @opendir($dir); while($file = @readdir($dp)) { $name = $dir . '/' . $file; if ($file != '.' && $file != '..') { if (is_dir($name)) { @deldir ($name); } else { @unlink($name); } } } @closedir($dp); @rmdir($dir); $message = 'Das Verzeichnis <strong>'.$dir.'</strong> wurde entfernt.'; return $message; } // -------------------------------------------- $ypw = md5($password.$secsalt); $zpw = 'x'; if (!empty($_GET['pw'])) { $zpw = md5($_GET['pw'].$secsalt); } if (!empty($_GET['xpw'])) { $zpw = $_GET['xpw']; } // -------------------------------------------- ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="pragma" content="no-cache"> <title>DELETE ALL</title> <style type="text/css"> <!-- body { font-family: Verdana, Arial; font-size: 12px; color: #000000; background-color: #FFFFFF; } --> </style> </head> <body> <?php // -------------------------------------------- if ($zpw == $ypw) { if (!empty($_GET['delete'])) { // ------------------------------ $directory = trim($_GET[delete]); if (is_file($directory) === TRUE) { @unlink ($directory); $message = 'Die Datei <strong>'.$directory.'</strong> wurde entfernt.'; } else { $message = deldir ($directory); } // ------------------------------ } // -------------------------------------------- echo "<div style=\"text-align:center;\">\r\n"; echo "<h1>DELETE ALL</h1>\r\n"; echo "<p> --- <a href=\"".$runfile."?&xpw=".$zpw."\">HOME</a> --- <a href=\"".$runfile."?&xpw=x\">LOGOUT</a> --- </p>\r\n"; echo "<p><span style=\"padding:4px; background:#DEDEDE;\">".$run_dir."/</span></p>\r\n"; echo "<p>".$message."</p>\r\n"; echo "</div>\r\n"; echo "<hr />\r\n"; echo "<div style=\"text-align:center;\">\r\n"; echo "<br />\r\n"; echo "<table width=\"700\" border=\"0\" cellspacing=\"2\" cellpadding=\"2\" align=\"center\">\r\n"; echo "<tr bgcolor=\"#CCCCCC\" align=\"center\" valign=\"top\">\r\n"; echo "<td width=\"5%\">NR</td>\r\n"; echo "<td width=\"10%\">TYP</td>\r\n"; echo "<td width=\"55%\">NAME</td>\r\n"; echo "<td width=\"15%\">VIEW</td>\r\n"; echo "<td width=\"15%\">DELETE</td>\r\n"; echo "</tr>\r\n"; $handle = opendir($ordner); $i=1; while ($file = readdir ($handle)) { if($file != '.' && $file != '..' && $file != $runfile) { if(is_dir($ordner.'/'.$file)) { $deltyp = 'Ordner'; $delnam = '<strong>'.$ordner.'/'.$file.'/</strong>'; } else { $deltyp = 'Datei'; $delnam = ''.$ordner.'/'.$file.''; } $viewit = '<a href="'.$ordner.'/'.$file.'" target="_blank">(ansehen)</a>'; $delink = '<a href="'.$runfile.'?delete='.$ordner.'/'.$file.'&xpw='.$zpw.'">[entfernen]</a>'; if ( $i%2 == 0) { $tabbgcolor = '#DDDDDD'; } else { $tabbgcolor = '#EEEEEE'; } echo "<tr bgcolor=\"".$tabbgcolor."\" align=\"left\" valign=\"top\">\r\n"; echo "<td width=\"5%\"> ".$i."</td>\r\n"; echo "<td width=\"10%\"> ".$deltyp."</td>\r\n"; echo "<td width=\"55%\"> ".$delnam." </td>\r\n"; echo "<td width=\"15%\"> ".$viewit."</td>\r\n"; echo "<td width=\"15%\"> ".$delink."</td>\r\n"; echo "</tr>\r\n"; $i++; } } closedir($handle); echo "</table>\r\n"; echo "<br />\r\n"; echo "<br />\r\n"; echo "</div>\r\n"; // -------------------------------------------- } else { echo "<br />\r\n"; echo "<form name=\"form1\" method=\"get\" action=\"".$runfile."\">\r\n"; echo "Passwort: <input type=\"password\" name=\"pw\" size=\"22\" maxlength=\"100\" />\r\n"; echo "<input type=\"submit\" name=\"login\" value=\"OK\" />\r\n"; echo "</form>\r\n"; echo "<br />\r\n"; } // -------------------------------------------- echo "<br />\r\n"; echo "<br />\r\n"; echo "<br />\r\n"; // ---------------------------------------------------- ?> </body> </html>
ok, das kann man natürlich auch mit SESSIONs machen
und noch viel mehr rein bauen, wie Datei-Datum, Sortierung nach Name/Datum, etc.
aber so ist es auch schon ganz brauchbar, finde ich
-
paddy-herrmy schrieb:
wirklich aussagekräftig ;) was funzt nich ganz? (ganz!? jein gibt es nur in österreich) fehlermeldung ... ?
hmm.. funtzt nicht ganz.. -
hemiolos schrieb:
wirklich aussagekräftig ;) was funzt nich ganz? (ganz!? jein gibt es nur in österreich) fehlermeldung ... ?
Sry, ich saß da gester über 12 Stunden dran^^ Ich weiss jetzt auch nichtmehr, was da jetzt nicht gefuntzt hat^^
Ich danke dir trotzdem für deine Hilfe..
So Wie ich es Jetzt habe Funtzt es auf jeden fall.. und.. ja, ich weiss, dass das alles andere als sicher ist^^
Habe jetzt auch noch eine Grössenermittlung eingebaut:
$grundgroesse = filesize($test); //Grösse ermitteln if ($grundgroesse<1024){ $dateigroese = (filesize($test))." Byte"; } if ($grundgroesse>1024){ $dateigroese = number_format(filesize($test)/1024)." KB"; } if ($grundgroesse>1024*1024){ $dateigroese = number_format(filesize($test)/1024/1024)." MB"; } if ($grundgroesse>1024*1024*1024){ $dateigroese = number_format(filesize($test)/1024/1024/1024)." GB"; }
Und eine Dateinamen-kürzung:
$filename = basename($test); $filename_zeichenanzahl = strlen($filename); if ($filename_zeichenanzahl>60){ $filename_kurz = substr("$filename", -55); rename("$test", "usr/{$_SESSION['Nickname']}/...$filename_kurz"); }
^^
LG Paddy
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage