Anzeige

Login - Jeder hat nurauf seinen Ordner Zugriff

Login - Jeder hat nurauf seinen Ordner Zugriff | PSD-Tutorials.de

Erstellt von Hansi05, 30.09.2008.

  1. Hansi05

    Hansi05 Aktives Mitglied

    Dabei seit:
    18.06.2006
    Beiträge:
    623
    Geschlecht:
    männlich
    Login - Jeder hat nurauf seinen Ordner Zugriff
    Tach,

    ich hab mir kein kleines Login Script runtergeladen und bin soweit auch zufrieden damit, jeder User hat seinen eigenen Ordner in den er automatischrein kommt, wenn er sich eiloggt.
    ABER, wenn man sich einloggt und die Adresse des Ordners eines anderen Users eingibt, kann man da auch rein. Aktuell wird folgendermaßen geguckt ob der, der auf den Ordner zugreifen will auch eingeloggt ist:

    PHP:
    1.  
    2. <?php
    3. if (!isset ($_SESSION["user_id"]))
    4. {
    5.   header ("Location: ../index.php");
    6. }
    7. ?>
    8.  
    Jetzt soll aber der User mit der ID 2 nur auf seinen Ordner zugriff haben, und nicht auf den Ordner des Users mit der ID 3.

    Außerdem, hab ich in einem Ordner volle Zugriffsrechte gegeben, also 777, aber eine Datei in dem Ordner, soll man nicht löschen dürfen, wie kann ich das einrichten?

    EDIT: Hier mal mein Uploadscript + Dateianzeige (also welche Datein im Upload-Ordner sind), vllt kann man da ja das Anzeigen von PHP Dateien sperren?

    PHP:
    1.  
    2. <?
    3. if(uploadmoeglichkeitpruefen()==false){
    4.     echo '<div style="color:red;">Es ist auf diesen Server kein Upload moeglich, bitte wenden Sie sich an Ihren Hoster und bitten um Aktivierung der Php Upload Funktion.</div>';
    5.      exit;    
    6. }
    7. if(file_exists($img_path_up)==false OR $img_path_up ==''){
    8.     echo '<div style="color:red;">Es gibt kein Ordner wohin die Bilder geladen werden sollen!</div>';
    9.     exit;
    10.  
    11. }
    12. ?>
    13.     <br>
    14.     <strong>File Upload</strong><br>
    15.     <br>
    16. <?
    17. if($_POST["senden"]==1){
    18.     $filename = "";
    19.     if ($_FILES['userfile']['tmp_name']<> 'none'){    
    20.         $file = $_FILES['userfile']['name'];
    21.         $temp = $_FILES['userfile']['tmp_name'];
    22.         $path_parts = pathinfo($file);
    23.         if(!isset($path_parts["extension"])) $path_parts["extension"]='';
    24.         if($_FILES['userfile']['type'] != 'image/gif' && $_FILES['userfile']['type'] != 'image/jpeg' && $_FILES['userfile']['type'] != 'image/png' && $_FILES['userfile']['type'] != 'image/jpeg') $ist_bild=0; else $ist_bild=1;
    25.         if($upload_erlaubnis == 0) $ist_bild=1;        
    26.         if($ist_bild==0) {  
    27.             echo '<div style="color:red;">Nur GIF, PNG, JPEG und JPG Dateien duerfen hochgeladen werden. <a href="'.$_SERVER['PHP_SELF'].'">Noch mal versuchen...</a><br><br></div>';
    28.         } else {
    29.             if($path_parts["extension"]!=""){
    30.                 $filename = "datei_" . time() . "." . $path_parts["extension"];
    31.                 if($_FILES['userfile']['size'] <= $groessemax*1024){
    32.                     if(decoct(fileperms($img_path_up))==40777){
    33.                         if(@copy($temp, $img_path_up.$filename)){
    34.                             echo '<div style="color:green;">Datei ist auf den Server!<br>';
    35.                             echo 'Url der Datei: <a href="http://'.$_SERVER['HTTP_HOST'].$path.$filename.'" target="_blank">http://'.$_SERVER['HTTP_HOST'].$path.$filename.'</a><br><br><a href="'.$_SERVER['PHP_SELF'].'">Eine weitere Datei auf den Server laden...</a><br><br></div>';
    36.                         } else {
    37.                             echo '<div style="color:red;">Die Datei konnte nicht auf den Server geladen werden. <a href="'.$_SERVER['PHP_SELF'].'">Noch mal versuchen...</a><br><br></div>';
    38.                         }
    39.                     } else {
    40.                         echo '<div style="color:red;">Der Upload Ordner hat keine Schreibrechte! <a href="'.$_SERVER['PHP_SELF'].'">Noch mal versuchen...</a><br><br></div>';
    41.                     }
    42.                 } else {
    43.                     echo '<div style="color:red;">Die Datei ist zu gross! Die Datei darf nicht groesser als '.$groessemax.' KB (KiloByte) sein. <a href="'.$_SERVER['PHP_SELF'].'">Noch mal versuchen...</a><br><br></div>';
    44.                 }
    45.             }
    46.         }
    47.     }
    48. } else {
    49. ?>
    50. <form method="post" enctype="multipart/form-data" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
    51.     <input type="hidden" value="1" name="senden">
    52.     die Datei darf nicht gr&ouml;&szlig;er sein als <?php if((maximaledateiuploadgroesseermitteln()/1024)>$groessemax) echo $groessemax; else echo (maximaledateiuploadgroesseermitteln()/1024);?> KB (KiloByte).<br><br>
    53.     <input name="userfile" type="file" size="40"><br><br>
    54.     <input type="submit" name="action" value="Speichern">
    55. </form>
    56. <? } ?>
    57. <br><strong>File List</strong><br><br>
    58. <?
    59. if($_GET["loechen"]==1 AND $_GET["file"]!=''){
    60.     if(@file_exists($img_path_up.$_GET["file"])==true){
    61.         $type = explode(".", $bilder_path_thumbnail.$_GET["tn"]);
    62.         if($type[count($type)-1] == 'gif' OR $type[count($type)-1] == 'jpeg' OR $type[count($type)-1] == 'png' OR $type[count($type)-1] == 'jpg'){
    63.             if(@unlink($bilder_path_thumbnail.$_GET["tn"])==false) echo '<div style="color:green;">Das Thumbnail konnte nicht geloescht werden!<br><br></div>';
    64.         }
    65.    
    66.         if(@unlink($img_path_up.$_GET["file"])==true) echo '<div style="color:green;">Die Datei wurde erfolgreich geloescht!<br><br></div>';
    67.         else echo '<div style="color:red;">Die Datei konnte nicht geloescht werden.<br><br></div>';
    68.     } else {
    69.         echo '<div style="color:red;">Die Datei gibt es nicht im Upload Verzeichnis!<br><br></div>';
    70.     }
    71. }
    72. ?>
    73. <table border="0" bordercolor="Gray" bgcolor="DarkGray" cellspacing="2" cellpadding="2" width="500">
    74.     <tr align="middle" bgcolor="Gainsboro" style="font-weight:bold">
    75.         <td><SPAN class="fett">File</SPAN></td>
    76.         <td><SPAN class="fett">Größe</SPAN></td>
    77.         <td><SPAN class="fett">Letzte Änderung</SPAN></td>
    78.         <td><SPAN class="fett">Aktion</SPAN></td>
    79.     </tr>
    80. <?
    81. $page = isset($_GET['page']) ? $_GET['page'] : 0;
    82. $offset = 0;
    83. $offset = $page * $length;
    84. $verzeichnis_daten = array();
    85. $fp = opendir ($img_path_up);
    86. while (false !== ($file = readdir($fp))) {
    87.     if (filetype($img_path_up.$file)!="dir"){
    88.         $verzeichnis_daten[] = $file;
    89.     }
    90. }
    91. closedir($fp);
    92. asort($verzeichnis_daten);
    93. for ($i = $offset; $i < $offset+$length AND $i < count($verzeichnis_daten); $i++) {
    94.     echo '<tr bgcolor="Gainsboro">';
    95.     $type_check = explode(".",$verzeichnis_daten[$i]);
    96.     if($thumbnail_create==1 AND ($type_check[count($type_check)-1]=='jpg' OR $type_check[count($type_check)-1]=='gif' OR $type_check[count($type_check)-1]=='png' OR $type_check[count($type_check)-1]=='jpeg')){
    97.         $typ=thumbnail($verzeichnis_daten[$i], $img_path_up , $bilder_path_thumbnail, $thumbnail_neuebreite );
    98.         if($typ==1 OR $typ==2 OR $typ==3) echo '   <td align="center"><a target="_blank" href="http://'.htmlspecialchars($_SERVER['HTTP_HOST']).$path.$verzeichnis_daten[$i].'"><img border="0" src="http://'.htmlspecialchars($_SERVER['HTTP_HOST']).$bilder_url_thumbnail.'TN'.$verzeichnis_daten[$i].'"></a></td>';
    99.         else echo '    <td><a href="http://'.htmlspecialchars($_SERVER['HTTP_HOST']).$path.$verzeichnis_daten[$i].'"  target="_blank">'.$verzeichnis_daten[$i].'</a></td>';
    100.     } else {
    101.         echo '    <td><a href="http://'.htmlspecialchars($_SERVER['HTTP_HOST']).$path.$verzeichnis_daten[$i].'"  target="_blank">'.$verzeichnis_daten[$i].'</a></td>';
    102.     }    
    103.     echo '    <td>'.fs_convert($img_path_up.$verzeichnis_daten[$i],2).'</td>';
    104.     echo '    <td>'.date("d.m.Y H:i", last_change($img_path_up.$verzeichnis_daten[$i])).'</td>';
    105.     echo '    <td><a href="'.htmlspecialchars($_SERVER["PHP_SELF"]).'?file='.$verzeichnis_daten[$i].'&tn=TN'.$verzeichnis_daten[$i].'&loechen=1" >Löschen</td>';
    106.     echo '</tr>';
    107. }
    108. if(count($verzeichnis_daten)==0){
    109.     echo '<tr bgcolor="Gainsboro">';
    110.     echo '    <td colspan="4">Es ist noch keine Datei im Upload Ordner.</td>';
    111.     echo '</tr>';
    112. }
    113. echo '</table>';
    114.  
    115. if ($page > 0 AND count($verzeichnis_daten)!=0) {
    116.     echo '<a href="'.htmlspecialchars($_SERVER['PHP_SELF']).'?page='.($page-1).'">&laquo;</a> ';
    117. }
    118. if (( count($verzeichnis_daten)/$length ) > ($page+1) AND count($verzeichnis_daten)!=0 ) {
    119.     echo '<a href="'.htmlspecialchars($_SERVER['PHP_SELF']).'?page='.($page+1).'">&raquo;</a> ';
    120. }
    121. ?>
    122.  
    lg
     
    Zuletzt bearbeitet: 30.09.2008
    #1      
  2. CIX88

    CIX88 Aktives Mitglied

    Dabei seit:
    06.04.2006
    Beiträge:
    814
    Geschlecht:
    männlich
    Ort:
    GR
    Login - Jeder hat nurauf seinen Ordner Zugriff
    AW: Login - Jeder hat nurauf seinen Ordner Zugriff

    Dann musst du eben in deinen Script eine zusätzliche Abfrage nach user_id reinmachen.
    Ich weis nicht wie du jetzt die Zuordnung Order <-> User angelegt hast.
    Aber irgendwo muss das ja definiert sein, oder ?
     
    #2      
  3. Hansi05

    Hansi05 Aktives Mitglied

    Dabei seit:
    18.06.2006
    Beiträge:
    623
    Geschlecht:
    männlich
    Login - Jeder hat nurauf seinen Ordner Zugriff
    AW: Login - Jeder hat nurauf seinen Ordner Zugriff

    Nick = Ordnername

    Und so kommt der User in seinen Ordner:

    PHP:
    1.  
    2. header("Location: http://d1.dntm.de/".$_SESSION["user_nickname"]."/");
    3.  
     
    #3      
  4. CIX88

    CIX88 Aktives Mitglied

    Dabei seit:
    06.04.2006
    Beiträge:
    814
    Geschlecht:
    männlich
    Ort:
    GR
    Login - Jeder hat nurauf seinen Ordner Zugriff
    AW: Login - Jeder hat nurauf seinen Ordner Zugriff

    Jo dann wäre jetzt mein erster Gedanke nach dem Nick abzufragen, bevor der User den Ordner betritt. Je nachdem wie deine Datei-Struktur der PHP-Dateien aufgebaut ist, muss ich allen Dateien, wo auf den User-Ordner zugegriffen wird, einfach nur eine Abfrage rein. Stimmt die Abfrage (z.B. SESSION Nickname == Ordnername), so kann der User erst dann den Ordner sehen, betreten oder wie auch immer.
    Naja, das wären jetzt meine ersten Überlegungen ...
     
    #4      
  5. Hansi05

    Hansi05 Aktives Mitglied

    Dabei seit:
    18.06.2006
    Beiträge:
    623
    Geschlecht:
    männlich
    Login - Jeder hat nurauf seinen Ordner Zugriff
    AW: Login - Jeder hat nurauf seinen Ordner Zugriff

    Ok, sieht logisch aus, kannst Du mir den Code dazu mal bitte geben? Ich bin ein totaler Noob, hab das fast alles nur kopiert und bissel angepasst :eek:

    Habs mir mal in etwas so gedacht:

    PHP:
    1.  
    2. if (!isset ($_SESSION[admin]Max==["user_nickname"]))
    3.  
    Weiß halt net wie ich das mit dem Ordner schreiben soll^^
     
    Zuletzt bearbeitet: 30.09.2008
    #5      
  6. CIX88

    CIX88 Aktives Mitglied

    Dabei seit:
    06.04.2006
    Beiträge:
    814
    Geschlecht:
    männlich
    Ort:
    GR
    Login - Jeder hat nurauf seinen Ordner Zugriff
    AW: Login - Jeder hat nurauf seinen Ordner Zugriff

    Ne Code kann ich nicht wirklich geben, da ich deine Script-Struktur (Aufbau deiner PHP-Datein etc.) nicht kenne. Ich kann dir max. das Grundprinzip liefern. Den Rest musst du auf deine Verhältnisse anpassen.

    Folgene Zeilen im Blindflug :)

    wenn das vorhanden ist:
    PHP:
    1.  
    2. header("Location: http://d1.dntm.de/".$_SESSION["user_nickname"]."/");
    3.  
    dann liegt im jeweiligen Ordner vielelicht eine index.php oder ?
    Und hier müsste man abfragen ob $_SESSION["user_nickname"] auch der aktuelle Ordner ist.

    Vielleicht irgendwie so:
    PHP:
    1.  
    2. if ( stristr( $_SESSION['user_nickname'],getcwd() ) ) {
    3.  // alles ok
    4. } else {
    5.  // ist im falchen Ordner, umleitung zur Hauptseite
    6.  Header("Location: /");
    7.  exit;
    8.  
    ( ist jetzt frei Schnautze getippt, ungetestet )

    Den aktuellen Ordner kannst du damit auslesen:
    PHP: getcwd - Manual
    Vielleicht geht hier eine Kombination mit basename(getcwd());

    Da ich jetzt davon ausgehe, dass du kein Templates-System benutzt, erspare ich mir jetzt andere Beispiele.
     
    #6      
x
×
×