• 31-08-2013, 17:16:31
    #1
    Arkadaşlar session ile basit bir üye girişi ve ürün ekleme düzenleme gibi seçenekleri olan sistem hazırlamaya çalışıyorum. Yaşadığım bir takım sıkıntılar var.

    İlk sorunum;

    Üye girişi yaptıktan sonra profilde alttaki kod ile profil düzenle linkini çıkarıyorum.

    <?php 
    $psahibi = $_SESSION["id"];
    if($psahibi==$id) {
    echo '<a href="index.php?profilduzenle" class="pduzenle">Profil Düzenle</a>';
    }else {
    echo "";
    }
    ?>
    Burada ki sorun şu. Mesela 1. numaralı üye ayşe 2. numaralı üye fatmanın profiline girince bu link yine çıkıyor. Profil düzenle linkine tıklayınca 1. numaralı üye 2.numaralı üyenin profill bilgilerini düzenliyor.


    Diğer sorunum ise profil sayfasında alttaki kod ile üyenin eklediği ürünlerin listeliyorum.

    <?php
    $urunBul = mysql_query("select * from urunler where urun_ekleyen='$id'");
    $urunSay = mysql_num_rows($urunBul);
    if($urunSay>0 ) {
    
    while($urunGoster = mysql_fetch_array($urunBul)) {
    ?>
    <li><a href="index.php?urun&url=<?php echo $urunGoster[urun_sef]; ?>" class="purunler1"><?php echo $urunGoster[urun_adi]; ?></a>
    <?php
    if($profilsahibi == $id) {
    ?>
    <a href="index.php?urunduzenle&id=<?php echo $urunGoster[id]; ?>" class="uduzenle">+ Düzenle</a>
    || <a href="index.php?urunsil&id=<?php echo $urunGoster[id]; ?>" class="usil">+ Sil</a>
    </li>
    
    <?php }else {
    echo "";
    }}}else {
    echo "<li>Profil Sahibi Hiç Ürün Eklememiştir.</li>";
    } ?>
    Burada ki sorunum ise ürünü 1. numaralı üye eklemiş ama 2. numaralı üye o listeye baktığında yine ürün düzenle menüsü aktif oluyor. Ürünü düzenle diyerek kendi eklemediği ürünleri tamamen düzenleyebiliyor.

    Bu sorunları nasıl çözerim arkadaşlar yardımcı olursanız sevinirim.
  • 31-08-2013, 19:09:23
    #2
    $_SESSION["id"]'ye giriş yapan kullanıcının id'sini atamanız gerekiyor. Yani sorun büyük ihtimalle üye giriş sayfanızda. Yani $_SESSION["id"] oluşturduğunuz sayfa.
  • 31-08-2013, 19:46:11
    #3
    Hocam kayıt sayfası kodları burada yer alıyor.

    if(isset($_GET[giris])) {
    $kadi = gvn($_POST[kadi]);
    $sifr = gvn($_POST[sifre]);
    $sifre = base64_encode($sifr);
    if(empty($kadi) || empty($sifre)) {
    echo "Giriş Yapabilmeniz için email ve şifrenizi girmeniz gerekmektedir.";
    echo '<meta http-equiv="refresh" content="1;URL=index.php">';
    }else{
    if (preg_match("/[\-]{2,}|[;]|[']|[\\\*]/", $kadi)) {
    
    echo '<meta http-equiv="refresh" content="0;URL=index.php">';
    }else {
    $uyeBul = mysql_query("select * from uyeler where kadi='$kadi' && sifre='$sifre'");
    $uyeSay = mysql_num_rows($uyeBul);
    if($uyeSay>0) {
    $uyeGoster = mysql_fetch_array($uyeBul);
    
    echo "Başarı İle Giriş Yapıldı Yönlendiriliyorsunuz.";
    echo '<meta http-equiv="refresh" content="1;URL=index.php">';
    $_SESSION["oturum"] = true;
    $_SESSION["id"] = $uyeGoster[id];
    $_SESSION["kadi"] = $uyeGoster[kadi];
    }else {
    echo "Email veya Şifre Hatalı Lütfen Tekrar Deneyiniz.";
    echo '<meta http-equiv="refresh" content="1;URL=index.php">';
    }
    }
  • 01-09-2013, 13:27:20
    #4
    Sessionları başlattıktan sonra yönlendirme yapın.
  • 02-09-2013, 01:51:37
    #5
    Hocam kendime ait kullanıcı adım aktif oldu. Burdan yazayım dedim.

    Session başlangıç kodunu sayfanın en üstüne config dosyasıyla birlikte kullanmışım zaten.

    Sayfa başındaki kod;

    <?php session_start(); include("dbbaglan.php"); ?>
  • 02-09-2013, 03:08:18
    #6
    burda yazılan soru mu hatalı verilen cevaplar mı ben bir ürün ekledim siteye üyeyim baska üye olan bir kişi benim eklediğim ürünleri değiştirebiliyor veya benim profilime erişip düzenleme yapabiliyor bunu engellemek istiyorsunuz sanırım

    düzenlemeye çalışılan profilin bir id si vardır bu id ile benim id im aynımı kontrol edersin eğer aynı ise düzenlemesine izin verirsin değilse düzenlemesi izinsiz olur yani düzenleme yapılan alana ufak bir if sorgusu ile profil düzenlemeyi engelleyebilirsiniz


    if($duzenlenecek_profil_id==$psahibi ){
    //dizenleme yapabilirsiniz ve düzenleme kodları artık burda yer alır

    }else{
    echo 'Bu Profili Düzenlemeye yetkiniz Yoktur';
    }


    2. soruya gelirsek yine aynı mantıkla yapabilirsiniz yine düzenleme yapılabilen alana gelip ben mi ekledim diye kontrol edersiniz

    öncelikle düzenleme çıkmaması için orda ekleen kişi ben miyim kontrolü yaparsınız

    if($urun_ekleyen==$psahibi){
    //düzenleme yapabileceği sayfa

    }else{
    echo 'Bu sayfayı düzenlemeye yetkiniz yok';

    }

    düzenle linki ve düzenleme yapabilme yetkisi olup olmadığınıda bu şekilde kontrol edebilirsiniz
  • 02-09-2013, 09:52:19
    #7
    Eklenen ürünlerde ekleyen kullanıcının id sini tutup session da tuttuğunuz kullanıcı id si ile eş olup olmadığını kontrol ettirirsiniz. Eğer eşitse işlem yaptırır değilse yaptırmazsınız. @asimavi50 zaten anlatmış nasıl yapılacağını.
  • 02-09-2013, 14:00:28
    #8
    asimavi50 adlı üyeden alıntı: mesajı görüntüle
    burda yazılan soru mu hatalı verilen cevaplar mı ben bir ürün ekledim siteye üyeyim baska üye olan bir kişi benim eklediğim ürünleri değiştirebiliyor veya benim profilime erişip düzenleme yapabiliyor bunu engellemek istiyorsunuz sanırım

    düzenlemeye çalışılan profilin bir id si vardır bu id ile benim id im aynımı kontrol edersin eğer aynı ise düzenlemesine izin verirsin değilse düzenlemesi izinsiz olur yani düzenleme yapılan alana ufak bir if sorgusu ile profil düzenlemeyi engelleyebilirsiniz


    if($duzenlenecek_profil_id==$psahibi ){
    //dizenleme yapabilirsiniz ve düzenleme kodları artık burda yer alır

    }else{
    echo 'Bu Profili Düzenlemeye yetkiniz Yoktur';
    }


    2. soruya gelirsek yine aynı mantıkla yapabilirsiniz yine düzenleme yapılabilen alana gelip ben mi ekledim diye kontrol edersiniz

    öncelikle düzenleme çıkmaması için orda ekleen kişi ben miyim kontrolü yaparsınız

    if($urun_ekleyen==$psahibi){
    //düzenleme yapabileceği sayfa

    }else{
    echo 'Bu sayfayı düzenlemeye yetkiniz yok';

    }

    düzenle linki ve düzenleme yapabilme yetkisi olup olmadığınıda bu şekilde kontrol edebilirsiniz

    Hocam sorularımı doğru anlamışsın fakat yazdığın kodları zaten kullanmıştım. İlk mesaja bakarsan orada yer alıyor kodlar.
  • 02-09-2013, 14:33:16
    #9
    Üyeliği durduruldu
    if(isset($_GET[giris])) {
    $kadi = gvn($_POST[kadi]);
    $sifr = gvn($_POST[sifre]);
    $sifre = base64_encode($sifr);
    if(empty($kadi) || empty($sifre)) {
    echo "Giriş Yapabilmeniz için email ve şifrenizi girmeniz gerekmektedir.";
    echo '<meta http-equiv="refresh" content="1;URL=index.php">';
    }else{
    if (preg_match("/[\-]{2,}|[;]|[']|[\\\*]/", $kadi)) {
    
    echo '<meta http-equiv="refresh" content="0;URL=index.php">';
    }else {
    $uyeBul = mysql_query("select * from uyeler where kadi='$kadi' && sifre='$sifre'");
    $uyeSay = mysql_num_rows($uyeBul);
    if($uyeSay>0) {
    $uyeGoster = mysql_fetch_array($uyeBul);
    
    echo "Başarı İle Giriş Yapıldı Yönlendiriliyorsunuz.";
    $_SESSION["oturum"] = true;
    $_SESSION["id"] = $uyeGoster[id];
    $_SESSION["kadi"] = $uyeGoster[kadi];
    echo '<meta http-equiv="refresh" content="1;URL=index.php">';
    }else {
    echo "Email veya Şifre Hatalı Lütfen Tekrar Deneyiniz.";
    echo '<meta http-equiv="refresh" content="1;URL=index.php">';
    }
    }
    Yukarıda @msgr sözle bahsetmiş ama anlaşılmamış sanırım. Şu kodları kullanarak giriş sayfasını düzenleyip bir de öyle dener misiniz.

    Ayrıca

    if($psahibi==$id)
    Şu kısımdaki $id değişkenini de doğru tanımladığınızdan emin olun. $psahibi şu anda giriş yapmış kullanıcı olduğuna göre $id de görüntülenen profilin id si olması gerek. Umarım doğru atamayı yapmışsınızdır.

    Yine de bunlarda eminim diyorsanız üyelik düzenleme sayfasında ve/veya ürün ekleme sayfasında $psahibi ve $id değişkenlerini ekrana yazdırın bakalım doğru değerleri tutuyor mu ? Çözüme ulaşamazsanız bana ulaşın beraber bakalım.

    Düzenleme : Dikkatimi çekti mysql sorgusunda && kullanmışsınız. Kullanım yanlış değil tabii ama bence && yerine AND kullansanız daha hoş olur.