• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

[PHP] PHP File-Access-System?!

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
Hallo liebe Talker.

Ich möchte gerne eine Art File-Access-System bauen.
Es geht darum, dass ich schon einen PHP-Uploader geschrieben hab, der auch wunderbar funktioniert.
Ich kann also per PHP auf einer bestimmten HTML Seite (die mit einem Session basierten Login-System geschützt ist) Fotos und Musik auf meinen Server hochladen.

Ein anderes Script kümmert sich dann darum, dass automatisch ein Player mit den Dateien aus dem Verzeichnis gefüttert wird.

Nun möchte ich allerdings auch Dateien löschen.
Und das möglichst ohne Fetch oder Cyberduck oder so.
Es geht einfach darum, dass bestimmte Personen den Inhalt dieser Player bearbeiten dürfen und auf nichts weiter Zugriff haben sollen.

Also habe ich mir ein Script gefrickelt, das mir eine Dateiliste erstellt.
Nur bekomme ich schlicht und ergreifend keinen "Löschen"-Button hinter jede einzelne Datei.
Hat jemand von euch einen wunderbaren Einfall dazu?

Oder gibt es sogar fertige Lösch-Scripte, die diese Aufgaben 100%-ig erfüllen?

Hier zunächst mal mein Script:

Code:
[COLOR="red"]<?php [/COLOR]
$ordner [COLOR="blue"]= opendir[/COLOR]([COLOR="red"]'.'[/COLOR]); 
[COLOR="green"]while[/COLOR]($dateiliste [COLOR="blue"]= readdir[/COLOR] ($ordner)) 
{ 
  $datei1 [COLOR="blue"]= [COLOR="red"]'.'[/COLOR] . [COLOR="red"]"/"[/COLOR] .[/COLOR] $dateiliste; 
  [COLOR="green"]if[/COLOR]([COLOR="blue"]is_dir[/COLOR]($datei1) [COLOR="blue"]or[/COLOR] (($dateiliste[COLOR="blue"]==[/COLOR][COLOR="red"]".htaccess"[/COLOR]) [COLOR="blue"]or[/COLOR] ($dateiliste[COLOR="blue"]==[/COLOR][COLOR="red"]".htpasswd"[/COLOR]) [COLOR="blue"]or[/COLOR] ($dateiliste[COLOR="blue"]==[/COLOR][COLOR="red"]"index.php"[/COLOR]))) 
    { 
    } 
  [COLOR="green"]else[/COLOR] 
     { 
     [COLOR="blue"]echo[/COLOR] [COLOR="red"]"<a href=\"$dateiliste\">$dateiliste</a><br/>"[/COLOR]; 
     } 
} 
[COLOR="blue"]closedir[/COLOR]($ordner); 
[COLOR="red"]?>[/COLOR]


Vielen Dank für jede Hilfe.
 
Gut. So weit wAr ich scbhon. Bzw. kannte ich diesen Befehl schon, danke.
Was mir jetzt noch fehlt, ist der Button, der hinter jeder Datei steht und das Löschen beauftragt.
Am liebsten waärs mir, wenn dann ein Warnfenster aufginge um das Löschen zu bestätigen.

Kannst Du mir (oder jemand anders) dazu einen Code posten?
Oder zumindest einen Fetzen?

Vielen Dank :)
 
<input type="button" onclick="if(confirm("Wollen Sie wirklich..?")){window.location.href='delete.php?file=FILE';}else{return false;}">L&ouml;schen</input>

Sollte funtzen, habs nicht getestet.

mfg
ProCoder
 
Sollte funzen.
Allerdings weiß ich ja nicht, an welcher Stelle des Skriptes ich das einbauen soll.
Wenn ich das in
echo "<a href=\"$dateiliste\">$dateiliste</a><br/>";[/QUOZE] einbaue, bleibt das Script einfach stehen.
Ich kann also keine Input Methode da einfrickeln.

Ideen dazu?
 
$file='<input type="button" onclick="if(confirm("Wollen Sie wirklich..?")){window.location.href=\'delete.php?file='.$filename.'\';}else{return false;}">L&ouml;schen</input>';

mfg
ProCoder
 
Hmm.
Ich weiß echt immer noch nicht, an welcher Stelle des Scriptes das rein soll!!
 
Darum gehts ja nicht mal.

Ich hab hier nur mein Script gepostet und eine Frage dazu gestellt.
Mir wurde zwar die Methode genannt, mit der das funktioniert.

Allerdings konnte mir keiner sagen, an welcher Stelle meines Scriptes das rein soll.

Das wäre doch echt einfach, wenn mir das hier jemand sagt.
Dann wäre meine Frage geklärt, mir wäre geholfen und ich wäre sehr dankbar.

Ich will hier gerade nicht PHP lernen (kommt sicherlich auch mit der Zeit), sondern ich habe derzeit ein akutes Problem, das ich gerne lösen wollte.


Danke für den Link, ich schau ihn mir mal an
 
wenn du HTML könntest, dann wüsstest du das. Wenn du PHP könntest ebenfalls... ich meine es gibt ja nur ein Befehl im Skript, welches eine Ausgabe erstellt oder?
 
Ganz beiläufig kann ich HTML.
Und noch nebenbei, ja, PHP kann ich nicht gut.

Und genau deswegen gibt es Foren. Damit sich die Leute gegenseitig helfen und nicht ankommen von wegen
Du kannst es nicht? Ja dann lass es halt.

Richtig. Es gibt nur eine Stelle.
Und wenn ich es da so einfüge (wie ich es auch für logisch halte) bleibt das Skript stehen und es passiert gar nichts mehr.
Daher dachte ich, dass es bei PHP einen Kniff gibt.

Entschuldigt bitte meine Unwissenheit.
Apfeltalk scheint immer arroganter zu werden :(

Aber wenn hier noch Menschen mit Produktiven Ideen sind bzw. hier schreiben, um mir zu helfen…
Ich seid herzlich willkommen :)

Servus und schönen Tag euch ALLEN
 
Code:
[COLOR="red"]<?php [/COLOR]
$ordner [COLOR="blue"]= opendir[/COLOR]([COLOR="red"]'.'[/COLOR]); 
[COLOR="green"]while[/COLOR]($dateiliste [COLOR="blue"]= readdir[/COLOR] ($ordner)) 
{ 
  $datei1 [COLOR="blue"]= [COLOR="red"]'.'[/COLOR] . [COLOR="red"]"/"[/COLOR] .[/COLOR] $dateiliste; 
  [COLOR="green"]if[/COLOR]([COLOR="blue"]is_dir[/COLOR]($datei1) [COLOR="blue"]or[/COLOR] (($dateiliste[COLOR="blue"]==[/COLOR][COLOR="red"]".htaccess"[/COLOR]) [COLOR="blue"]or[/COLOR] ($dateiliste[COLOR="blue"]==[/COLOR][COLOR="red"]".htpasswd"[/COLOR]) [COLOR="blue"]or[/COLOR] ($dateiliste[COLOR="blue"]==[/COLOR][COLOR="red"]"index.php"[/COLOR]))) 
    { 
    } 
  [COLOR="green"]else[/COLOR] 
     { 
     [COLOR="blue"]echo[/COLOR] [COLOR="red"]'<input type="button" onclick="if(confirm("Wollen Sie wirklich..?")){window.location.href=\'delete.php?file='.$filename.'\' />'[/COLOR]; 
     } 
} 
[COLOR="blue"]closedir[/COLOR]($ordner); 
[COLOR="red"]?>[/COLOR]

Das hat nichts mit Arroganz zu tun, sondern damit, dass du es nicht kannst und wir nicht deine Arbeit übernehmen wollen. Wenn du den Code von ProCoder verstehen würdest, hättest du gemerkt, dass dieser Code nur für den Aufruf in einer Funktion ist - also totaler Schwachsinn!
 
Schade, dass das hier nicht funktioniert.
Ich hätte mich auch ends mäßig gefreut, wenn mir jemand einfach nur einen vernünftigen Link gegeben hätte.
Oder wenn mir einfach nur jemand geholfen hätte, mein Problem zu lösen.

Es soll auch keiner meine Arbeit übernehmen.
Eine Community lebt davon, dass sich die Mitglieder gegenseitig helfen und vielleicht auch etwas beibringen.
Egal welch eine Frage je im Apfeltalk gestellt wurde und noch wird.
Derjenige der Fragt, kann etwas nicht.

Ich hab mich ja auch sehr über den Code Fetzen gefreut.
Und ich lerne auch gerade Stück für Stück PHP. Aber wie soll ich das bitte machen, wenn mir keiner Fragen beantwortet bzw. mir bei Problemen hilft und mir detaillierte Antworten liefert? Ich weiß ja, dass ihr euch das selber ohne Hilfe beigebracht habt…

So, wie Du es mir jetzt geschrieben hast hatte ich es schon im Script.
Nur so funktioniert es auch nicht.

Herzlichen Dank auch.
 
und ich verstehe nicht, warum der Codefetzen bei dir nicht funktioniert. Was erwartest du davon? Dass er die Dateien löschen kann oder dass es angezeigt wird? Dieser Codefetzen ist nur für die Anzeige da. Die Löschfunktion muss natürlich noch geschrieben werden.
 
Das ist schon klar.
Also bei mir bleiben die Buttons leer und wenn ich drauf klicke, passiert nichts.
Leider.

Die Lösch-Funktion hast Du in dem Fall delete.php genannt,
diese ist ja dann dafür zuständig, eine Variable ($filename?) zu "empfangen" und die Datei im Inhalt zu löschen. Richtig?
 
Ersetz den Inhalt des echo-Teil mit dem hier:

Code:
<input type="button" onclick="if(confirm(\'Wollen Sie wirklich..?\')){window.location.href=\'delete.php?file='.$filename.'\'}" />

Das sollte funktionieren.
 
Hallo,

Hier:

Code:
<?php 
$dirname='yourDir';//dirname OHNE / am schluss!
if($_GET['del'])
{
    if(true==@unlink($dirname.$_GET['del']))
    {
        echo 'Erfolgreich gel&ouml;scht! <br />';
    }else{
        echo 'Es trat ein Fehler auf! <br />';
    }
}
$notShow=array('.htaccess','.','..');
$dir=opendir($dirname);
while($file=readdir($dir))
{
  if((false==in_array(strtolower($file),$notShow))AND(false==is_dir($dirname.'/'.$file)))
  {
      echo '<a href="'.$_SERVER['PHP_SELF'].'?del='.$file.'">"'.$file.'" L&ouml;schen<br />';
  }
}
closedir($dir);
?>

Have fun! In dem array $notShow trägste dann die Files ein die nicht angezeigt werden sollen!

Mfg
ProCoder
 
Hat leider nicht funktioniert.
Sagt immer nur, dass ein Fehler aufgetreten ist.

Die Idee von _linx_ fand ich bisher am besten.
Doch wenn ich da dann den löschen Button klicke, passiert 0.
Also die URL wird einfach nicht so gesetzt, wie's von Nöten wäre :(

Any suggestions?
 
Code:
$text = ("location.href='delete.php?file=".$dateiliste."'");
		echo ('<input type="button" value="Löschen: '.$dateiliste.' " onclick="'.$text.'"/><br>');

So geht das ganz gut.
Das einzige Problem ist, dass die Datei "delete.php" meine Anfrage nicht bearbeitet.
Also ich öffne die URL: ./delete.php?file=Foto.jpg.
Doch leider tut sich nichts.

Meine delete.php
Code:
<?php
unlink('./'.$_GET['file']);
?>


Würde mich freuen, wenn jemand den Fehler entdeckt.
Danke, liebe Grüße
– –
 
Wie wäre es mit error_reporting(E_ALL) und mal die Fehler ansehen?