• 31-07-2010, 03:02:19
    #1
    Üyeliği durduruldu
    Merhabalar,

    Üç adet dosyam var... Bir yerlerde hata yapıyorum ama çıkaramadım. Sanırım extends olayını yanlış kavradım ya da bir sayfayı yanlış ekliyorum...

    index.php
    <?php
    
    /**
     * @author Hyperion
     * @copyright 2010
     */
    
    include ('class.php');
    $asdf = new site('localhost','root','','sgportal');
    $asdf->modulYukle('user');
    
    if( $asdf->uyeGiris('asdf','asdf2') ){
        echo 'giris ok';
    }
    else{
        echo 'no giris';
    }
    
    ?>
    class.php
    <?php
    
    /**
     * @author Hyperion
     * @copyright 2010
     */
    
    class site{
    
       var $baglanti;
            
        public function __construct($ip,$kullanici,$sifre,$db){
       		$this->baglanti = mysqli_connect($ip,$kullanici,$sifre,$db) or die('Bağlantı Hatası!');
            $this->antiSql();
        }
        
        public function __destruct(){
    		mysqli_close($this->baglanti);
        }
        
        public function modulYukle($modul){
            return include("modules/$modul.php");        
        }
        
        public function antiSql(){
            $yasakKarakter = array(";", "'", "\"", "*", "DROP", "SELECT", "UPDATE", "DELETE", "drop", "select", "update", "delete", "WHERE", "where", "-1", "-2", "-3", "-4", "-5", "-6", "-7", "-8", "-9"); 
            foreach ($_REQUEST as $deger){
                if(in_array($deger,$yasakKarakter)){
                    die('Sql Saldırısı!!!<br/>IP Adresiniz ('.$_SERVER['REMOTE_ADDR'].') WebMaster e gönderildi...');
                    mail("savaskoc11@gmail.com","SQL Saldırısı!","SQL Saldırısı Gerçekleşti! IP: ".$_SERVER['REMOTE_ADDR']);
                }
                else{
                    $kontrol = preg_split("//", $deger, -1, PREG_SPLIT_OFFSET_CAPTURE);
                    foreach($kontrol as $deger){
                        if(in_array($deger,$yasakKarakter)){
                            die('Sql Saldırısı!!!<br/>IP Adresiniz ('.$_SERVER['REMOTE_ADDR'].') WebMaster e gönderildi...');
                            mail("savaskoc11@gmail.com","SQL Saldırısı!","SQL Saldırısı Gerçekleşti! IP: ".$_SERVER['REMOTE_ADDR']);
                        }
                    }
                }
            }
        }
            
        public function sorgula($sorgu){
            $sorgula = mysqli_query($this->baglanti,$sorgu);
            while ($sonuc = mysqli_fetch_object($sorgula)){
                $donen[] = $sonuc;
            }
            mysqli_free_result($sorgula);
            return $donen;
        }
    }
    
    ?>
    user.php
    <?php
    
    /**
     * @author Hyperion
     * @copyright 2010
     */
    
    class uye extends site{
        
        public function uyeGiris($user,$pass){
            $sorgu = mysqli_query($this->baglanti,"SELECT * FROM users WHERE username = '$user' AND password = '$pass'");
            $kullanici = mysqli_fetch_object($sorgu);
            if (mysqli_num_rows($sorgu) != 0)
            {
                $_SESSION['user'] = $kullanici->username;
                $_SESSION['group'] = $kullanici->auth;
                return true;
            }
            else
            {
                return false;
            }
        }
        
        public function uyeCikis($user){
            unset($_SESSION['user']);
            session_destroy();
        }
        
        public function uyeKayit($user,$pass,$mail,$birth,$***,$country){
            
            
        }
        
    }
    
    ?>
    Bir türlü sorunun içinden çıkamadım...

    Bu arada, anti-sql fonksiyonum yeterli midir ?

    Cevaplarınız için şimdiden teşekkürler
  • 31-07-2010, 12:22:59
    #2
    Üyeliği durduruldu
    var $baglanti;

    bunu

    public $baglanti;

    yaparmısınız

    ve hatayı birazdaha açarsanız sevinirim
  • 31-07-2010, 13:08:22
    #3
    Üyeliği durduruldu
    Sorunun ne olduğunu söylememişsiniz, ama görebildiğim sorunlar hakkında yardımcı olmaya çalışayım.

    <?php 
    
    /** 
     * @author Hyperion 
     * @copyright 2010 
     */ 
    
    include ('class.php'); 
    $asdf = new site('localhost','root','','sgportal'); 
    $asdf->modulYukle('user'); 
    
    if( $asdf->uyeGiris('asdf','asdf2') ){ 
        echo 'giris ok'; 
    } 
    else{ 
        echo 'no giris'; 
    } 
    
    ?>
    new site() değil new uye diyerek oluşturmalısınız objeyi. aksi halde if( $asdf->uyeGiris('asdf','asdf2') ){ bu satırda hata alırsınız.

    bir de uye sınıfı zaten user modülünün yükleneceği anlamına gelir. __construct override ederseniz bu olayı otomatik yapmış olursunuz. örnek aşağıdadır.

    class uye extends site{ 
         
     public function __construct($ip,$kullanici,$sifre,$db){ 
       
      parent::__construct($ip,$kullanici,$sifre,$db);
      $this->modulYukle('user'); 
      
      }

    die() dan sonra yazdığınız mail() fonksiyonları çalışmayacaktır.
     die('Sql Saldırısı!!!<br/>IP Adresiniz ('.$_SERVER['REMOTE_ADDR'].') WebMaster e gönderildi...'); 
                    mail("savaskoc11@gmail.com","SQL Saldırısı!","SQL Saldırısı Gerçekleşti! IP: ".$_SERVER['REMOTE_ADDR']);
    doğrusu
      mail("savaskoc11@gmail.com","SQL Saldırısı!","SQL Saldırısı Gerçekleşti! IP: ".$_SERVER['REMOTE_ADDR']); 
     die('Sql Saldırısı!!!<br/>IP Adresiniz ('.$_SERVER['REMOTE_ADDR'].') WebMaster e gönderildi...');

    ayrıca

    Orgenus adlı üyeden alıntı: mesajı görüntüle
    var $baglanti;

    bunu

    public $baglanti;

    yaparmısınız

    ve hatayı birazdaha açarsanız sevinirim

    modifierı yazılmayınca zaten public olur php'de.
  • 31-07-2010, 18:07:37
    #4
    Üyeliği durduruldu
    Bütün dediklerinizi yaptım... ancak
    if( $asdf->uyeGiris('asdf','asdf2') ){
        echo 'giris ok';
    }
    else{
        echo 'no giris';
    }
    kısmı hala çalışmıyor
  • 31-07-2010, 18:09:17
    #5
    Üyeliği durduruldu
    Hyperion adlı üyeden alıntı: mesajı görüntüle
    Bütün dediklerinizi yaptım... ancak
    if( $asdf->uyeGiris('asdf','asdf2') ){
        echo 'giris ok';
    }
    else{
        echo 'no giris';
    }
    kısmı hala çalışmıyor

    ve siz de hala hatayı yazmamışsınız..
  • 31-07-2010, 18:13:55
    #6
    Üyeliği durduruldu
    D3LLy adlı üyeden alıntı: mesajı görüntüle
    ve siz de hala hatayı yazmamışsınız..
    sadece boş bir sayfa geliyor önüme...

  • 31-07-2010, 19:25:36
    #7
    Üyeliği durduruldu
    Sorunu hallettim...

    include ('class.php');
    $sgPortal = new site('localhost','root','','sgportal');
    $sgPortal->modulYukle('user');
    kısmının altına

    $sgPortal_Uye = new uye('localhost','root','','sgportal');
    ekleyip

    if($sgPortal_Uye)...
    diye devam etmem gerekiyormuş...
    ************************************************** *******
    Kodların son hali...
    class.php
    <?php
    
    /**
     * @author Hyperion
     * @copyright 2010
     */
    
    class site{
    
       var $baglanti;
            
        public function __construct($ip,$kullanici,$sifre,$db){
       		$this->baglanti = mysqli_connect($ip,$kullanici,$sifre,$db) or die('Bağlantı Hatası!');
            $this->antiSql();
        }
        
        public function __destruct(){
    		mysqli_close($this->baglanti);
        }
        
        public function modulYukle($modul){
            return include("modules/$modul.php");
        }
        
        public function antiSql(){
            $yasakKarakter = array(";", "'", "\"", "*", "DROP", "SELECT", "UPDATE", "DELETE", "drop", "select", "update", "delete", "WHERE", "where", "-1", "-2", "-3", "-4", "-5", "-6", "-7", "-8", "-9"); 
            foreach ($_REQUEST as $deger){
                if(in_array($deger,$yasakKarakter)){
                    mail("savaskoc11@gmail.com","SQL Saldırısı!","SQL Saldırısı Gerçekleşti! IP: ".$_SERVER['REMOTE_ADDR']);
                    die('Sql Saldırısı!!!<br/>IP Adresiniz ('.$_SERVER['REMOTE_ADDR'].') WebMaster e gönderildi...');
                }
                else{
                    $kontrol = preg_split("//", $deger, -1, PREG_SPLIT_OFFSET_CAPTURE);
                    foreach($kontrol as $deger){
                        if(in_array($deger,$yasakKarakter)){
                            mail("savaskoc11@gmail.com","SQL Saldırısı!","SQL Saldırısı Gerçekleşti! IP: ".$_SERVER['REMOTE_ADDR']);
                            die('Sql Saldırısı!!!<br/>IP Adresiniz ('.$_SERVER['REMOTE_ADDR'].') WebMaster e gönderildi...');
                        }
                    }
                }
            }
        }
            
        public function sorgula($sorgu){
            $sorgula = mysqli_query($this->baglanti,$sorgu);
            while ($sonuc = mysqli_fetch_object($sorgula)){
                $donen[] = $sonuc;
            }
            mysqli_free_result($sorgula);
            return $donen;
        }
    }
    
    ?>
    index.php
    <?php
    
    /**
     * @author Hyperion
     * @copyright 2010
     */
    
    include ('class.php');
    $sgPortal = new site('localhost','root','','sgportal');
    $sgPortal->modulYukle('user');
    $sgPortal_Uye = new uye('localhost','root','','sgportal');
    if( $sgPortal_Uye->uyeGiris('asdf','asdf2') ){
        echo 'giris ok';
    }
    else{
        echo 'no giris';
    }
    
    ?>
    user.php
    <?php
    
    /**
     * @author Hyperion
     * @copyright 2010
     */
    
    class uye extends site{
    
        function uyeGiris($user,$pass){
            $sorgu = mysqli_query($this->baglanti,"SELECT * FROM users WHERE username = '$user' AND password = '$pass'");
            $kullanici = mysqli_fetch_object($sorgu);
            if (mysqli_num_rows($sorgu) != 0)
            {
                $_SESSION['user'] = $kullanici->username;
                $_SESSION['group'] = $kullanici->auth;
                return true;
            }
            else
            {
                return false;
            }
        }
        
        function uyeCikis($user){
            unset($_SESSION['user']);
            session_destroy();
        }
        
        function uyeKayit($user,$pass,$mail,$birth,$***,$country){
            
            
        }
        
    }
    ?>
    peki ben index.php deki kodun şu şekilde olmasını istiyorum...
    <?php
    
    /**
     * @author Hyperion
     * @copyright 2010
     */
    
    include ('class.php');
    $sgPortal = new site('localhost','root','','sgportal');
    $sgPortal->modulYukle('user');
    if( $sgPortal->user->uyeGiris('asdf','asdf2') ){
        echo 'giris ok';
    }
    else{
        echo 'no giris';
    }
    ?>
    bunun için user.php deki kod nasıl olmalı ?
  • 31-07-2010, 22:48:19
    #8
    Üyeliği durduruldu
    Şimdi dediğim şeyi de yaptım...

    İlgilenen ve ilgilenmeyen herkese teşekkürler