Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „Login - Jeder hat nurauf seinen Ordner Zugriff“

Hansi05

Aktives Mitglied

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:
<?php 
session_start (); 
if (!isset ($_SESSION["user_id"])) 
{ 
  header ("Location: ../index.php"); 
} 
?>
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:
<? 
if(uploadmoeglichkeitpruefen()==false){
    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>';
     exit;    
}
if(file_exists($img_path_up)==false OR $img_path_up ==''){
    echo '<div style="color:red;">Es gibt kein Ordner wohin die Bilder geladen werden sollen!</div>';
    exit;

}
?>
    <br>
    <strong>File Upload</strong><br>
    <br>
<?
if($_POST["senden"]==1){ 
    $filename = ""; 
    if ($_FILES['userfile']['tmp_name']<> 'none'){    
        $file = $_FILES['userfile']['name']; 
        $temp = $_FILES['userfile']['tmp_name']; 
        $path_parts = pathinfo($file); 
        if(!isset($path_parts["extension"])) $path_parts["extension"]=''; 
        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; 
        if($upload_erlaubnis == 0) $ist_bild=1;        
        if($ist_bild==0) {  
            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>'; 
        } else {
            if($path_parts["extension"]!=""){
                $filename = "datei_" . time() . "." . $path_parts["extension"]; 
                if($_FILES['userfile']['size'] <= $groessemax*1024){
                    if(decoct(fileperms($img_path_up))==40777){
                        if(@copy($temp, $img_path_up.$filename)){ 
                            echo '<div style="color:green;">Datei ist auf den Server!<br>'; 
                            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>'; 
                        } else {
                            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>';
                        }
                    } else {
                        echo '<div style="color:red;">Der Upload Ordner hat keine Schreibrechte! <a href="'.$_SERVER['PHP_SELF'].'">Noch mal versuchen...</a><br><br></div>';
                    }
                } else {
                    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>';
                }
            } 
        }
    } 
} else { 
?> 
<form method="post" enctype="multipart/form-data" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
    <input type="hidden" value="1" name="senden">
    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>
    <input name="userfile" type="file" size="40"><br><br>
    <input type="submit" name="action" value="Speichern">
</form> 
<? } ?>
<br><strong>File List</strong><br><br> 
<?
if($_GET["loechen"]==1 AND $_GET["file"]!=''){
    if(@file_exists($img_path_up.$_GET["file"])==true){
        $type = explode(".", $bilder_path_thumbnail.$_GET["tn"]);
        if($type[count($type)-1] == 'gif' OR $type[count($type)-1] == 'jpeg' OR $type[count($type)-1] == 'png' OR $type[count($type)-1] == 'jpg'){
            if(@unlink($bilder_path_thumbnail.$_GET["tn"])==false) echo '<div style="color:green;">Das Thumbnail konnte nicht geloescht werden!<br><br></div>';
        } 
    
        if(@unlink($img_path_up.$_GET["file"])==true) echo '<div style="color:green;">Die Datei wurde erfolgreich geloescht!<br><br></div>';
        else echo '<div style="color:red;">Die Datei konnte nicht geloescht werden.<br><br></div>';
    } else {
        echo '<div style="color:red;">Die Datei gibt es nicht im Upload Verzeichnis!<br><br></div>';
    }
}
?>
<table border="0" bordercolor="Gray" bgcolor="DarkGray" cellspacing="2" cellpadding="2" width="500">
    <tr align="middle" bgcolor="Gainsboro" style="font-weight:bold">
        <td><SPAN class="fett">File</SPAN></td>
        <td><SPAN class="fett">Größe</SPAN></td>
        <td><SPAN class="fett">Letzte Änderung</SPAN></td>
        <td><SPAN class="fett">Aktion</SPAN></td>
    </tr>
<?
$page = isset($_GET['page']) ? $_GET['page'] : 0; 
$offset = 0;
$offset = $page * $length;
$verzeichnis_daten = array();
$fp = opendir ($img_path_up);
while (false !== ($file = readdir($fp))) {
    if (filetype($img_path_up.$file)!="dir"){
        $verzeichnis_daten[] = $file;
    }
}
closedir($fp);
asort($verzeichnis_daten);
for ($i = $offset; $i < $offset+$length AND $i < count($verzeichnis_daten); $i++) {
    echo '<tr bgcolor="Gainsboro">';
    $type_check = explode(".",$verzeichnis_daten[$i]);
    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')){
        $typ=thumbnail($verzeichnis_daten[$i], $img_path_up , $bilder_path_thumbnail, $thumbnail_neuebreite );
        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>'; 
        else echo '    <td><a href="http://'.htmlspecialchars($_SERVER['HTTP_HOST']).$path.$verzeichnis_daten[$i].'"  target="_blank">'.$verzeichnis_daten[$i].'</a></td>';
    } else {
        echo '    <td><a href="http://'.htmlspecialchars($_SERVER['HTTP_HOST']).$path.$verzeichnis_daten[$i].'"  target="_blank">'.$verzeichnis_daten[$i].'</a></td>';
    }    
    echo '    <td>'.fs_convert($img_path_up.$verzeichnis_daten[$i],2).'</td>';
    echo '    <td>'.date("d.m.Y H:i", last_change($img_path_up.$verzeichnis_daten[$i])).'</td>';
    echo '    <td><a href="'.htmlspecialchars($_SERVER["PHP_SELF"]).'?file='.$verzeichnis_daten[$i].'&tn=TN'.$verzeichnis_daten[$i].'&loechen=1" >Löschen</td>';
    echo '</tr>';
}
if(count($verzeichnis_daten)==0){
    echo '<tr bgcolor="Gainsboro">';
    echo '    <td colspan="4">Es ist noch keine Datei im Upload Ordner.</td>';
    echo '</tr>';
}
echo '</table>';

if ($page > 0 AND count($verzeichnis_daten)!=0) {
    echo '<a href="'.htmlspecialchars($_SERVER['PHP_SELF']).'?page='.($page-1).'">&laquo;</a> ';
}
if (( count($verzeichnis_daten)/$length ) > ($page+1) AND count($verzeichnis_daten)!=0 ) {
    echo '<a href="'.htmlspecialchars($_SERVER['PHP_SELF']).'?page='.($page+1).'">&raquo;</a> ';
}
?>

lg
 
Zuletzt bearbeitet:

CIX88

Aktives Mitglied

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 ?
 

Hansi05

Aktives Mitglied

AW: Login - Jeder hat nurauf seinen Ordner Zugriff

Nick = Ordnername

Und so kommt der User in seinen Ordner:

PHP:
header("Location: http://d1.dntm.de/".$_SESSION["user_nickname"]."/");
 

CIX88

Aktives Mitglied

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 ...
 

Hansi05

Aktives Mitglied

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:
if (!isset ($_SESSION[admin]Max==["user_nickname"]))

Weiß halt net wie ich das mit dem Ordner schreiben soll^^
 
Zuletzt bearbeitet:

CIX88

Aktives Mitglied

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:
header("Location: http://d1.dntm.de/".$_SESSION["user_nickname"]."/");
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:
if ( stristr( $_SESSION['user_nickname'],getcwd() ) ) {
 // alles ok
} else {
 // ist im falchen Ordner, umleitung zur Hauptseite
 Header("Location: /");
 exit;
( 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.
 
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

Flatrate für Tutorials, Assets, Vorlagen

Statistik des Forums

Themen
175.158
Beiträge
2.581.872
Mitglieder
67.225
Neuestes Mitglied
Petra
Oben