php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.12.2008, 14:04  
Benutzer
 
Registriert seit: 24.09.2008
Beiträge: 52
frank-ae befindet sich auf einem aufstrebenden Ast
frank-ae eine Nachricht über Yahoo! schicken frank-ae eine Nachricht über Skype™ schicken
Standard [Erledigt] Rekursives Löschen macht Rundumschlag

Ich wünsche Euch einen frohen 4.Advent,

Zur Einleitung, ich arbeite an einem Projekt und erstelle mir gerade ein kleines CMS.
Ein User kann sich anmelden -> nach erfolgreicher Anmeldung hat dieser User die Möglichkeit sich im Backend eine Seite zu erstellen.
Ich nenne so eine Seite zur verdeutlichung hier mal "TEST".

Bei der Erstellung der Seite wird im Root-Verzeichnis ein Ordner mit dem Namen "TEST" erstellt, incl. aller benötigten Dateien und Ordner wie zum Beispiel den benötigten Templateordner, CSS-Ordner usw.

Weiterhin wird ein Ordner "TEST" im Ordner "images" und "file" erstellt,
/images/TEST
/file/TEST.

Das CMS bietet momentan die bekanntesten Funktionen, wie Gästebuch, Bilder und Dateiupload, Bildergalerie, Kontaktformular, News, Artikel und Kategorien...

Nun soll der User auch die Möglichkeit haben, sich vollständig ab zu melden und seine Seite zu löschen, wenn er das tut, soll im Root-Verzeichnis der komplette Ordner "TEST" sowie die Ordner "TEST" unter "images" und "file" gelöscht werden.

Zur Identifizierung des Benutzers und dessen Seite nutze ich Sessions, in der $_SESSION['mandant'] steht "TEST".
Ich habe mir dazu folgende Klasse geschrieben:
PHP-Code:
<?php
class DELETESITE{
    private 
$obj_smarty     null;
    private 
$obj_db         null;
    
    public function 
__construct($obj_db$obj_smarty)
    {
        
$this->obj_db         $obj_db;
        
$this->obj_smarty     $obj_smarty;
    }
    
      public function 
removeRekursiv($dir)
      { 
        
$dp opendir($dir); 

        while(
$file readdir($dp))
        { 
              
$name $dir "/" $file;

              if (
$file != "." && $file != "..")
              {
                if (
is_dir($name))
                      
$this->removeRekursiv ($name);
                else
                      
unlink($name);
              }

        } 

        
closedir($dp);

        
rmdir($dir); 
      }

      public function 
deleteSite()
      {
          
$site         $_SERVER['DOCUMENT_ROOT']."/".$_SESSION['mandant'];
          
$file         $_SERVER['DOCUMENT_ROOT']."/file/".$_SESSION['mandant'];
          
$picture     $_SERVER['DOCUMENT_ROOT']."/images/".$_SESSION['mandant'];
          
          
$this->removeRekursiv($file);
          
$this->removeRekursiv($picture);
          
$this->removeRekursiv($site);
          
          
$sql_site  "DELETE FROM ma_site ";
          
$sql_site .= "WHERE site_name = '".$_SESSION['mandant']."' ";
          
          
$sql_imgcat  "DELETE FROM ma_img_cat ";
          
$sql_imgcat .= "WHERE site = '".$_SESSION['mandant']."' ";
          
          
$sql_img  "DELETE FROM ma_img ";
          
$sql_img .= "WHERE site = '".$_SESSION['mandant']."' ";
          
          
$sql_filecat  "DELETE FROM ma_file_cat ";
          
$sql_filecat .= "WHERE site = '".$_SESSION['mandant']."' ";
          
          
$sql_file  "DELETE FROM ma_file ";
          
$sql_file .= "WHERE site = '".$_SESSION['mandant']."' ";
          
          
$sql_user  "DELETE FROM user ";
          
$sql_user .= "WHERE site = '".$_SESSION['mandant']."' ";
          
          
$this->obj_db->query($sql_site);
          
$this->obj_db->query($sql_imgcat);
          
$this->obj_db->query($sql_img);
          
$this->obj_db->query($sql_filecat);
          
$this->obj_db->query($sql_file);
          
$this->obj_db->query($sql_user);
          
          
         
$user "****";
        
$pass "****";
        
$con "****";
        
$conn_id ftp_connect($con);        
        
ftp_login($conn_id$user$pass);
        
ftp_rmdir($conn_id$_SESSION['mandant']);
        
ftp_close($conn_id);
          
        unset (
$_SESSION['mandant']);
        unset (
$_SESSION['Admin']);
        
$_SESSION['final'] = "<h2>Deine Seite und Deine Daten wurden gelöscht.</h2>";
        
Header("Location: ".$_SERVER['HTTP_REFERER']);
         
      }
    
      
    public function 
__destruct()
    {
        
    }
}
?>
Dieses Löschen macht auf meinem Server jedoch einen Rundumschlag und löscht alles was zu löschen geht, es vergreift sich Quasi auch an den anderen Seiten, löscht deren Inhalt, macht die Ordner "images" und "file" komplett leer und vergreift sich auch an meinem Backend.
== suboptimal,

Könnte mir bitte jemand sagen was ich übersehen habe, wie ich es besser oder anders, vor allem richtig machen kann?

Vielen Dank
Frank-ae
__________________
Mein Projekt: www.my-matrix.de

Geändert von frank-ae (21.12.2008 um 14:20 Uhr). Grund: Rechteschreibefehler
frank-ae ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 21.12.2008, 15:13  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Dann ist es wohl Zeit für einen guten alten printf/echo-Debugger
PHP-Code:
public function removeRekursiv($dir)
{
  echo 
'<fieldset><legend>'htmlentities($dir), '</legend>';
  
$dp opendir($dir);

  while(
$file readdir($dp))
  {
    
$name $dir "/" $file;

    if (
$file != "." && $file != "..")
    {
      if (
is_dir($name)) {
        
$this->removeRekursiv($name);
      }
      else
      {
        echo 
"unlink($name);<br />\n";
      }
    }

  }

  
closedir($dp);

  echo 
"rmdir($dir);<br />\n";
  echo 
'</fieldset>';

David ist offline  
Alt 21.12.2008, 21:30  
Benutzer
 
Registriert seit: 24.09.2008
Beiträge: 52
frank-ae befindet sich auf einem aufstrebenden Ast
frank-ae eine Nachricht über Yahoo! schicken frank-ae eine Nachricht über Skype™ schicken
Standard

hach verdammt ... so wie es ausschaut wir an die function removeRekursiv() von der function deleteSite() nichts übergeben, denn $dir ist leer,
daraus schliesse ich das das script versucht alles ab dem Root zu löschen. Bleibt bei mir grade nur die Frage ... warum übergebe ich nichts, aber darum muss ich mich morgen kümmern, da ich grade von Weihnachtsmarkt komme und Glühwein vieleicht in Maßen aber nicht in Massen gut ist

V.G.
Frank -ae

melde mich morgen noch einmal.
__________________
Mein Projekt: www.my-matrix.de
frank-ae ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
User mit PHP aus DB löschen MistaJ PHP Tipps 2008 10 01.12.2008 19:38
[Erledigt] über URL bestimmte Zeile einer txt löschen! VinManWin PHP Tipps 2008 10 31.10.2008 12:25
[Erledigt] Bestimmten Datensatz aus SESSION Array löschen! litterauspirna PHP Tipps 2008 13 27.08.2008 18:05
[Erledigt] Benutzer in phpbb löschen - per sql-Befehl Datenbanken 2 23.12.2005 09:52
Bilder löschen PHP Tipps 2005-2 4 24.10.2005 11:37
Vor dem löschen abfragen ob man wirklich löschen will PHP Tipps 2005-2 1 05.09.2005 11:54
MySQL/PHP: Löschen von Datensätzen ajo_silent PHP Tipps 2005-2 8 03.08.2005 17:00
Problem mit PFad Firefox - Verzeichnis löschen PHP Tipps 2005-2 0 19.07.2005 16:05
[FRAGE] Datein per PHP löschen. PHP Tipps 2005 21 11.05.2005 19:36
[Erledigt] Sicherheitsabfrage beim Löschen aus DB PHP Tipps 2005 6 05.04.2005 10:24
server probleme datei löschen Rotti PHP Tipps 2004-2 7 30.12.2004 13:51
Datei löschen mit unlink PHP Tipps 2004-2 4 30.11.2004 00:36
Datensatz löschen: [Erledigt] Rekursives Löschen macht Rundumschlag? PHP Tipps 2004 9 09.06.2004 01:44
Prob beim Löschen von Cookies PHP Tipps 2004 4 07.06.2004 20:58

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
ftp_rmdir rekursiv, php verzeichnis rekursiv löschen, php rekursiv löschen, unlink rekursiv, php rekursives löschen, mysql rekursives löschen, mysql delete rekursiv, php ftp_rmdir rekursiv, php ordner rekursiv löschen, rekursives löschen, rekursiv löschen php, php datei rekursiv löschen, php unlink rekursiv, dateien rekursiv löschen php, verzeichnis rekursiv löschen php, mysql rekursiv löschen, mysql delete cascade, verzeichnisstruktur rekursiv löschen php tool, php rekursives löschen von verzeichnissen function, rekursives __destruct

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:40 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum