1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

[PHP] PHP File-Access-System?!

Dieses Thema im Forum "PHP & Co." wurde erstellt von Mini-Leopard, 25.03.10.

  1. Mini-Leopard

    Mini-Leopard Rhode Island Greening

    Dabei seit:
    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.
     
  2. ProCoder

    ProCoder Granny Smith

    Dabei seit:
    24.03.10
    Beiträge:
    12
  3. Mini-Leopard

    Mini-Leopard Rhode Island Greening

    Dabei seit:
    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 :)
     
  4. ProCoder

    ProCoder Granny Smith

    Dabei seit:
    24.03.10
    Beiträge:
    12
    Sollte funtzen, habs nicht getestet.

    mfg
    ProCoder
     
  5. Mini-Leopard

    Mini-Leopard Rhode Island Greening

    Dabei seit:
    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
     
  6. ProCoder

    ProCoder Granny Smith

    Dabei seit:
    24.03.10
    Beiträge:
    12
    mfg
    ProCoder
     
  7. Mini-Leopard

    Mini-Leopard Rhode Island Greening

    Dabei seit:
    20.03.08
    Beiträge:
    476
    Hmm.
    Ich weiß echt immer noch nicht, an welcher Stelle des Scriptes das rein soll!!
     
  8. _linx_

    _linx_ Kleiner Weinapfel

    Dabei seit:
    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.
     
  9. Mini-Leopard

    Mini-Leopard Rhode Island Greening

    Dabei seit:
    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
     
  10. karolherbst

    karolherbst Danziger Kant

    Dabei seit:
    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?
     
  11. Mini-Leopard

    Mini-Leopard Rhode Island Greening

    Dabei seit:
    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
    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
     
  12. _linx_

    _linx_ Kleiner Weinapfel

    Dabei seit:
    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!
     
  13. Mini-Leopard

    Mini-Leopard Rhode Island Greening

    Dabei seit:
    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.
     
  14. karolherbst

    karolherbst Danziger Kant

    Dabei seit:
    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.
     
  15. Mini-Leopard

    Mini-Leopard Rhode Island Greening

    Dabei seit:
    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?
     
  16. _linx_

    _linx_ Kleiner Weinapfel

    Dabei seit:
    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.
     
  17. ProCoder

    ProCoder Granny Smith

    Dabei seit:
    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
     
  18. Mini-Leopard

    Mini-Leopard Rhode Island Greening

    Dabei seit:
    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?
     
  19. Mini-Leopard

    Mini-Leopard Rhode Island Greening

    Dabei seit:
    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
    – –
     
  20. _linx_

    _linx_ Kleiner Weinapfel

    Dabei seit:
    04.01.09
    Beiträge:
    1.125
    Wie wäre es mit error_reporting(E_ALL) und mal die Fehler ansehen?
     

Diese Seite empfehlen