• 28-01-2024, 14:16:52
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Arkadaşlar selamlar.

    Bir projem için bir web sitesi yaptım yalnız takıldığım bazı noktalar var.
    İlk öncelikle siteye girişte bir login ekranı geliyor. Burası tek ortak giriş ekranı. Buradan giriş yaptıktan sonra üyeleri gösteren ekranlar yer alacak. Her üye kendi ismine tıklayıp kendi şifresini girdiğinde açılacak olan sayfada kendisine ait olan dosyayı indirecek.
    Mesela örnek;
    1. Kullanıcı listeden kendi ismine tıkladığında açılan sayfada kendi izni olan dosyaları görüp indirebilecek.
    Admin ise giriş yaptıktan sonra tüm dosyalara erişebilecek.

    Ortak giriş ekranı.


    Ortak şifreyle giriş yapınca anasayfaya yönlendiriyorum gelen ekran;


    Herhangi birinin üstüne tıklayınca tekrar yönetim giriş ekranı geliyor.


    Giriş yapıldığında ise panele giriş yapılıyor ve dosya.php açılıyor.



    işte buradaki istedğim konu ise A kişisi üstüne tıklayınca dosya.php'den kendisine ait gösterilen dosyaları indirebilmesi, B kişisi de aynı şekilde giriş yaptığında dosya.php'de sadece kendisine ait izni olan dosyaları görüp de indirebilmesi. Admin ise dosya.php'deki tüm dosyaları görüp indirebilmesi.

    bunu hangi sistemle yapabilirim? veya yardımcı olabilecek birisi var mıdır?
  • 28-01-2024, 14:21:06
    #2
    dosyaları veritabanına eklerken izin verilen user_id leri de ekleyin ona göre db sorgusu yazın
  • 28-01-2024, 14:22:59
    #3
    akosetr adlı üyeden alıntı: mesajı görüntüle
    dosyaları veritabanına eklerken izin verilen user_id leri de ekleyin ona göre db sorgusu yazın
    izin verilen user idleri nasıl halledeceğim hocam? Takıldığım nokta burası
  • 28-01-2024, 14:24:32
    #4
    Admin panelinden dosya eklerken bir tane selectboxunuz olsun, bu selectboxa userleri foreach ile yazdırın valueleri de id değerleri olsun.
    Dosya eklemek için post attığınızda selectboxtan gelen değere göre kayıt yaparsınız.
  • 28-01-2024, 14:26:16
    #5
    Dosya yüklenilen sayfa kodları bu şekilde.

    
    <?php
        session_start();
        include("ayar.php");
    
        if ($_SESSION["giris"] != sha1(md5("var")) || $_COOKIE["akullanici"] != "msb") {
            header("Location: cikis.php");
        }
    
        $islem = $_GET["islem"];
    
        if ($islem == "sil") {
            $id = $_GET["id"];
            $sorgu = $baglan->query("delete from portfolyo where (id='$id')");
            echo "<script> window.location.href='portfolyo.php'; </script>";
        }
    
        if ($islem == "ekle") {
            $baslik = $_POST["baslik"];
            $resim = "img/".$_FILES["resim"][name];
            move_uploaded_file($_FILES["resim"][tmp_name], $resim);
            $sorgu = $baglan->query("insert into portfolyo (baslik,resim) values ('$baslik','../$resim')");
            echo "<script> window.location.href='portfolyo.php'; </script>";
        }
    
    ?>
    <!doctype html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>Yönetim Paneli Dosya</title>
    </head>
    <body style="text-align:center;">
    
        <div style="text-align:center;">
            <a href="anasayfa.php">ANA SAYFA</a> - <a href="portfolyo.php">DOSYALAR</a> - <a href="hakkimizda.php">HAKKIMIZDA</a> - <a href="hizmetlerimiz.php">HİZMETLERİMİZ</a> - <a href="projelerimiz.php">PROJELERİMİZ</a> - <a href="cikis.php" onclick="if (!confirm('Çıkış Yapmak İstediğinize Emin misiniz?')) return false;">ÇIKIŞ</a>
            <br><hr><br><br>
        </div>
    
        <table width="100%" border="1">
            <tr align="center">
                <th>S. No</th>
                <th>Başlık</th>
                <th>Sil</th>
            </tr>
            <?php
                $sirano = 0;
                $sorgu = $baglan->query("select * from portfolyo");
                while ($satir = $sorgu->fetch_object()) {
                    $sirano++;
                    echo "<tr align='center'>
                    <td>$sirano</td>
                    <td>$satir->baslik</td>
                    <td><a href='portfolyo.php?islem=sil&id=$satir->id'>Sil</td>
                    </tr>";
                }
            ?>
        </table>
    
        <br><br>
    
        <form action="portfolyo.php?islem=ekle" enctype="multipart/form-data" method="post">
            <b>Başlık:</b><input type="text" size="20" name="baslik">
            <b>Resim:</b><input type="file" name="resim">
            <input type="submit" value="Kaydet">
        </form>
    
    
    
        
    
    </body>
    </html>
  • 28-01-2024, 14:28:30
    #6
    @akosetr;
  • 29-01-2024, 11:34:29
    #7
    Her şeyden önce umarım bu henüz bitmemiş bir projedir. Bu şekilde yayınlarsan güvenlik açıkları büyük problem yaratabilir. Güvenlik önlemlerini alman gerekiyor. Senin örneklerine göre cevap vermeye çalıştım, PDO çevirirsen daha iyi olur en azından.

    Öncelikle portfolyo tablona kullanıcının id değeri için user_id adında bir sütun açmalısın. Sonrasında veri kaydettiğin formu şu şekilde düzenlemelisin:
    <form action="portfolyo.php?islem=ekle" enctype="multipart/form-data" method="post">
            <b>Başlık:</b><input type="text" size="20" name="baslik">
            <b>Resim:</b><input type="file" name="resim">
            <select name="user_id" id="user_id">
                <?php
                $sql = "SELECT * FROM kullanici_tablosu"; //tablo adını güncellersin.
                $cikti = $baglan->query($sql);
                if ($cikti->num_rows > 0) {
                    while($sonuc = $cikti->fetch_assoc()) {
                        echo "<option value='".$sonuc['id']."'>".$sonuc['user_name']."</option>";
                    }
                } else {
                    echo "<option value=''>Kullanıcı bulunamadı.</option>";
                }
                ?>
            </select>
            <input type="submit" value="Kaydet">
        </form>
    islem==ekle kısmını şöyle düzenlemelisin:
    if ($islem == "ekle") {
            $baslik = $_POST["baslik"];
            $resim = "img/".$_FILES["resim"][name];
            move_uploaded_file($_FILES["resim"][tmp_name], $resim);
            $user_id = $_POST['user_id'];
            $sorgu = $baglan->query("insert into portfolyo (baslik,resim,user_id) values ('$baslik','../$resim','$user_id')");
            echo "<script> window.location.href='portfolyo.php'; </script>";
        }
    Son olarak tabloyu da şu şekilde güncellersen, istediğin sonuca varırsın diye düşünüyorum:

    <table width="100%" border="1">
        <tr align="center">
            <th>S. No</th>
            <th>Başlık</th>
            <th>Sil</th>
        </tr>
        <?php
            $aktif_kullanici = $_SESSION['id']; //burada giriş yapılınca id değerini oturumda saklayarak bu sayfada aktif kullanıcının verilerini listeledik. Bunun için giriş yapılırken id değerini sessiona ataman gerek.
            $sirano = 0;
            $sorgu = $baglan->query("SELECT * FROM portfolyo WHERE user_id = $aktif_kullanici");
            while ($satir = $sorgu->fetch_object()) {
                $sirano++;
                echo "<tr align='center'>
                    <td>$sirano</td>
                    <td>$satir->baslik</td>
                    <td><a href='portfolyo.php?islem=sil&id=$satir->id'>Sil</td>
                    </tr>";
            }
        ?>
    </table>
  • 29-01-2024, 12:50:32
    #8
    dgknbzglu adlı üyeden alıntı: mesajı görüntüle
    Her şeyden önce umarım bu henüz bitmemiş bir projedir. Bu şekilde yayınlarsan güvenlik açıkları büyük problem yaratabilir. Güvenlik önlemlerini alman gerekiyor. Senin örneklerine göre cevap vermeye çalıştım, PDO çevirirsen daha iyi olur en azından.

    Öncelikle portfolyo tablona kullanıcının id değeri için user_id adında bir sütun açmalısın. Sonrasında veri kaydettiğin formu şu şekilde düzenlemelisin:
    <form action="portfolyo.php?islem=ekle" enctype="multipart/form-data" method="post">
            <b>Başlık:</b><input type="text" size="20" name="baslik">
            <b>Resim:</b><input type="file" name="resim">
            <select name="user_id" id="user_id">
                <?php
                $sql = "SELECT * FROM kullanici_tablosu"; //tablo adını güncellersin.
                $cikti = $baglan->query($sql);
                if ($cikti->num_rows > 0) {
                    while($sonuc = $cikti->fetch_assoc()) {
                        echo "<option value='".$sonuc['id']."'>".$sonuc['user_name']."</option>";
                    }
                } else {
                    echo "<option value=''>Kullanıcı bulunamadı.</option>";
                }
                ?>
            </select>
            <input type="submit" value="Kaydet">
        </form>
    islem==ekle kısmını şöyle düzenlemelisin:
    if ($islem == "ekle") {
            $baslik = $_POST["baslik"];
            $resim = "img/".$_FILES["resim"][name];
            move_uploaded_file($_FILES["resim"][tmp_name], $resim);
            $user_id = $_POST['user_id'];
            $sorgu = $baglan->query("insert into portfolyo (baslik,resim,user_id) values ('$baslik','../$resim','$user_id')");
            echo "<script> window.location.href='portfolyo.php'; </script>";
        }
    Son olarak tabloyu da şu şekilde güncellersen, istediğin sonuca varırsın diye düşünüyorum:

    <table width="100%" border="1">
        <tr align="center">
            <th>S. No</th>
            <th>Başlık</th>
            <th>Sil</th>
        </tr>
        <?php
            $aktif_kullanici = $_SESSION['id']; //burada giriş yapılınca id değerini oturumda saklayarak bu sayfada aktif kullanıcının verilerini listeledik. Bunun için giriş yapılırken id değerini sessiona ataman gerek.
            $sirano = 0;
            $sorgu = $baglan->query("SELECT * FROM portfolyo WHERE user_id = $aktif_kullanici");
            while ($satir = $sorgu->fetch_object()) {
                $sirano++;
                echo "<tr align='center'>
                    <td>$sirano</td>
                    <td>$satir->baslik</td>
                    <td><a href='portfolyo.php?islem=sil&id=$satir->id'>Sil</td>
                    </tr>";
            }
        ?>
    </table>
    user_id db'ye eklendi ve yukarıda verdiğiniz kodlar portfolyo.php içerisine eklendi fakat dosya yukleme butonu görünmüyor.

    <?php
        session_start();
        include("ayar.php");
    
        if ($_SESSION["giris"] != sha1(md5("var")) || $_COOKIE["akullanici"] != "msb") {
            header("Location: cikis.php");
        }
    
        $islem = $_GET["islem"];
    
        if ($islem == "sil") {
            $id = $_GET["id"];
            $sorgu = $baglan->query("delete from portfolyo where (id='$id')");
            echo "<script> window.location.href='portfolyo.php'; </script>";
        }
    
        if ($islem == "ekle") {
            $baslik = $_POST["baslik"];
            $resim = "img/".$_FILES["resim"][name];
            move_uploaded_file($_FILES["resim"][tmp_name], $resim);
            $user_id = $_POST['user_id'];
            $sorgu = $baglan->query("insert into portfolyo (baslik,resim,user_id) values ('$baslik','../$resim','$user_id')");
            echo "<script> window.location.href='portfolyo.php'; </script>";
        }
    
    ?>
    <!doctype html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>Yönetim Paneli Portfolyo</title>
    </head>
    <body style="text-align:center;">
    
       <div style="text-align:center;">
            <a href="anasayfa.php">ANA SAYFA</a> - <a href="portfolyo.php">DOSYALAR</a> - <a href="cikis.php" onclick="if (!confirm('Çıkış Yapmak İstediğinize Emin misiniz?')) return false;">ÇIKIŞ</a>
            <br><hr><br><br>
        </div>
    
        <table width="100%" border="1">
        <tr align="center">
            <th>S. No</th>
            <th>Başlık</th>
            <th>Sil</th>
        </tr>
        <?php
            $aktif_kullanici = $_SESSION['id']; //burada giriş yapılınca id değerini oturumda saklayarak bu sayfada aktif kullanıcının verilerini listeledik. Bunun için giriş yapılırken id değerini sessiona ataman gerek.
            $sirano = 0;
            $sorgu = $baglan->query("SELECT * FROM portfolyo WHERE user_id = $aktif_kullanici");
            while ($satir = $sorgu->fetch_object()) {
                $sirano++;
                echo "<tr align='center'>
                    <td>$sirano</td>
                    <td>$satir->baslik</td>
                    <td><a href='portfolyo.php?islem=sil&id=$satir->id'>Sil</td>
                    </tr>";
            }
        ?>
    </table>
    
        <br><br>
    
       <form action="portfolyo.php?islem=ekle" enctype="multipart/form-data" method="post">
            <b>Başlık:</b><input type="text" size="20" name="baslik">
            <b>Resim:</b><input type="file" name="resim">
            <select name="user_id" id="user_id">
                <?php
                $sql = "SELECT * FROM kullanici_tablosu"; //tablo adını güncellersin.
                $cikti = $baglan->query($sql);
                if ($cikti->num_rows > 0) {
                    while($sonuc = $cikti->fetch_assoc()) {
                        echo "<option value='".$sonuc['id']."'>".$sonuc['user_name']."</option>";
                    }
                } else {
                    echo "<option value=''>Kullanıcı bulunamadı.</option>";
                }
                ?>
            </select>
            <input type="submit" value="Kaydet">
        </form>
    
    
    
        
    
    </body>
    </html>
  • 29-01-2024, 13:12:50
    #9
    WhatsApp

    ulaşırsan bakalım bi.