• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> 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.
 

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
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 :)
 

ProCoder

Granny Smith
Registriert
24.03.10
Beiträge
12
<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
 

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
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?
 

ProCoder

Granny Smith
Registriert
24.03.10
Beiträge
12
$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
 

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
Hmm.
Ich weiß echt immer noch nicht, an welcher Stelle des Scriptes das rein soll!!
 

_linx_

Kleiner Weinapfel
Registriert
04.01.09
Beiträge
1.125
Fang doch mal mit der Basis an: http://tut.php-q.net

Wenn du nicht mal das schaffst, ist so ein System für dich garantiert zu viel.
 

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
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
 

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
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?
 

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
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
 

_linx_

Kleiner Weinapfel
Registriert
04.01.09
Beiträge
1.125
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!
 

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
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.
 

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
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.
 

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
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?
 

_linx_

Kleiner Weinapfel
Registriert
04.01.09
Beiträge
1.125
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.
 

ProCoder

Granny Smith
Registriert
24.03.10
Beiträge
12
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
 

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
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?
 

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
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
– –
 

_linx_

Kleiner Weinapfel
Registriert
04.01.09
Beiträge
1.125
Wie wäre es mit error_reporting(E_ALL) und mal die Fehler ansehen?