Php Ile Sayfa Kapatılırken.( Close The Page With Php )

Kodla Büyü

yazilimuzmani

Site Gezgini
Mesajlar
60
Asp.net teknolojisinden php teknolojisine yöneldim. Bu yüzden kod yazımında bazı sıkıntılar çekiyorum.

Soru 1) Php ile bir sayfadaki bir input text ögesinin içeriği dinamik olarak değiştirilebilir mi?
Ben bu soruyu çeşitli yerlere sorduğumda bana bunları javascript ile yapmam önerilmişti. Fakat yeni nesil tarayıcılar artık herşey yapabiliyor mesela html+css+javascript kodlarını hem görüntüleyebiliyor hemde değiştirebiliyorsun üstelik kullanıcılar css ya da javascript kodlarını istedikleri zaman engelleyebiliyorlar. Yani demek istediğim işi Javascript 'e bırakmak son derece tehlikeli bu yüzden işi php tarafından yapmak istiyorum.

Soru 2) <body onUnload="<?PHP kodlar... ?>" ></body> yazdığım zaman sayfa kapatılırken çalışmıyor ne yapmalıyım?

Soru 3) Php ile sayfanın ilk yüklendiğini nasıl anlarım? Asp.Net ile bu işi;

if(!Page.IsPostBack)
{
kodlar...
}

ile yapabiliyorduk bunu php 'de nasıl yapabilirim.
 
yazilimuzmani' Alıntı:
Asp.net teknolojisinden php teknolojisine yöneldim. Bu yüzden kod yazımında bazı sıkıntılar çekiyorum.

Soru 1) Php ile bir sayfadaki bir input text ögesinin içeriği dinamik olarak değiştirilebilir mi?
Ben bu soruyu çeşitli yerlere sorduğumda bana bunları javascript ile yapmam önerilmişti. Fakat yeni nesil tarayıcılar artık herşey yapabiliyor mesela html+css+javascript kodlarını hem görüntüleyebiliyor hemde değiştirebiliyorsun üstelik kullanıcılar css ya da javascript kodlarını istedikleri zaman engelleyebiliyorlar. Yani demek istediğim işi Javascript 'e bırakmak son derece tehlikeli bu yüzden işi php tarafından yapmak istiyorum.

Soru 2) <body onUnload="<?PHP kodlar... ?>" ></body> yazdığım zaman sayfa kapatılırken çalışmıyor ne yapmalıyım?

Soru 3) Php ile sayfanın ilk yüklendiğini nasıl anlarım? Asp.Net ile bu işi;

if(!Page.IsPostBack)
{
kodlar...
}

ile yapabiliyorduk bunu php 'de nasıl yapabilirim.

1) Input öğesinin içeriğini dinamik derken, sayfa yüklendikten sonra mı değiştirmek istiyorsunuz? Yoksa sayfa yüklenirken mi? Sayfa yüklenirken değişmesini istiyorsanız value="<?php echo $deger;?>" ile dolu gelecek şekilde ayarlayabilirsiniz. Sayfa yüklendikten sonra değişmesini istiyorsanız onload olayına document.getElementById('input_idsi').value="<?php echo $deger;?>"; şeklinde sayfa yüklenirken eklediğiniz kodla değiştirebilirsiniz. Ya da ajax ile de bunu yapabilirsiniz. Sanırım sizin istediğiniz bu. Ajax ile sayfa yüklendiğinde bir iç istekle veriyi çağırır aynı yukarıdaki şekilde inputa aktarırsınız. Ama burada ajax, güvenlik, yöntem v.s. o kadar çok nokta var ki.

2) body onunload tüm tarayıcılar destekliyor mu bilmiyorum. http://www.w3schools.com/jsref/event_onunload.asp adresinde destekliyor görünüyor. küçük harfle yazmanız gerekiyor olabilir. Tarayıcıların sağı solu belli olmaz. Farklı tarayıcılarda onunload="alert('deneme');" şeklinde deneyim. Hata belkide php kısmının boş gelmesinde olabilir. Gelen sayfanın kaynak koduna göz atın.

3) Sayfanın tamamen yüklenmiş olması (resimler v.s. dahil) tarayıcı tarafından anlaşılabilir. PHP tarafından isteğin gönderildiğini kontrol etmek için çeşitli mekanizmalar var. Output control functions, çıktı kontrol fonksiyonları ile ilgili bilgiler http://tr.php.net/manual/en/ref.outcontrol.php adresinde var. Php betiği bittiğinde çağırılmak üzere bir fonksiyon tanımlamayı sağlayan fonksiyon da varmış. Buyrun: http://php.net/manual/en/function.regis ... nction.php

Ama sanırım sizin 3. sorunuz ilk yüklendiğini anlamakla ilgili, o zaman asıl cevap if($_SERVER['REQUEST_METHOD'] == 'POST') ya da isset($_POST) kullanımı.
 
Teşekkür ederim. Şu javascript konusu hakkında biraz bilgi verir misiniz? Yani modern tarayıcılar herşeyi yapabiliyor devre dışı bırakabiliyor veya varolan kodları değiştirebiliyor.

Asıl anlatmak istediğim konu şu ki, bir sitem olacak ve içerisinde kullanıcılar;
1) Yönetici,
2) Moderatör,
3) Üye şeklinde yetkilendirilecek. Mesela moderatör isterse bir üyeyi silebilecek. ve silebileceği üyelerin ID leri <select><option>10</option><option>13</option></select> gibi bir liste şeklinde olacak. Moderatörden ajax kullanarak veri alınacak,

$.ajax({
type:'POST',
url:'islemYap.php',
data:{'islem':'kullaniciSil','kullaniciID':$("#kullaniciID").val()}
success:function()
{
alert("başarılı.");
}
})

burada Id si gönderilen üye veritabanından siliniyor. Eğer moderatör; data:{'islem':'kullaniciSil','kullaniciID':$("#kullaniciID").val()} satırını şöyle değiştirirse, data:{'islem':'kullaniciSil','kullaniciID':'1'} kullanıcı ID 'si 1 olan yani admin silinecek.

Ayrıca daha farklı işlerde yapılabilinir mesela kullanıcı bu js kodlarını silip kendi isteğine göre kod yazar ya da jsnin tüm kodlarını siler hiçbir kod bırakmaz ki buda sistemde büyük bir açık oluşturur bu durumda ne gibi önlemler alınması gerekir?
 
yazilimuzmani' Alıntı:
Teşekkür ederim. Şu javascript konusu hakkında biraz bilgi verir misiniz? Yani modern tarayıcılar herşeyi yapabiliyor devre dışı bırakabiliyor veya varolan kodları değiştirebiliyor.

Asıl anlatmak istediğim konu şu ki, bir sitem olacak ve içerisinde kullanıcılar;
1) Yönetici,
2) Moderatör,
3) Üye şeklinde yetkilendirilecek. Mesela moderatör isterse bir üyeyi silebilecek. ve silebileceği üyelerin ID leri <select><option>10</option><option>13</option></select> gibi bir liste şeklinde olacak. Moderatörden ajax kullanarak veri alınacak,

$.ajax({
type:'POST',
url:'islemYap.php',
data:{'islem':'kullaniciSil','kullaniciID':$("#kullaniciID").val()}
success:function()
{
alert("başarılı.");
}
})

burada Id si gönderilen kullanıcı veritabanından siliniyor. Eğer kullanıcı data:{'islem':'kullaniciSil','kullaniciID':$("#kullaniciID").val()} satırını şöyle değiştirirse, data:{'islem':'kullaniciSil','kullaniciID':'1'} admin silinecek ve ya kullanıcı kafasına göre kod yazar ya da jsnin tüm kodlarını siler bu durumda ne gibi önlemler alınması gerekir?

Verdiğiniz örnekte oturum açan kişinin moderatör olduğunu ve adminin daha üst yetkide biri olduğunu düşünerek, örnek vereyim. Veritabanında kullanıcılara yetki seviyesi belirlemelisiniz ve birisinin bu yetkiyi aşmasına izin vermeyebilirsiniz. (php kısmında tabiki). Örneğin, admin herkesi silebilir, moderatör sadece üyeleri silebilir, üyeler silme işlemi yapamaz v.s. gibi yetki kontrolleri ile alabilirsiniz güvenliği. Ajax ile phpye gelen kullanıcı id'sinin yetkisi ile oturum açmış kişinin id'sini karşılaştıracaksınız.

Ekleme: En üst seviyede tedbir için 1 numaralı üyeyi silmeyi engelleyebilir ya da süper admin seviyesi de tanımlayabilirsiniz.
 
Bir uyarı <select><option>10</option><option>13</option></select> kullanımı hatalı bir kullanımdır. <option value="10">10</option> şeklinde mutlaka value değerleri tanımlamalıdır. Standardı bu şekildedir hem de sanırım IE'de değer gitmeyebilir. Muhtemelen örnek vermek için kısalttınız ama yine de bir hatırlatayım dedim.
 
yazilimuzmani' Alıntı:
Herşey için teşekkür ederim eya kardeşim.

Rica ederim hocam.

Sizin vesilenizle register_shutdown_function'ı öğrenmiş oldum, ihtiyacım olmamıştı bugüne kadar. Boşuna dememişler bilgi paylaştıkça çoğalır.

Kolay gelsin.
 
BBNET
Geri
Üst