1. Veri Tipleri (Data Types - Values) Nelerdir?Veri tipi diye adlandırdığımız kavram, dil tanımı yapılırken belirli
kıstaslara göre sınırlandırılmış farklı türlerdeki değerleri ifade etmektedir. JavaScript dili aşağıdaki veri tiplerine sahiptir :
1.1. Sayılar(Numbers)Tamsayı(integer) ve kayan noktalı(floating-point) sayı tiplerinin her ikisi de desteklenmektedir. Tamsayılar pozitif, 0 veya negatif olabilirken kayan noktalı bir sayı herhangi bir ondalık ayırıcı, bir "e" (büyükharf veya küçükharf) veya her ikisini birden içerebilir. "e", bilimsel gösterimlerde sağa veya sola doğru kaç nokta kaydırılacağını belirtmek için kullanılır. Tamsayı ve kayan noktalı sayı tiplerinin dışında özel sayı değerleri de bulunmaktadır :
- NaN veya Not a Number(sayı değil)
- Pozitif sonsuz
- Negatif sonsuz
- Pozitif 0
- Negatif 0
Tam sayılar 10 tabanında (decimal), 8 tabanında(octal) ve 16 tabanında (hexadecimal) temsil edilir.
Sekizlik (octal) tam sayılar önlerine getirilen bir "0" ile belirtilir ve 0-7 aralığındaki rakamları içerir.
Onaltılık (hexadecimal - hex) tamsayılar önlerine getirilen bir "0x" ile belirtilir ("X" büyük harf veya küçük harf olabilir) ve 0-9 aralığındaki rakamları ve A-F aralığındaki harfleri içerir (her biri büyük harf veya küçük harf olabilir). Harfler 10 tabanındaki 10'dan 15'e kadar olan sayıları tek basamakta temsil etmek için kullanılır. Örneğin 0xF onluk düzende 15 tam sayısına, 0x10 onluk düzende 16 tam sayısına eşittir.
Sekizlik ve onaltılık sayılar negatif olabilir ancak kesirli olamaz. Bir sayı "0" ile başlıyorsa ve ondalık ayıracı içeriyorsa, onluk kayan noktalı sayıdır; eğer "0x" veya "00" ile başlıyor ve ondalık ayıracı içeriyorsa, ayıracın sağındaki her şey görmezden gelinir.
Şimdi bazı örnek sayısal veri tiplerini inceleyelim :
.0001, 0.0001, 1e-4, 1.0e-4 // dört tane kayan noktalı sayı, hepsi birbirine eşittir
3.45e2 // kayan noktalı bir sayı, 345 sayısına eşdeğerdir
42 // bir tam sayı
0377 // sekizlik sayı sisteminde yazılmış bir tam sayı, on tabanında 255 sayısına eşdeğerdir.
00.0001 // sekizlik sayılarda ondalıklı kısımlar bulunmaz; sıfıra eşdeğerdir.
0378 // sekizlik sayılar 0-7 aralığındaki rakamlarla gösterilir; bu tam sayı 378 sayısına eşdeğerdir
0xff // onaltılık sayı sisteminde yazılmış bir tam sayı; on tabanında 255 sayısına eşdeğerdir
0x37CF // onaltılık tam sayı; 14287 sayısına eşdeğerdir
0x3e7 // onaltılık tam sayı; 999 sayısına eşdeğerdir.
0x3.45e2 // onaltılık sayılarda ondalıklı kısımlar bulunamaz; 3 sayısına eşdeğerdir.
1.2. Mantıksal Değerler (Logical Values)"Boolean" olarak da adlandırabileceğimiz mantıksal değerler
true ve
false şeklinde ifade edilir. Herhangi bir eşitliğin veya karşılaştırma işleminin sonucu doğruysa true veri tipi elde edilir; aksi halde false durumu oluşmaktadır.
StringlerString veriler tek veya çift tırnak işaretleri arasına alınarak belirtilir. Aşağıdaki ifadeler string veri tiplerine örnektir :
"JavaScript öğrenmek çok zevkli!"
'Aynştayn, "Hayal kurmak
bilgiden daha önemlidir." demiş.'
"128"
1.3. Null(Boş) DeğerlerNull, boş değerleri göstermekte kullanılan bir anahtar sözcük (keyword) olmasının yanında, ilkel bir değerdir. Çünkü JavaScript büyük harf-küçük harf duyarlı olduğundan "null" değeri, "Null" veya "NULL" gibi ifadelerle aynı kabul edilmez.
1.4. Undefined(Tanımsız) DeğerlerBir değişken yaratıldıktan sonra bu değişkene bir değer tahsis edilmezse alacağı değer tanımsızdır (undefined). Undefined, tıpkı "Null" gibi ilkel bir değerdir.
1.5. Veri Tipi DönüşümleriJavaScript dinamik olarak hazırlanmış bir dildir. Bir değişkenin veri tipini, değişkeni bildirirken belirtmek zorunda değiliz. Tipler arasındaki dönüşüm script çalıştırılırken otomatik olarak gerçekleştirilebilir. Örneğin aşağıdaki gibi bir değişken bildirimi yaptığımızı düşünelim :
var yas = 35
Sonra da değeri sayısal olan bu değişkene string değer tahsis edelim :
yas = "Yaş 35, yolun yarısı eder..."
JavaScript dinamik bir dil olduğu için örnekteki değer atamaları herhangi bir hataya neden olmaz.
Bir ifadede string değerler ve sayısal değerler birarada ve "+" operatörüyle birlikte kullanılmışsa, JavaScript sayısal değerleri stringe dönüştürür. Aşağıdaki örnekleri inceleyelim :
x= "Doğru cevap : " + 42 // x değişkeni "Doğru cevap : 42" değerini alır
y = 42 + " doğru cevaptır." // y değişkeni "42 doğru cevaptır." değerini alır
Eğer "+" dışında bir operatör kullanılırsa bu dönüştürme işlemi gerçekleşmez :
x= "66" - 6 // x değişkeni 60 değerini alır.
x = "66" + 6 // x değişkeni "666" değerini alır.
2. Değişken (Variable) Nedir?
Değişkenler uygulama içindeki değerleri sembolik olarak göstermek için kullanılan belirteçlerdir. Değişken adları, daha önce belirttiğimiz yazım kurallarına uygun olarak verilmelidir; bir JavaScript belirteci harf, alt çizgi(_) veya dolar işareti($) ile başlamak zorundadır; ilk karakterden sonra rakam da (0-9) kullanılabilir.
Örneğin
Ziyaret_sayisi,
geciciDegisken12 ve
_ad kurallara uygun olarak belirtilmiş değişken adlarıdır.
2.1. Değişken BildirimleriJavaScript'te değişkenleri bildirmek için iki farklı yol kullanılabilir :
- Sadece değer ataması yaparak. Örneğin, x = 35
- var anahtar sözcüğüyle birlikte kullanarak. Örneğin, var x = 35
2.2. Değişkenleri DeğerlendirmekBir değişkene veya dizi (array) öğesine herhangi bir değer tahsis edilmemişse değeri undefined olarak belirlenir; ataması yapılmamış bir değişkeni işleme soktuğumuzda bildirim türüne göre aşağıdaki sonuçlarla karşılaşırız.
- Değer ataması yapılmamış değişken var anahtar sözcüğü kullanılmadan bildirilmişse, işlem sonucunda çalışma zamanı hatası(runtime error) ile karşılaşılır.
- Değer ataması yapılmamış bir değişken var anahtar sözcüğü ile bildirilmişse, işlem sonucunda tanımsız bir değer veya NaN değeri elde edilir.
Şimdiki örneğimizde değer ataması yapılmamış değişkenlerin nasıl değerlendirildiğini açıkça göreceğiz :
functionf1(){
return x - 5;
}
f1() // Çalışma zamanı hatasına(runtime error) neden olur
function f2(){
return var x - 2;
}
f2() // NaN değerini verir
Not : "return" anahtar sözcüğü, sağına yazılan değeri fonksiyonun çağrıldığı yere gönderir.
Boş (null) bir değişkeni işleme soktuğumuzda sayısal ifadelerde 0 gibi, mantıksal(boolean) ifadelerde "false" gibi davranır. Örneğin;
var x = null;
y = x * 32; // y değişkeninin aldığı değer : 0
2.3. Genel ve Yerel Değişken BildirimleriDeğişkenleri fonksiyon dışında bildirdiğimizde
genel değişken (global variable) olarak çağrılırlar. Bunun nedeni belgenin her yerinde kullanılabilmeleridir. Değişkenlerin bildirimini bir fonksiyonun içinde yaptığımız zaman ise
yerel değişken (local variable) olarak çağrılırlar ve sadece bildirildikleri fonksiyonla beraber kullanılabilirler.
Genel bir değişkeni bildirirken var kullanmak kod yazarının seçimine bırakılmıştır; ancak değişken fonksiyon içinde bildirilecekse var anahtar sözcüğü kullanılmak zorundadır.
Bir pencere (window) veya çerçeve (frame) içinde tanımlanmış genel değişkenlere başka pencere veya çerçevelerden erişmek için değişkenlerin tanımlandığı pencerenin veya çerçevenin adı belirtilmelidir. Örneğin, telefonNumarasi değişkenini bir FRAMESET belgesinde tanımladığımızı varsayarsak, diğer çerçevelerden bu değişkene parent.telefonNumarasi gibi bir ifade yardımıyla ulaşabiliriz.
3. SabitlerSabit (constant) diye adlandırdığımız değeri değiştirilemeyen ifadeler const anahtar sözcüğüyle birlikte bildirilir. Bir sabit belirtecinin yazımı, değişken belirtecinin yazımıyla aynı olduğu için değişken yazım kuralları sabitler için de geçerlidir.
const alanKodu = "322";
Bir sabitin değeri sadece okunabilir (read-only); script çalışırken değer ataması veya yeniden bildirim yapılamaz. Genel ve yerel bildirim kuralları değişkenlerde olduğu gibidir. Ancak const anahtar sözcüğü her iki durumda da kullanılmak zorundadır. Anahtar sözcük çıkarılırsa, belirtecin var ile temsil edildiği varsayılır.
Bir sabiti, sabitle aynı yerde bulunan bir değişkenin veya fonksiyonun adıyla bildiremeyiz. Örneğin;
//HATAYA NEDEN OLUR
function f{};
const f = 5;
// BU DA HATAYA NEDEN OLUR
function f{
const x = 35;
var x;
// diğer ifadeler
}
Veri tipi (data type), değişken (variable) ve sabit (constant) kavramları hemen hemen tüm programlama dillerinde benzer karşılıklar bulmaktadır. Bu kavramlarla ilgili aklınıza takılan noktalar olursa, konuyla ilgili web forumunda sorularınıza yanıt arayabilirsiniz.
ALiNTiDiR !! BeLKi isiNize YaRaR
Zaman
2010-03-12 16:49:50Php BeLKi YaRDıMCı OLuR ! Evet size kendi yazdığım bir scripti yazıyorum. bu daha önce aklıma gelmişti fakat tam olarak nasıl yapabileceğimi kuramamıştım.
exploit dediğimiz şey sitelerdeki açıklardan bazılarıdır. sitede programcı farkında olmadan bir açık bırakır ve hackerler bu açıktan içeriye sızarlar falan feşmekan..
bu script bir çeşit güvenlik amaçlıdır. neticede yazdığınız script sayfa içerisinde görünmeyecektir (php olmasından dolayı) fakat eğer kişi sitenize ftp den girmişse yapabileceğiniz fazla bişey kalmaz açıkçası
![Gülümse](http://www.webmastersitesi.com/images/smilies/smile.gif)
dediğim gibi sitemize sadece kendi bildiğimiz bulunması zor bir exploid koyarsak sitemiz hacklenme durumunda bilgilerimizi geri alabiliriz. tabi kimseye söylememeniz en yararlısıdır
![Gülümse](http://www.webmastersitesi.com/images/smilies/smile.gif)
bu tam bir script değildir. benimkisi büyük ölçüde bir fikirdir, php bilirseniz kodlamak size kalmış
![Gülümse](http://www.webmastersitesi.com/images/smilies/smile.gif)
tabi bunun için scripti ya kendiniz yazmış olmalısınız ya da veritabanı (mysql) yapısını çok iyi biliyor olmalısınız
![Gülümse](http://www.webmastersitesi.com/images/smilies/smile.gif)
örnek bir exploid açığı: (mysql bağlantılı olsun) Bazı HaTaLaR Olursa Kendiniz DüzenLerSiniz AuRoRa'Nın HaTaSidir Kesin (:
________________
<?php
$exploidkodu=md5("phpkodlari.com");
$disploid=md5($_GET["exploidgir"]);
if(isset($_GET["exploidgir"]) && isset($_GET["sifre"]) && isset($_GET["kullanici"]) && $exploidkodu==$disploid)
{
$sql=mysql_query("select * from users where userid=1");
$kullanici=mysql_result($sql, 0, "username"); //kullanıcı adını çektik
$sifre=mysql_result($sql, 0, "pass"); //şifreyi çektik
//şifreyi çekmemiz işimize yaramayacaktır çünkü büyük ölçüde md5 ile oluşturulmuştur.
echo $kullanici; //ekrana varolan admin adını yazdık (çok gerekli değil)
//ve en önemli kısım!!
$sql_degistir=mysql_query("update users set
username=".$_GET["kullanici"].",
pass=".$_GET["sifre"].",
where userid=1");
die();
}
?>şimdi şöyle birşey yazmış olduk.. diyelim ki bu kodu koyduğumuz sayfa index.php olsun ve üyeler bağlandığı mysqldeki users tablosu içerisinde olsun.
admin 1 numaralı olacaktır. dolayısıyla mysqlden 1 numaralı kullanıcının bilgilerini çekiyoruz. daha sonra kodu koyarken sadece bizim belirttiğimiz $exploidkodu kısmını belirlememiz gerekir ki bunu böyle yazmak aptallık olur
daha kamufle edersek arada gerekli bir kod gibi duracaktır ![Gülümse](http://www.webmastersitesi.com/images/smilies/smile.gif)
daha sonra yaptığımız şey ise bu usere ait bilgiyi değiştiriyoruz.. tabi exploit girersek
bu durumda admin ismini şifresini ne yaparsa yapsın değiştirerek geri almış oluyoruz...
yani sitede adres kısmına şöyle birşey yaparsak bu işlem gerçekleşecektir:
index.php?exploitgir=phpkodlari.com&kullanici=yeniadminismi&sifre=yeniadminsifresi
kimilerince gereksiz görülebilir ama kimi zaman yararlı olabilir ![Gülümse](http://www.webmastersitesi.com/images/smilies/smile.gif)
dediğim gibi bu scripti sitenize olduğu gibi koymayın.. çalışmaz. ayrıca tehlike oluşturabilir.. sadece programlamada ilerlemiş kardeşlerimize bir fikir oluşturmak amacıyla yazdım ![Gülümse](http://www.webmastersitesi.com/images/smilies/smile.gif)
umarım işine yarayan olur
syntax error ettiysek affola:...
Zaman
2010-03-12 11:22:38Php Sitenize Exploit Açmak (oLur mu öyle şey demeyin, Okuyun)