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:
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
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()
{
}
}
?>
== 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
Kommentar