Fonksiyon içinde global SESSION [ÇÖZÜLDÜ]
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.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (11)
@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.
$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.
$adi = session('isim');
$kuladi = session('user');
$idsi = session('id');
daha önceki verdiğim fonksiyon ile bu şekilde kullanırsan hata vermez.
@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 :)
$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
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 :)
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.
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.
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"];