v2.5.2
Giriş yap

Fonksiyon içinde global SESSION [ÇÖZÜLDÜ]

aydinkeskin
1,164 defa görüntülendi

merhaba arkadaşlar.

fonksiyon içinde

sessionları okutamıyorum

global ile tanımyım dedim oda olmadı

login kontrol için fonksiyon oluşturuyorum da login olmadan önce
tanımsız xxx diye hata veriyor bunu nasıl ortadan kaldırabilirim.

Cevap yaz
Cevaplar (11)
aydinkeskin
1661 gün önce

@makifgokce

işimi gördü kardeşim teşekkür ederim ancak ttest etme fırsatım oldu.
tek sorun fonksiyon ismini değiştirmek gerekti süper globaller değişken veya fonksiyon olarak kullanılmıyor en azından benim hosting de öyle.

makifgokce
1661 gün önce
$adi = session('isim');
$kuladi = session('user');
$idsi = session('id');

if (!$adi && !$kuladi && !$idsi){
    //session var işleme devam et
} else{
    //session yok
}

gibi bir kontrol yaparak sorguya geçiş yapılırsa hiçbir sıkıntı çıkmaz.

kartal
1661 gün önce

session bilgilerine ulaşamıyorsanız veri tabanından nasıl sonuç alacaksınız, fonksiyonun amacı ne.

makifgokce
1661 gün önce
$adi = session('isim');
$kuladi = session('user');
$idsi = session('id');

daha önceki verdiğim fonksiyon ile bu şekilde kullanırsan hata vermez.

aydinkeskin
1661 gün önce

@arco ilgin için teşekkürler kardeşim

fakat hatayı bastırmak hata olmadığı anlamına gelmiyor malesef.

bunun kesin bir çözümü varda henüz biz bulamadık :)
hiç bir hata bastırma veya hata uyarısı olmadan bu işi çözmenin bir yolu mutlaka vardır da onu
bizimle paylaşacak babayiğit aranıyor :)

arco
1661 gün önce

$adi = @$_SESSION["isim"];
$kuladi = @$_SESSION["user"];
$idsi = @$_SESSION["id"];

$oku = pre("SELECT id,kuladi,ad FROM operator WHERE id=? and kuladi=? and ad=?");
$oku->execute([$idsi,$kuladi,$adi]);
$saydir = $oku->rowCount();

if($saydir == 0){
	header('Location:'.sitedizin().'xxx/xxx/');
	
	
	böyle olması lazım hocam
aydinkeskin
1662 gün önce

function adminLogin(){

$adi = $_SESSION["isim"];
$kuladi = $_SESSION["user"];
$idsi = $_SESSION["id"];

$oku = pre("SELECT id,kuladi,ad FROM operator WHERE id=? and kuladi=? and ad=?");
$oku->execute([$idsi,$kuladi,$adi]);
$saydir = $oku->rowCount();
	if($saydir == 0){
		header('Location:'.sitedizin().'xxx/xxx/');
	}

}

ben bu şekilde kullanmaya çalışıyorum
haliyle hata veriyor login ismi yokken.

post get işlemleride ajax üzerinden tek dosyada topluyorum.
onlarıda isset post blabla and sesssion login == true ile işlem yaptırıyorum.
o alanı kısmak için fonksiyon yazayım dedim.

senin yazdığın da olabilir muhtemelen

sesssion login == true bölmesi için denemek lazım
bazen kafa duruyor bırakıyorum ne yapacaksam. aklıma gelene kadar :)

makifgokce
1662 gün önce
function session($name){
    return isset($_SESSION[$name]) ? $_SESSION[$name] : false;
}

Anladığım kadarıyla böyle bir fonksiyon işinize yarayacaktır.session('Login') gibi kullanabilirsiniz.

aydinkeskin
1662 gün önce

hata bastırma ile hatayı kapatabiliriz ama sadece logdan ve görselden kapatmış oluruz
ama orda bir hata olmadığı anlamına gelmiyor malesef.

post get güvenliğini fonksiyon ile güvence altına almayız tmm deriz sesssion login true ise işlem yap diye yazarız fakat
bunu fonksyion aracılığı ile yapmak istediğim için yazdım.

yinede ilgiliniz için teşekkürler aradığım cevap şimdilik bu değil gibi duruyor.

arco
1662 gün önce

aynen hocam tanımsız olduğu için veriyoru hatayı genelde bu gibi durumlarda başına "@" koyarsanız o kısımın hatasını engellemiş olursunuz

jct
1662 gün önce

Anladığım kadarıyla cevap vermeye çalışayım; Henüz Login olmadığın için Session'lar tanımlanmamış demektir. Bir değeri fonksiyon veya herhangi bir yerde kullanmadan önce tanımlamazsan doğal olarak tanımlanmamış değişken veya bilgi hatası alırsın. Hata bastırma operatörü olan "@" işaretini kullanman bu hatayı baskılar. Örneğin;

    @$Login = $_SESSION["Login"];