• 23-08-2017, 13:45:53
    #1
    Arkadaşlar pdo ile bir fonksiyon yazıyorum ama fonksiyonda hata alıyorum.

    Databese bağlantı için kullandıığım kodda sorun yok başka dosyalarda çalışıyor.

    bir fonksiyon.php adında dosya oluşturdum ve içine yazdığım kod.

    <?php
    ob_start();
    session_start();
    
    function giriskontrol (){
    
    	$user_eposta = $_SESSION['user_eposta']; 
    	$user_onay = $_SESSION['user_onay'];
    	$user_aktifmi = $_SESSION['user_aktifmi'];
    	$user_id = $_SESSION['user_id'];
    
    	$uyesor = $db->prepare("select * from user where user_eposta=?");
    	$uyesor->execute(array($user_eposta));
    	$uyecek=$uyesor->fetch(PDO::FETCH_ASSOC);
    
    	if ($uyesor==0) {
    		header('location:giris.php');
    	} else {
    
    		header('location:index.php');
    	}
    
    }
    
    ?>
    Burda aldığım hata login olduktan sonra burda kontrolü sağlamıyor hata ise $db değişkeni tanımlanmıyor.

    Burda PDO kullanamazmıyım acaba neden bu hatayı alıyorum çözemedim.
  • 23-08-2017, 13:55:27
    #2
    <?php
    ob_start();
    session_start();
     
    function giriskontrol (){
       global $db;
       $user_eposta = $_SESSION['user_eposta']; 
       $user_onay = $_SESSION['user_onay'];
       $user_aktifmi = $_SESSION['user_aktifmi'];
       $user_id = $_SESSION['user_id'];
     
       $uyesor = $db->prepare("select * from user where user_eposta=?");
       $uyesor->execute(array($user_eposta));
       $uyecek=$uyesor->fetch(PDO::FETCH_ASSOC);
     
       if ($uyesor==0) {
          header('location:giris.php');
       } else {
     
          header('location:index.php');
       }
     
    }
     
    ?>
    Yukarıdaki gibi global $db şeklinde dener misin?
  • 23-08-2017, 14:08:17
    #3
    aliosmanyuksel adlı üyeden alıntı: mesajı görüntüle
    <?php
    ob_start();
    session_start();
     
    function giriskontrol (){
       global $db;
       $user_eposta = $_SESSION['user_eposta']; 
       $user_onay = $_SESSION['user_onay'];
       $user_aktifmi = $_SESSION['user_aktifmi'];
       $user_id = $_SESSION['user_id'];
     
       $uyesor = $db->prepare("select * from user where user_eposta=?");
       $uyesor->execute(array($user_eposta));
       $uyecek=$uyesor->fetch(PDO::FETCH_ASSOC);
     
       if ($uyesor==0) {
          header('location:giris.php');
       } else {
     
          header('location:index.php');
       }
     
    }
     
    ?>
    Yukarıdaki gibi global $db şeklinde dener misin?
    $db değişkenini set ettiğin yani veritabanı bağlantısı yaptığın sayfanın include edilmesi lazım. include etmeden $db değişkenini kullanamazsın.
  • 23-08-2017, 16:42:25
    #4
    Onu Dediğin gibi düzelttim gördüm eklemediğimi ama bu sefer yönlenen sayfa sürekli döngüye girdi ve hata verdi.

    Bu sayfa çalışmıyor

    localhost sizi çok fazla kez yönlendirdi.
    Çerezlerinizi temizlemeyi deneyin.
    ERR_TOO_MANY_REDIRECTS

    Bunu neden veriyor acaba
  • 23-08-2017, 20:22:23
    #5
    Üyeliği durduruldu
    Adalente adlı üyeden alıntı: mesajı görüntüle
    Onu Dediğin gibi düzelttim gördüm eklemediğimi ama bu sefer yönlenen sayfa sürekli döngüye girdi ve hata verdi.

    Bu sayfa çalışmıyor

    localhost sizi çok fazla kez yönlendirdi.
    Çerezlerinizi temizlemeyi deneyin.
    ERR_TOO_MANY_REDIRECTS

    Bunu neden veriyor acaba
    Normal de hata direkt, giriskontrol fonksiyonunuz da derdim zira mantık hatası mevcut. Ancak, diğer kodlarınızı bilmediğimden dolayı, yapı örneği ileteyim size.

    fonksiyon.php
    <?php
    session_start();
    function giriskontrol(){
    	$user_eposta = $_SESSION['user_eposta']; 
    	$user_onay = $_SESSION['user_onay'];
    	$user_aktifmi = $_SESSION['user_aktifmi'];
    	$user_id = $_SESSION['user_id'];
    	$uyesor = $db->prepare("select * from user where user_eposta=?");
    	$uyesor->execute(array($user_eposta));
    	$uyecek=$uyesor->fetch(PDO::FETCH_ASSOC);
    	if($uyesor==0):
    		session_destroy();
    		header('location:giris.php');
    		exit;
    	endif;
    }
    ?>
    
    
    
    
    
    index.php
    <?
    require_once("fonksiyon.php");
    giriskontrol();
    
    echo "Üye giriş yapmış";
    ?>
    
    
    
    
    
    giris.php 
    <?
    session_start();
    if(isset($_SESSION['user_eposta'])):
            header('location:index.php');
            exit;
    endif;
    echo "Üye giriş yapmadı, Giriş formu burada";
    ?>
    kodunuzda ki hata, üye zaten index.phpdeyken, giriskontrol() üyeyi tekrardan index.phpye yönlendiriyor. Böyle olduğu için sonsuz döngüye giriyor. Bunun yerine bu yapıyı örnek alabilirsiniz.