Antworten auf deine Fragen:
Neues Thema erstellen

Ordner Darstellen welche in Datenbank gespeichert wurden

rey

Der Frager ;)

hi,
ich möchte ein keliens script schreiben wo user anderen usern dateien bzw ordner zu verfügung stellen können.
bloß habe ich nun das problem wenn ein user einem anderen einen Ordner freigibt wie ich diesen dem anderen user sichtbar mache.
die Ordner werden eine datenbank gespeichert(ID; Name;Ersteller;Freigabe)
Der user hat eine auswahl box wo er die user bzw. gruppen einstellen kann welche zugriff auf diesen Ordner haben.
die hierarchie schaut so aus:
Root
|_user1
| |_Ordner1
| |_Ordner2
|_user2
| |_Ordner1
...
So nehmen wir an user1 hat user2 den ordner2 freigegeben wie stelle ich es nun am besten an das user2 diesen und dessen inhalt sieht?

mein bisheriges Script

PHP:
<?php 
include("checkuser.php");
include("_config.php");
echo'
<html> 
<head> 
  <title>Login</title>

<link rel="stylesheet" href="/wiki/form2.css" type="text/css" />

</head><body>
<a href=\"logout.php\">Ausloggen</a> ';


  $ipadresse = getenv ("REMOTE_ADDR"); 
$ref=$_SERVER["HTTP_REFERER"];
  $user=$_SESSION["user_nickname"];


if(isset($_POST["n-ordner"]))
{
$n_ordner=$_POST["n-ordner"];
$creationdate= date("F j, Y, g:i a");
$categ="home";
$s_ordner=mysql_query("SELECT * FROM ordner WHERE ersteller='".$user."' AND category='".$categ."'")or die(mysql_error());
while($ds=mysql_fetch_object($s_ordner))
{
$n_name=$ds->Name;
$n_cat = $ds->category;
}



$currentpath=getcwd();
$pathnow=$currentpath."\\"."user\\".$n_name."\\".$n_ordner;

$checkordner = mysql_query("SELECT Name,ersteller FROM ordner WHERE Name='".mysql_real_escape_string($n_ordner)."' AND ersteller='".mysql_real_escape_string($user)."'");
$daten_exist = mysql_num_rows($checkordner);
  if ($daten_exist>0) {
  	die("<font color=\"#000\">This Directory already exist</font>
  <br /><a href=\"javascript:history.go(-1);\" class=\"titlelink\">Back</a>");
  }
    else{
    
    
    mkdir($pathnow,777);
    $nordnersql = mysql_query("INSERT INTO ordner SET Name='".mysql_real_escape_string($n_ordner)."',ersteller='".mysql_real_escape_string($user)."',Datum='$creationdate'") or die(mysql_error());
      }
  }
else
{

echo "Ordner konnte nicht angelegt werden";
}    
if(isset($_GET['folder']))
{
echo getcwd();
    $dir = getcwd()."\\"."\user\\".$n_name."\\".$_GET['folder'];
    
} else {

    $dir = getcwd()."\\"."user\\".$n_name;
    echo $dir;
}

echo "<table style=\"font-family:Verdana\">\n";

        $handle = opendir($dir);
        while ($file = readdir ($handle))
        {

                if ($file != "." && $file != ".." && !eregi(".htm",$file) && !eregi(".php",$file) && !eregi(".hta",$file) && !eregi(".htp",$file))
                {


            $array[] = $file;

                }
        }

        closedir($handle);
        sort($array);

        foreach($array as $file)
        {

        if(filetype($dir."/".$file) == "dir")
        {

                    echo "<tr>\n<td><b><a href=\"list.php?folder=".$_GET['folder'].$file."/\">".$file."</a></b></td>\n</tr>\n";
                    
        } else {

                    echo "<tr>\n<td><a href=\"".$_GET['folder'].$file."\">".$file."</a></td>\n</tr>\n";

        }

        }

echo "</table>";


?>
<form action="<?php $_SERVER["PHP_SELF"];?>"method="POST">
Ornder Anlegen<input name="n-ordner"  type="text" /><br />
<input type="submit" value="Neuen Ordner Anlegen" />
</form>
was auch noch nicht funktioniert ist
PHP:
if(isset($_GET['folder']))
{
echo getcwd();
    $dir = getcwd()."\\"."\user\\".$n_name."\\".$_GET['folder'];
    
} else {

    $dir = getcwd()."\\"."user\\".$n_name;
eigentlich sollten so nur die ornder angezeigt werden welche im verzeichns n_name vorhanden sind es zeigt mir aber schon ab user die ordner an
 
Zuletzt bearbeitet:

AW: Ordner Darstellen welche in Datenbank gespeichert wurden

Hallo

Vielleicht solltest Du da erstmal die Datenbankstruktur zeigen.
Ob ein Ordner für User freigegeben ist oder nicht, ist erstmal nicht relevant. Die Dateien müssen auch nicht zwangsweise in einem separaten Ordner sein.

Sprich: User lädt eine Datei hoch. Diese bekommt einen Namen (zb. username_timestamp_irgendeinhash.jpg). Dateiname kommt in die Datenbank zusammen mit zb. Datum/Zeit, UserID welche diese Datei hochgeladen hat, ein "Ordner" (ist im Grunde nur eine Bezeichnung unter der kategorisiert wird und hat nichts mit nen realen Ordner zu tun) und dann noch eine DateiID (auto_increment).
In einer separaten Tabelle kommt dann noch rein welcher User auf welche Datei zugreifen kann.
Beispiel:
irgendein_autoincrement, userid, dateiId
Fertig.
Aber wie gesagt, du solltest deine datenbank etwas konzipieren bevor du an sowas gehst :)
 
AW: Ordner Darstellen welche in Datenbank gespeichert wurden

so dann wollen wir mal:
angefangen bei den sicherheitslücken:
PHP:
$n_ordner=$_POST["n-ordner"];

über sinnlose queries und deren zuweisungen (letztendlich hat $n_name immer den wert des letzten datensatzes):
PHP:
$s_ordner=mysql_query("SELECT * FROM ordner WHERE ersteller='".$user."' AND category='".$categ."'")or die(mysql_error());
while($ds=mysql_fetch_object($s_ordner))
{
$n_name=$ds->Name;
$n_cat = $ds->category;
}

und anstatt "\\" nehme "/" (übrigens ebenso unsicher => stell dir vor $_GET['folder'] = "../../irgendwoanders"): ...
PHP:
$dir = getcwd()."\\"."\user\\".$n_name."\\".$_GET['folder'];

zu deiner frage:
neue tabelle erstellen, die ordner und user verbindet:

ordnerToUserID //primary key
ordnerID
userID
hasAccess // 1 oder 0 je nach erlaubnis...

Aber wie gesagt, du solltest deine datenbank etwas konzipieren bevor du an sowas gehst :)

Davor erstma PHP lernen...
 
AW: Ordner Darstellen welche in Datenbank gespeichert wurden

und anstatt "\\" nehme "/" (übrigens ebenso unsicher => stell dir vor $_GET['folder'] = "../../irgendwoanders"): ...
PHP-Code:
$dir = getcwd()."\\"."\user\\".$n_name."\\".$_GET['folder'];

das liegt vielleicht daran das ich es lokal teste mit einem absoluten Pfad?

und wegen sicherheitslücke
PHP:
angefangen bei den sicherheitslücken:
PHP-Code:
$n_ordner=$_POST["n-ordner"];
sollte ich also addslashes hinzufügen oder was?


zu deiner frage:
neue tabelle erstellen, die ordner und user verbindet:

ordnerToUserID //primary key
ordnerID
userID
hasAccess // 1 oder 0 je nach erlaubnis...
ich dachte mir einfach in der spalte Freigabe füge ich einfach die User hinzu und mit einer like abfrage gucke ich dann ob der user in der spalte vorkommt oder nicht.
 
AW: Ordner Darstellen welche in Datenbank gespeichert wurden

das liegt vielleicht daran das ich es lokal teste mit einem absoluten Pfad?

Nö, der absolute Pfad wird ja dynamisch durch "getcwd()".

sollte ich also addslashes hinzufügen oder was?

Nö, du musst prüfen ob der jeweilige User auf den Ordner zugreifen darf und auch verhindern, dass man über die GET-Parameter irgendwoanders drauf zugreifen kann.

ich dachte mir einfach in der spalte Freigabe füge ich einfach die User hinzu und mit einer like abfrage gucke ich dann ob der user in der spalte vorkommt oder nicht.

 
AW: Ordner Darstellen welche in Datenbank gespeichert wurden

Nun gut werde mich mit der Datenbank noch mal befassen ehrlich gesagt habe ich mir für gerade mal 15min. zeit genommen, wobei man sich bei sowas mit der Datenbank und den ganzen Beziehungen etwas länge beschäftigen sollte.
Nun gut werde mich sicher noch mal melden wenn ich mit der Datenbank Konzeption fertig bin.
Danke erstmal
 
AW: Ordner Darstellen welche in Datenbank gespeichert wurden

Ok!
habe die datenbank überarbeitet.
jetzt stehe ich jedoch immernoch vor dem alten Problem.
zum einen werden die Ordner ausgelesen in einer while schleife wenn Ordner Ersteller == User ist oder eben wenn die gruppenID eine Freigabe hat.
ich habe als Ordner Namen die OrdnerID wenn ich nun jedoch die Ordner auflisten möchte bzw. Dateien Frage ich mich was ich machen muss damit es die Ordnersturcktur anzeigt.
ich habe es nun so gemacht das die user kein homeverzeichnis haben.
Ordner werden im hauptverzeichnis erstellt.
in diesen Ordnern sollen weitere Ordner erstellt werden können das ganez wird in der Datenbank eingetragen
directoryID
dir_name
creatorID
access_group
creationDate
adress_path

ich dachte ich mache es mit einer While schleife
PHP:
echo getcwd();
    $verzeichnisseHolen = mysql_query("SELECT * FROM directory WHERE creatorID='".$userID."' AND home=''");
      while($dvH = mysql_fetch_object($verzeichnisseHolen))
      {
          $dirName = $dvH->dir_name;
          $creatorID = $dvH->creatorID;
          $directoryID = $dvH->directoryID;
          $ad_path= $dvH->adress_path;
       echo "<a href='?sub=$ad_path' target=\"_parent\">ORDNERNAME:::".$dirName."</a><br/>";

      }
aber das geht nicht.

diese variante geht leider auch nicht
PHP:
...
   $DirPath = $ad_path;
    $InnermostDir = basename(rtrim($DirPath, '/'));
    
    $InnermostDir; 
    echo  $InnermostDir."<br />"; 
    //$newDir= $_POST["dirname"];
       echo "<a href='?sub=$InnermostDir/' target=\"_parent\">ORDNERNAME:::".$dirName."</a><br/>";
...
 
Zuletzt bearbeitet:
AW: Ordner Darstellen welche in Datenbank gespeichert wurden

Nö, der absolute Pfad wird ja dynamisch durch "getcwd()".



Nö, du musst prüfen ob der jeweilige User auf den Ordner zugreifen darf und auch verhindern, dass man über die GET-Parameter irgendwoanders drauf zugreifen kann.




Wenn @rey z.B. kein addslashes nehmen soll und der übergebene Wert aus einer globalen Var $_POST stammt, wie soll dan bitteschön hier ein Wert aus einer globalen Var $_GET einfliessen können?

Zur Frage - Ordner zur Verfügung stellen. Habe ich noch eine Frage:
Wie soll der Zugriff erfolgen? Also bspw. FTP oder per Browser?

Zum Thema Ordnerfreigabe:
Wie wird eine Ordnerfreigabe z.B. für mehrere User gespeichert?

Zum Thema Orderzugriffsrechte würde ich dir etwas vorschlagen, wobei hier wiederum die Frage offen ist, wie du einen User erkennst. Sprich ein User wird sich sicherlich einloggen müssen oder?
Falls ja, wird ja hoffentlich eine session generiert. Wenn ja, kannst du über einen Parameter in der Session klären, ob
a) ein User eingeloggt ist (bzgl. Ordernzugriff von User auf User)
b) der zugreifende User auch in dem entsprechenden Tabellenfeld zur Freigabe enthalten ist.

Trifft a und b nicht zu, gibt es kein Zugriff auf den Ordner und du kannst z.B. eine header-Umleitung setzen (mit entsprechenden getParams) um auf der Zielseite mitzuteilen, dass keine Zugriffsrechte bestehen. Oder du lässt diesen Vorgang in einer htaccess klären.
 
AW: Ordner Darstellen welche in Datenbank gespeichert wurden

Die user melden sich an ich erkenne den User an seiner Id und email.
anhand deren erkenne ich weiderrum welche access er hat also welcher gruppe er angehört.
Nein Die freigabe betrifft immer nur eine Gruppe!
der user soll nur das sehen was in der datenbank vorhanden ist also wenn ein Ornder für die gruppe 3 freigegeben hat soll Ihn nur diese gruppe auch sehen einschließlich Admins natürlich.
 
AW: Ordner Darstellen welche in Datenbank gespeichert wurden

Die user melden sich an ich erkenne den User an seiner Id und email.
anhand deren erkenne ich weiderrum welche access er hat also welcher gruppe er angehört.
Nein Die freigabe betrifft immer nur eine Gruppe!
der user soll nur das sehen was in der datenbank vorhanden ist also wenn ein Ornder für die gruppe 3 freigegeben hat soll Ihn nur diese gruppe auch sehen einschließlich Admins natürlich.

Also hast du keine Session irgendwo enthalten wie z.B. session_start()?
Und ein User kann nur für einen User einen Ordner freigeben oder wird für jede Freigabe ein DB-Eintrag vorgenommen?
 
AW: Ordner Darstellen welche in Datenbank gespeichert wurden

Bei der freigabe wird eine Update in der DB gemacht.
mit der Ordner Strcuktur habe ich es bald glaube ich was mich aber Interessiert ist,
kann ich die Select abfrage nicht in eine Schleife packen?
ich habe eine weitere spalte eingefügt die Level heißt
das Level möchte ich hochzählen sofern auf einen ordner geklickt wurde bisher habe ich es so gelöst das ich es in einem weiteren Dokument berechne etc.
Ich würde aber gene im selben dokument bleiben.
Also bisher sieht das so aus
PHP:
$verzeichnisseHolen = mysql_query("SELECT * FROM directory WHERE creatorID='".$userID."' AND home='' AND level='1'");
      while($dvH = mysql_fetch_object($verzeichnisseHolen))
      {
          $dirName = $dvH->dir_name;
          $creatorID = $dvH->creatorID;
          $directoryID = $dvH->directoryID;
          $ad_path= $dvH->adress_path;
          $lvl = $dvH->level;
    
     $DirPath = $ad_path;
    $InnermostDir = basename(rtrim($DirPath, '/'));
    
    $InnermostDir; 

    //$newDir= $_POST["dirname"];
       echo "<a href=\"viewdir.php?id=$directoryID&lvl=$lvl&gid=$gID\" target=\"_parent\">$dirName</a><br/>";
      }
das andere dokument
PHP:
<?php
include("_config.php");
$dID = $_GET["id"];
$lvl = $_GET["lvl"];
$gID= $_GET["gid"];
echo $gID;
$lvl=$lvl+1;
$sqlf = mysql_query("SELECT * FROM files WHERE directoryID='".$dID."'");
/*while($df = mysql_fetch_object($sqlf))
{

}*/echo $lvl;
$sqld = mysql_query("SELECT * FROM directory WHERE access_group='".$gID."' AND level='".$lvl."'");
while($dD = mysql_fetch_object($sqld))
{
          $dirName = $dD->dir_name;
          $creatorID = $dD->creatorID;
          $directoryID = $dD->directoryID;
          $ad_path= $dD->adress_path;
          $lvl = $dD->level;
  echo "<a href=\"viewdir.php?id=$directoryID&lvl=$lvl&gid=$gID\" target=\"_parent\">$dirName</a><br/>";
}
?>
Nur wie gesagt würde ich es gerne vermeiden ein weiteres dokument für nutzen zu müssen.
 
AW: Ordner Darstellen welche in Datenbank gespeichert wurden

Hochzählen kann man immer - lediglich ein Update. Alledings - woher weist du dann, ob weiter gelinkt wurde?

Meine Frage nach der session ist ja immer noch nicht beantwortet. Ergo gehe ich davon aus, du hast keine Session laufen.

Du würdest dir viele Fragen abnehmen, in dem du einfach eine Session initiierst. In dieser könntest du einfach Daten zwischenspeichern und darauf zugreifen.

Ansonsten bleibt dir nur die die Globale server['http_referer'] als vergleich zum aktuellen ausgelesen link aus der db.

Abgesehen davon - wie erkennst du den ob ein User eingeloggt ist? Nur weil eine Seite angezeigt wird, ist das noch kein Rückschluss darauf, ob ein User eingeloggt ist oder nicht ;)
 
AW: Ordner Darstellen welche in Datenbank gespeichert wurden

Nein es ist keine session bisher wollte ich am schluss einbauen.
 
AW: Ordner Darstellen welche in Datenbank gespeichert wurden

Dann zieh diesen Schritt vor. Hast du eine Session, ist vieles leichter, weil du entsprechende Daten in der Session mitschleppen kannst. Somit auch - wechselt der User das Verzeichnis du könntest die DB-Anfragen entlasten, würde mit einer Abfrage beim login die Rechte für entsprechende Ordner gesetzt. Ebenso könnte enthalten sein, welche Ordner für den User grundsätzlich gesperrt wären usw..

Also ohne Session kommst du nicht weiter. Garantiert.

Vor allem - wenn du das Session-handling zum Schluss einbindest (was man grundsätzlich als erstes macht), musst du das Script wieder nachbessern und/oder anpassen.
 
AW: Ordner Darstellen welche in Datenbank gespeichert wurden

Ok!
habe die datenbank überarbeitet.
jetzt stehe ich jedoch immernoch vor dem alten Problem.
Zeig sie uns doch mal... Es geht hierbei ja nicht nur um Ordner & Dateien, sondern auch um User, Sessions, Rechte, Gruppen...

ich habe als Ordner Namen die OrdnerID wenn ich nun jedoch die Ordner auflisten möchte bzw. Dateien Frage ich mich was ich machen muss damit es die Ordnersturcktur anzeigt.
Jeder Ordner bekommt einen Parentordner und dann geht das über eine rekursive Funktion...


Wenn @rey z.B. kein addslashes nehmen soll und der übergebene Wert aus einer globalen Var $_POST stammt, wie soll dan bitteschön hier ein Wert aus einer globalen Var $_GET einfliessen können?
Das versteh ich jetzt nicht, war aber auch nicht an mich gerichtet hoff ich^^

kann ich die Select abfrage nicht in eine Schleife packen?
Kannst du natürlich machen, ist aber wohl die schlechteste Lösung die man sich vorstellen kann.
 
Zuletzt bearbeitet:
AW: Ordner Darstellen welche in Datenbank gespeichert wurden

Die Frage war schon an dich gerichtet zu einem Beitrag von dir.
 
AW: Ordner Darstellen welche in Datenbank gespeichert wurden

und anstatt "\\" nehme "/" (übrigens ebenso unsicher => stell dir vor $_GET['folder'] = "../../irgendwoanders"): ...

PHP:
if(isset($_GET['folder']))
//...
$dir = getcwd()."\\"."\user\\".$n_name."\\".$_GET['folder'];
//...
$handle = opendir($dir);
Also für mich fließt hier eine GET-Var ein und das ziemlich katastrophal^^

Kann aber auch sein, dass ich dich nicht richtig verstanden hab^^
 
Zuletzt bearbeitet:
AW: Ordner Darstellen welche in Datenbank gespeichert wurden

Hi,
hier ist der neue aufbau wird wahrscheinlich nicht besser sein als der alte aber so schaut es bisher aus
PHP:
-- Tabellenstruktur für Tabelle `directory`
--

CREATE TABLE IF NOT EXISTS `directory` (
  `directoryID` int(11) NOT NULL auto_increment,
  `dir_name` varchar(255) NOT NULL,
  `creatorID` varchar(50) NOT NULL,
  `access_group` int(11) NOT NULL,
  `creationDate` date NOT NULL,
  `home` varchar(255) NOT NULL,
  `adress_path` text NOT NULL,
  `level` int(11) NOT NULL,
  PRIMARY KEY  (`directoryID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=37 ;

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `files`
--

CREATE TABLE IF NOT EXISTS `files` (
  `fileID` int(11) NOT NULL auto_increment,
  `fileName` varchar(50) NOT NULL,
  `uploaderID` varchar(50) NOT NULL,
  `access_group` text NOT NULL,
  `uploadDate` date NOT NULL,
  `fileType` varchar(255) NOT NULL,
  `fileSize` varchar(255) NOT NULL,
  `dirID` int(11) NOT NULL,
  PRIMARY KEY  (`fileID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `groupuser`
--

CREATE TABLE IF NOT EXISTS `groupuser` (
  `groupID` int(11) NOT NULL auto_increment,
  `groupName` varchar(50) NOT NULL,
  `access` int(11) NOT NULL,
  PRIMARY KEY  (`groupID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `user`
--

CREATE TABLE IF NOT EXISTS `user` (
  `userID` int(11) NOT NULL auto_increment,
  `username` varchar(50) NOT NULL,
  `Password` varchar(50) NOT NULL,
  `groupID` int(11) NOT NULL,
  `Email` varchar(255) NOT NULL,
  `lastLogin` date NOT NULL,
  `sup` int(11) NOT NULL,
  `upl` int(11) NOT NULL,
  `dirC` int(11) NOT NULL,
  PRIMARY KEY  (`userID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ;
Bin für weitere Tipps dankbar, die Sache mit der Session hätte ich echt früher machen sollen ;)
 
Zuletzt bearbeitet:
AW: Ordner Darstellen welche in Datenbank gespeichert wurden

Code:
--
-- Tabellenstruktur für Tabelle `directory`
--

CREATE TABLE IF NOT EXISTS `directory` (
  `directoryID` int(10) NOT NULL auto_increment,
  `parentID` int(10) NOT NULL,
  `userID` int(10) NOT NULL,
  `directoryName` varchar(255) NOT NULL,
  `groupID` int(10) NOT NULL,
  `time` int(10) NOT NULL,
  `home` varchar(255) NOT NULL,
  `path` text NOT NULL,
  PRIMARY KEY  (`directoryID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `file`
--

CREATE TABLE IF NOT EXISTS `file` (
  `fileID` int(10) NOT NULL auto_increment,
  `directoryID` int(10) NOT NULL,
  `userID` varchar(50) NOT NULL,
  `groupID` int(10) NOT NULL,
  `fileName` varchar(50) NOT NULL,
  `fileType` varchar(255) NOT NULL,
  `fileSize` varchar(255) NOT NULL,
  `time` int(10) NOT NULL,
  PRIMARY KEY  (`fileID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `group`
--

CREATE TABLE IF NOT EXISTS `group` (
  `groupID` int(10) NOT NULL auto_increment,
  `groupName` varchar(50) NOT NULL,
  `access` int(10) NOT NULL,
  PRIMARY KEY  (`groupID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `user`
--

CREATE TABLE IF NOT EXISTS `user` (
  `userID` int(10) NOT NULL auto_increment,
  `groupID` int(10) NOT NULL,
  `username` varchar(50) NOT NULL,
  `password` varchar(50) NOT NULL,
  `email` varchar(255) NOT NULL,
  `sup` int(10) NOT NULL,
  `upl` int(10) NOT NULL,
  `dirC` int(10) NOT NULL,
  PRIMARY KEY  (`userID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `session`
--

CREATE TABLE IF NOT EXISTS `session` (
  `sessionID` varchar(50) NOT NULL,
  `userID` int(10) NOT NULL,
  `ipAddress` varchar(15) NOT NULL,
  `userAgent` varchar(255) NOT NULL,
  `lastActivityTime` int(10) NOT NULL,
  `requestURI` varchar(255) NOT NULL,
  `requestMethod` varchar(4) NOT NULL,
  PRIMARY KEY  (`sessionID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Hab mal das ganze angepasst. Einige Tipps:
1. nutze Namen als Beschreibung, sodass jeder weiß was du damit meinst. Das macht Kommentare unnötig und deinen Quelltext lesbar (wie ein Buch^^)
2. halte dich an Groß/Kleinschreibung und wie du "_" benutzt.
3. Date in SQL ist immer so eine Sache... ich bevorzuge hier einen Timestamp => int(10). Damit bist du sicherer in Bezug auf die Nutzung verschiedenster Datenbanken.
4. z.B: userID ist überall userID und nicht creatorID, weil man so leichter sieht aus welcher Tabelle diese ID stammt...
5. Jetzt wirds etwas komplizierter... Wie du gesehen hast habe ich eine Session-Tabelle angelegt, da ich mich nicht gerne an das interne Session-Gedöns von PHP binde. So kannst du selber bestimmen wie eine SessionID aussieht, wie du sie übergibst und du hast beispielsweise die Möglichkeit alle Sessions administrativ zu kontrollieren. Entweder du implementierst es so oder nimmst eben das PHP-intere Zeug xD

Einige Fragen hab ich noch. Für was sind die folgenden Felder gedacht?

- directory.level? => Ich geh ma davon aus, dass es sich hierbei um die "Tiefe" des Ordners handelt. Falls das so ist, ist das Feld vermutlich überflüssig. Wird alles etwas abstrakter/dynamischer über die parentID gelöst.
- user.sup?
- user.upl?
- user.dirC?

Mit der aktuellen Datenbank kann jedem User nur eine Gruppe zugewiesen werden und freigaben für Dateien/Ordnern ebenfalls. Für meine Sinne etwas sehr "beschränkt"^^

`access` int(10) => ein Int-Wert als Access-Level ist auch sehr schlecht, da es 0 Aussagekraft hat und niemand weiß welche Zahl für welchen Level steht...

So^^
Wie du siehst wäre es vielleicht gar nicht dumm davor etwas PHP zu lernen, falls das Projekt größer werden soll... falls es nur eine kleine Rumspielerei wird, dann kannste natürlich so weitermachen - lernen wirst du dabei aber rein gar nichts.
 
Zuletzt bearbeitet:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.930
Beiträge
1.539.962
Mitglieder
68.046
Neuestes Mitglied
Kaisaleo
Oben