• 10-11-2008, 07:33:36
    #1
    slm arkadaşlar scriptim için yaptığım üyelik sistemi localhostta düzgün çalışırken nedense sunucuda üye adı ve şifresini doğru girmeme rağmen giriş yapmıyor bunun nedeni ne olabilir yardımlarınızı bekliyorum...

    Kodlarım

    <?
    session_start();
    include("../vt.php");
    
    session_register("login");
    session_register("pass");
    
    $veri = mysql_query("select login, password from admin where login = '$login' AND password = '$pass' ");
    $bak = mysql_num_rows($veri);
    
    if($bak < 1) {
     echo "<script language=\"javascript\">alert('Yönetici adı veya şifresi hatalı'); history.back(-1);</script>";
    session_destroy(); 
    echo "<META HTTP-EQUIV='refresh' CONTENT='1; URL=giris.php'>";
    
    }
    else {
    echo "Giriş Başarılı...";
    }
    ?>
  • 10-11-2008, 10:20:15
    #2
    Sunucunda register_global kapalı olabilir. htaccess dosyası varsa php_flag register_globals on kodunu ekle, dosya yoksa .htaccess dosyası oluştur ve yine yukarıdaki kodu ekle.
  • 10-11-2008, 10:37:31
    #3
    Aşşağıdaki şekilde hazırladığım sayfalar bile yani index.php?sayfa=mesela bu sayfa localhostta çalışırken nedense sunucuda bunlarda boş sayfa olarak çıkıyor... Bununda register_globals ile bir alakası varmıdır?

    <?
    error_reporting('NONE');
    switch ($sayfa) {
    case mesela:
    echo "mesela sayfasi";
    break;
    }
    ?>
  • 10-11-2008, 10:56:18
    #4
    Evet. Register_globals ile alakalıdır. htaccess dosyası ile açmak en kolayıdır. Yoksa her değişkeni HTTP_GET_VARS veya HTTP_POST_VARS ile almalısınız.
    Örneğin yukarıda verdiğin örneğin en üstüne aşağıdaki kodu eklersen çalışacaktır.
    $sayfa=$HTTP_GET_VARS["sayfa"];
  • 10-11-2008, 13:21:27
    #5
    IncLudE adlı üyeden alıntı: mesajı görüntüle
    slm arkadaşlar scriptim için yaptığım üyelik sistemi localhostta düzgün çalışırken nedense sunucuda üye adı ve şifresini doğru girmeme rağmen giriş yapmıyor bunun nedeni ne olabilir yardımlarınızı bekliyorum...

    Kodlarım

    <?
    session_start();
    include("../vt.php");
    
    session_register("login");
    session_register("pass");
    
    $veri = mysql_query("select login, password from admin where login = '$login' AND password = '$pass' ");
    $bak = mysql_num_rows($veri);
    
    if($bak < 1) {
     echo "<script language=\"javascript\">alert('Yönetici adı veya şifresi hatalı'); history.back(-1);</script>";
    session_destroy(); 
    echo "<META HTTP-EQUIV='refresh' CONTENT='1; URL=giris.php'>";
    
    }
    else {
    echo "Giriş Başarılı...";
    }
    ?>

    bu şekilde session ataması yapmayın ! eğer bu şekilde kullanmak istiyorsanız register_globals 'un enable olması gerekiyor.

    Super Global değişkenler var, session içinde bu mevcut..

    $_SESSION

    örnek

    <?php
    session_start();
    
    $_SESSION['login'] = 'login değeri';
    $_SESSION['pass'] = 'pass değeri';
    
    // bu şekilde kullanmak varken neden session_register() ?
    ?>
    register_globals'a artık takıntı yapmayın zaten php 6.0.0 'da register_globals tamamen kaldırıldı.



    IncLudE adlı üyeden alıntı: mesajı görüntüle
    Aşşağıdaki şekilde hazırladığım sayfalar bile yani index.php?sayfa=mesela bu sayfa localhostta çalışırken nedense sunucuda bunlarda boş sayfa olarak çıkıyor... Bununda register_globals ile bir alakası varmıdır?

    <?
    error_reporting('NONE');
    switch ($sayfa) {
    case mesela:
    echo "mesela sayfasi";
    break;
    }
    ?>
    bakın burada'da aynı işlevi yapmışsınız

    $sayfa normal global bir değişkendir.Bu değişken eğer register_globals açık değilse dışarıdan veri almaz.

    Php'nin register_globals'in durumuna bağlı kalmadığı super global değişkenler vardır.

    Şimdi sizin yukarda yazdığınız kodu yanlış kabul ediyorum ve yanlışlarını gösteriyorum.Onun hemen aşağısında'da doğrusunu yazıyorum.


    <?
    // Bu kullanım yanlıştır !
    error_reporting('NONE');
    switch ($sayfa) {
    case mesela:
    echo "mesela sayfasi";
    break;
    }
    ?>
    Doğru kullanımı aşağıdadır.

    <?
    // Bu kullanım doğrudur !
    
    //Hiç hata göstermez.
    error_reporting(0);
    
    // error reporting(E_ALL); // Bütün hataları,uyarıları ve bildirileri gösterir.
    // error_reporting(E_ALL & ^ E_NOTICE); bildiriler hariç bütün hataları gösterir
    switch($_GET['sayfa'])
    {
        case 'mesela':
            echo 'mesela sayfasi';
        break;
    }
    ?>
    Normal değişkenlere böyle direkt erişeme sahip olmak çok kullanışlı gelebilir. Ancak, yazdığınız scriptlerinizin güvenliğinden ödün vermenizi gerektirecek programlama hatalarına(değişkenler tanımlanırken ilk değer vermeyi unutmak gibi) maalesef ki açıktır.

    register_globals'i kapalı konumdan açık konuma getirmeden önce php takımı neden php 4.2.0 'dan sonra bu kısmı kapalı konumda belirlediğini'de düşünmekde yarar var
  • 11-11-2008, 01:22:00
    #6
    tşkler arkadaşlar session u hala çözemedim ama sayfalama olayında bütün işlemleri 1 dosya ile yaptığım için gözden kaçırdığım bir yer olmuş o nedende çalışmamış session olayına gelince bu olaydan çoğu kişinin başı yanmış forumlarda gördüğüm kadarıyla hatta birisi 3 aylık emeğini bile silmiş... Ben register_globals açmak istemiyorum ama Dr.iq bu verdiğin kodlarda olmadı malesef

       <?php
    session_start();
    
    $_SESSION['login'] = 'login';
    $_SESSION['pass'] = 'pass';
    
    // bu şekilde kullanmak varken neden session_register() ?
    ?>
    Üye girişi olmadan giriş yapılamıyacak sayfada ;

    <?php
    
    $uye_kadi = $HTTP_SESSION_VARS["login"];
    $uye_sifre = $HTTP_SESSION_VARS["pass"];
    
    ?>
    $HTTP_SESSION_VARS yerine $_SESSION kullanın dediler onuda denedim oda sonuç vermedi konuyu hala araştırmaktayım..

    Dr.iq ve navruzm yardımlarınız için teşekkür ederim
  • 11-11-2008, 12:51:52
    #7
    IncLudE adlı üyeden alıntı: mesajı görüntüle
    tşkler arkadaşlar session u hala çözemedim ama sayfalama olayında bütün işlemleri 1 dosya ile yaptığım için gözden kaçırdığım bir yer olmuş o nedende çalışmamış session olayına gelince bu olaydan çoğu kişinin başı yanmış forumlarda gördüğüm kadarıyla hatta birisi 3 aylık emeğini bile silmiş... Ben register_globals açmak istemiyorum ama Dr.iq bu verdiğin kodlarda olmadı malesef

       
    <?php
    session_start();
    
    $_SESSION['login'] = 'login';
    $_SESSION['pass'] = 'pass';
    
    // bu şekilde kullanmak varken neden session_register() ?
    ?>
    Üye girişi olmadan giriş yapılamıyacak sayfada ;

    <?php
    
    $uye_kadi = $HTTP_SESSION_VARS["login"];
    $uye_sifre = $HTTP_SESSION_VARS["pass"];
    
    ?>
    $HTTP_SESSION_VARS yerine $_SESSION kullanın dediler onuda denedim oda sonuç vermedi konuyu hala araştırmaktayım..

    Dr.iq ve navruzm yardımlarınız için teşekkür ederim
    benim anlattıklarımı anlamamışsınız ki

    bu şekilde atama yaptığınız zaman

    mesela şunu yazın echo $_SESSION['login']; ekrana login yazacaktır. Çünkü siz $_SESSION['login'] super global'ine login değerini atamışsınız..

    Eğer buraya form'dan gelen bir değer atamak istiyorsanız

    $_SESSION['login'] = $_POST['form_degeri'];

    olarak atamanız gerekiyor ve kullanırken $_SESSION['login'] olarak kullanmanız gerekiyor $_SESSION['login'] super global'inin değeri form'dan gelen veridir.

    Bence siz biraz Superglobal'leri ve session kavramını araştırın/öğrenmeye çalışın

    Not : $HTTP_SESSION_VARS bu eski kullanım şeklidir bunun yerine yeni kısa kullanımı $_SESSION 'dir , diğer superglobal'ler için aynı kısa ismi geçerlidir.
  • 11-11-2008, 18:18:14
    #8
    Valla çok tşkler oldu bu sefer

    İşim halloldu ama aslında tartışmaya açık bir konu php neden yeni versionlarında eski kodları kaldırıyor hala anlamış değilim yani kaldırmak yerine isteyen yeni kodu kullansın isteyen eski kodu şimdi ben 2 sene önce php ile bir sistem yaptım ve bunu ticaret amaçlı sattım diyelim ve 2 sene sonra yeni php versionu çıktı o sunucuda php versionlarını güncelledi ve kişinin sitesi çalışmadı bunun sorumlusu php değil biz olacağız ve o kodlarla tekrar uğraşacağız...

    Yardımlarınız için çok teşekkür ederim arkadaşlar
  • 12-11-2008, 03:32:02
    #9
    Üyeliği durduruldu
    session tek sayfa içindir. eğer girişin tüm sayfalarda geçerli olmasını istiyorsan
    setcookie("login","username"); 
    setcookie("pass","pass");
    // eğer bir saat gibi süre vermek istersen
    setcookie("login","username",time()+3600); 
    
    //bu şekilde şu atamaları yapmış oluyorsun...
    $_COOKIE ['login'];// diğer sayfalarda bu şekilde çekebilirsin.
    $_COOKIE ['pass'];
    kullanabilirsin.