• 27-11-2019, 12:18:16
    #1
    Merhaba arkadaşlar benim header.php adında dosyamda
    <?php
    ob_start();
    session_start();
    include 'kontrol/baglan.php';
    include 'fonksiyon.php';
    
    $sor=$db->prepare("SELECT * FROM ayar where id=:id");
    $sor->execute(array(
    'id' => 0
    ));
    $cek=$sor->fetch(PDO::FETCH_ASSOC);
    
    $sor=$db->prepare("SELECT * FROM yonetici where kullanici=:kullanici");
    $sor->execute(array(
    'kullanici' => $_SESSION['kullanici']
    ));
    $say=$sor->rowCount();
    $cek=$sor->fetch(PDO::FETCH_ASSOC);
    if ($say==0) {
    Header("Location:login.php?durum=izinsiz");
    exit;
    }
    ?>
    kodu bulunuyor. admin girişinde post edilen kodlar ise
    if (isset($_POST['admingiris'])) {
    
        $kullanici=$_POST['kullanici'];
        $sifre=md5($_POST['sifre']);
    
    $sor=$db->prepare("SELECT * FROM yonetici where kullanici=:kullanici and sifre=:sifre and yetki=:yetki");
    $sor->execute(array(
            'kullanici' => $kullanici,
            'sifre' => $sifre,
            'yetki' => 5
        ));
    
    echo $say=$sor->rowCount();
    
        if ($say==1) {
    
            $_SESSION['kullanici']=$kullanici;
            header("Location:../index.php");
    exit;
    
    } else {
    
            header("Location:../login.php?durum=no");
            exit;
    }
    }
    admin paneline orneksite.com/admin yazınca headerda bulunan Header("Location:login.php?durum=izinsiz"); koduna yönlendiriyor ve kullanıcı adı şifreyi doğru girsemde izinsiz olarak hata veriyor. headerdaki if ($say==0) daki 0 ı 1 yapınca orneksite.com/admin yazıldıgında kullanıcı şifre sormadan direk giriş yapıyor.
    bu sorunu nasıl çözerim acaba


    edit: fonksiyon.php dosyasını soran olursa diye kod yapısını ekliyorum
    <?php
    ob_start();
    session_start();
    
    
    function islemkontrol () {
    
    if (empty($_SESSION['kullanici'])) {
    
    Header("Location:../login.php?durum=izinsiz");
    exit;
    }
    }
    
    
    function seo($str, $options = array())
    {
    $str = mb_convert_encoding((string)$str, 'UTF-8', mb_list_encodings());
    $defaults = array(
    'delimiter' => '-',
    'limit' => null,
    'lowercase' => true,
    'replacements' => array(),
    'transliterate' => true
    );
    $options = array_merge($defaults, $options);
    $char_map = array(
    // Latin
    'À' => 'A', 'Á' => 'A', 'Â' => 'A', 'Ã' => 'A', 'Ä' => 'A', 'Å' => 'A', 'Æ' => 'AE', 'Ç' => 'C',
    'È' => 'E', 'É' => 'E', 'Ê' => 'E', 'Ë' => 'E', 'Ì' => 'I', 'Í' => 'I', 'Î' => 'I', 'Ï' => 'I',
    'Ð' => 'D', 'Ñ' => 'N', 'Ò' => 'O', 'Ó' => 'O', 'Ô' => 'O', 'Õ' => 'O', 'Ö' => 'O', 'Ő' => 'O',
    'Ø' => 'O', 'Ù' => 'U', 'Ú' => 'U', 'Û' => 'U', 'Ü' => 'U', 'Ű' => 'U', 'Ý' => 'Y', 'Þ' => 'TH',
    'ß' => 'ss',
    'à' => 'a', 'á' => 'a', 'â' => 'a', 'ã' => 'a', 'ä' => 'a', 'å' => 'a', 'æ' => 'ae', 'ç' => 'c',
    'è' => 'e', 'é' => 'e', 'ê' => 'e', 'ë' => 'e', 'ì' => 'i', 'í' => 'i', 'î' => 'i', 'ï' => 'i',
    'ð' => 'd', 'ñ' => 'n', 'ò' => 'o', 'ó' => 'o', 'ô' => 'o', 'õ' => 'o', 'ö' => 'o', 'ő' => 'o',
    'ø' => 'o', 'ù' => 'u', 'ú' => 'u', 'û' => 'u', 'ü' => 'u', 'ű' => 'u', 'ý' => 'y', 'þ' => 'th',
    'ÿ' => 'y',
    // Latin symbols
    '©' => '(c)',
    // Greek
    'Α' => 'A', 'Β' => 'B', 'Γ' => 'G', 'Δ' => 'D', 'Ε' => 'E', 'Ζ' => 'Z', 'Η' => 'H', 'Θ' => '8',
    'Ι' => 'I', 'Κ' => 'K', 'Λ' => 'L', 'Μ' => 'M', 'Ν' => 'N', 'Ξ' => '3', 'Ο' => 'O', 'Π' => 'P',
    'Ρ' => 'R', 'Σ' => 'S', 'Τ' => 'T', 'Υ' => 'Y', 'Φ' => 'F', 'Χ' => 'X', 'Ψ' => 'PS', 'Ω' => 'W',
    'Ά' => 'A', 'Έ' => 'E', 'Ί' => 'I', 'Ό' => 'O', 'Ύ' => 'Y', 'Ή' => 'H', 'Ώ' => 'W', 'Ϊ' => 'I',
    'Ϋ' => 'Y',
    'α' => 'a', 'β' => 'b', 'γ' => 'g', 'δ' => 'd', 'ε' => 'e', 'ζ' => 'z', 'η' => 'h', 'θ' => '8',
    'ι' => 'i', 'κ' => 'k', 'λ' => 'l', 'μ' => 'm', 'ν' => 'n', 'ξ' => '3', 'ο' => 'o', 'π' => 'p',
    'ρ' => 'r', 'σ' => 's', 'τ' => 't', 'υ' => 'y', 'φ' => 'f', 'χ' => 'x', 'ψ' => 'ps', 'ω' => 'w',
    'ά' => 'a', 'έ' => 'e', 'ί' => 'i', 'ό' => 'o', 'ύ' => 'y', 'ή' => 'h', 'ώ' => 'w', 'ς' => 's',
    'ϊ' => 'i', 'ΰ' => 'y', 'ϋ' => 'y', 'ΐ' => 'i',
    // Turkish
    'Ş' => 'S', 'İ' => 'I', 'Ç' => 'C', 'Ü' => 'U', 'Ö' => 'O', 'Ğ' => 'G',
    'ş' => 's', 'ı' => 'i', 'ç' => 'c', 'ü' => 'u', 'ö' => 'o', 'ğ' => 'g',
    // Russian
    'А' => 'A', 'Б' => 'B', 'В' => 'V', 'Г' => 'G', 'Д' => 'D', 'Е' => 'E', 'Ё' => 'Yo', 'Ж' => 'Zh',
    'З' => 'Z', 'И' => 'I', 'Й' => 'J', 'К' => 'K', 'Л' => 'L', 'М' => 'M', 'Н' => 'N', 'О' => 'O',
    'П' => 'P', 'Р' => 'R', 'С' => 'S', 'Т' => 'T', 'У' => 'U', 'Ф' => 'F', 'Х' => 'H', 'Ц' => 'C',
    'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Sh', 'Ъ' => '', 'Ы' => 'Y', 'Ь' => '', 'Э' => 'E', 'Ю' => 'Yu',
    'Я' => 'Ya',
    'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'yo', 'ж' => 'zh',
    'з' => 'z', 'и' => 'i', 'й' => 'j', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o',
    'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c',
    'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sh', 'ъ' => '', 'ы' => 'y', 'ь' => '', 'э' => 'e', 'ю' => 'yu',
    'я' => 'ya',
    // Ukrainian
    'Є' => 'Ye', 'І' => 'I', 'Ї' => 'Yi', 'Ґ' => 'G',
    'є' => 'ye', 'і' => 'i', 'ї' => 'yi', 'ґ' => 'g',
    // Czech
    'Č' => 'C', 'Ď' => 'D', 'Ě' => 'E', 'Ň' => 'N', 'Ř' => 'R', 'Š' => 'S', 'Ť' => 'T', 'Ů' => 'U',
    'Ž' => 'Z',
    'č' => 'c', 'ď' => 'd', 'ě' => 'e', 'ň' => 'n', 'ř' => 'r', 'š' => 's', 'ť' => 't', 'ů' => 'u',
    'ž' => 'z',
    // Polish
    'Ą' => 'A', 'Ć' => 'C', 'Ę' => 'e', 'Ł' => 'L', 'Ń' => 'N', 'Ó' => 'o', 'Ś' => 'S', 'Ź' => 'Z',
    'Ż' => 'Z',
    'ą' => 'a', 'ć' => 'c', 'ę' => 'e', 'ł' => 'l', 'ń' => 'n', 'ó' => 'o', 'ś' => 's', 'ź' => 'z',
    'ż' => 'z',
    // Latvian
    'Ā' => 'A', 'Č' => 'C', 'Ē' => 'E', 'Ģ' => 'G', 'Ī' => 'i', 'Ķ' => 'k', 'Ļ' => 'L', 'Ņ' => 'N',
    'Š' => 'S', 'Ū' => 'u', 'Ž' => 'Z',
    'ā' => 'a', 'č' => 'c', 'ē' => 'e', 'ģ' => 'g', 'ī' => 'i', 'ķ' => 'k', 'ļ' => 'l', 'ņ' => 'n',
    'š' => 's', 'ū' => 'u', 'ž' => 'z'
    );
    $str = preg_replace(array_keys($options['replacements']), $options['replacements'], $str);
    if ($options['transliterate']) {
    $str = str_replace(array_keys($char_map), $char_map, $str);
    }
    $str = preg_replace('/[^p{L}p{Nd}]+/u', $options['delimiter'], $str);
    $str = preg_replace('/(' . preg_quote($options['delimiter'], '/') . '){2,}/', '$1', $str);
    $str = mb_substr($str, 0, ($options['limit'] ? $options['limit'] : mb_strlen($str, 'UTF-8')), 'UTF-8');
    $str = trim($str, $options['delimiter']);
    return $options['lowercase'] ? mb_strtolower($str, 'UTF-8') : $str;
    }
    
    ?>
  • 27-11-2019, 12:22:18
    #2
    $say == 0 ise oraya yönlendiriyor tamam yani kayıt yok
    kayıt olduğu else durumunu yazmamışsınız ama

    örn:
    if ($say==0) {
    Header("Location:login.php?durum=izinsiz");
    exit;
    }else{
    Header("Location:login.php?durum=izinli");
    
    }
  • 27-11-2019, 12:31:42
    #3
    ufukguler1574 adlı üyeden alıntı: mesajı görüntüle
    $say == 0 ise oraya yönlendiriyor tamam yani kayıt yok
    kayıt olduğu else durumunu yazmamışsınız ama

    örn:
    if ($say==0) {
    Header("Location:login.php?durum=izinsiz");
    exit;
    }else{
    Header("Location:login.php?durum=izinli");
    
    }
    hocam olmuyor öylede ve normal bi şekilde site.com/admin diye girdiğimdede hemen uzantı site.com/admin/login.php?durum=izinsiz oluyor
  • 27-11-2019, 12:34:38
    #4
    logomerkezi adlı üyeden alıntı: mesajı görüntüle
    hocam olmuyor öylede ve normal bi şekilde site.com/admin diye girdiğimdede hemen uzantı site.com/admin/login.php?durum=izinsiz oluyor
    çünkü ilk attığınız kod bloğunda herhangi bir kontrol yapılmadan direkt sql sorguları çalışıyor ve otomatikmen izinsiz diye yönlendiriliyor. mesela bi kullanıcı adı şifre kontrolü yapıp ondan sonra oralar çalışmalı.
    Bu kontrolleri 2.attığınız kod bloğunda yapıyorsunuz ama. Durum buyken 1.kod bloğunun işlevi nedir mesela tam çözemedim. Kurduğunuz mantıkta bir sorun var sanırsam tekrar düşünerek kodlayın isterseniz.



    header üzerinde yapılması gereken şey obstart ve sessionstart verildikten sonra $_SESSION['login'] tarzı bir tanımlamanın true olup olmamasını kontrol edersiniz. Eğer false ise içeri girmesine izin vermez ve login ekranı yükler mesela. Eğer true ise zaten giriş yapmıştır ve sayfaya erişimi sağlanır



    örnek header
    if (isset($_SESSION["login"])) {
    header('Location: login.php');
    }else{
    header('Location: hesap.php');
    }

    giriş yaparkende
    if ( ! empty( $_POST["login"]) ) {
    $_SESSION["login"]=True;
    $_SESSION["username"]=$_POST["mail"];
    // vb. cogaltılabilir
    header('Location: index.php');
    }
  • 27-11-2019, 13:01:47
    #5
    ufukguler1574 adlı üyeden alıntı: mesajı görüntüle
    çünkü ilk attığınız kod bloğunda herhangi bir kontrol yapılmadan direkt sql sorguları çalışıyor ve otomatikmen izinsiz diye yönlendiriliyor. mesela bi kullanıcı adı şifre kontrolü yapıp ondan sonra oralar çalışmalı.
    Bu kontrolleri 2.attığınız kod bloğunda yapıyorsunuz ama. Durum buyken 1.kod bloğunun işlevi nedir mesela tam çözemedim. Kurduğunuz mantıkta bir sorun var sanırsam tekrar düşünerek kodlayın isterseniz.




    header üzerinde yapılması gereken şey obstart ve sessionstart verildikten sonra $_SESSION['login'] tarzı bir tanımlamanın true olup olmamasını kontrol edersiniz. Eğer false ise içeri girmesine izin vermez ve login ekranı yükler mesela. Eğer true ise zaten giriş yapmıştır ve sayfaya erişimi sağlanır




    örnek header
    if (isset($_SESSION["login"])) {
    header('Location: login.php');
    }else{
    header('Location: hesap.php');
    }
    giriş yaparkende
    if ( ! empty( $_POST["login"]) ) {
    $_SESSION["login"]=True;
    $_SESSION["username"]=$_POST["mail"];
    // vb. cogaltılabilir
    header('Location: index.php');
    }
    hocam 2. kod blogunda ben post işlemlerini yapıyorum mesela form action="deneme.php" yapıp post ediyorum butona name="login" atıyorum ve deneme.php dosyasındaki "login" işlemini yaptırıyorum
  • 27-11-2019, 15:47:20
    #6
    fonksiyonu kullandığın yerlerde hata vardır. onu kontrol etmelisin.
  • 27-11-2019, 20:54:01
    #7
    farklı yöntemlerle sorunu çözdüm yardımlarınız için teşekkür ederim