May 26
Değişken Türleri
İlk önce değişken türlerinden bahsedelim daha sonra açıklamaları yaparız.
integer: Tamsayılar
double-float: Gerçek sayılar anlamadıysanız kafanızda ondalıklı olarak da kalabilir 
string: Karakterler için kullanılır
boolean: Anlamı zaten mantıksal demektir, yani true ve false değerleri için kullanılır
array: Diziler için kullanılır, dizi ne derseniz kısaca daha fazla veriyi düzenli bir biçimde depolamak için kullanılır diyebiliriz
object: Nesne türleri için kullanılır, nesen ne derseniz, anlatılmaz yaşanır diyebiliriz 
NULL: Değer atanmamış değişkenler için kullanılır, zaten Null’un anlamı da boştur.
resource: Bazı fonksiyonlar enteresan değerler döndürür ve onları adam akıllı tekrardan kullanabilmeniz için bir değişkene atamanız gerekir işte bu değişken tiplerine resource (kaynak) denir. Okumaya Devam »
May 25
Değişkenler
İsminde de anlaşılabileceği gibi kendisi siz istediğiniz zaman değişebilir. Bir zaman “leyla” değerini tutar siz “leyla”‘dan sıkılırsınız, “aylin” değerine geçirirsiniz
(güzel örnek oldu
) . Gelelim nasıl tanımlayacağımıza ve kullanacağımıza. Değişkenler önlerine $ işareti konularak kullanılır ve belli edilir. İsimlerinde harf, rakam(ilk karakter hariç) ve altçizgi “_” kullanılabilir. Büyük ve küçük harf duyarlıdır. Tabi ilerde script kodlarken bir karışıklığa neden olmaması için büyük harf kullanıp kullanmayacağınızı,iki kelimeden oluşan değişkenlerinizde “_” kullanıp kullanmayacağınızı şimdiden düşünseniz iyi olur.
PHP’de değişken kullanmak için C’deki gibi tanımlamanıza gerek yoktur. Bir değer verdiğiniz zaman kendisi zaten tanımlanır. Örneğin; Okumaya Devam »
May 23
Proxy scriptine ihtiyacım olduğundan ve proxy mantığını anlamam gerektiğinden dolayı internette bayağı araştırdım. Tam anlamıyla proxy scripti bulmak zor oldu ama sonunda Phproxy adında bir scripte ulaştım. Eğer proxy sitesi açma amaçlı kullanıcaksanız basit bir tasarımla, güzel bir site oluşturabilirsiniz.
Scriptin;
- Javascript engelleme
- Cookie kaydetme / engelleme
- Image (resim) gösterme / engelleme
- Refere bilgileri gönderme
- Url encode (ROT13, Base64)
- Cookieleri yönetme
gibi birçok özelliği mevcut.
Scriptin sourceforge sayfasından ayrıntılı bilgiye ulaşabilirsiniz. İndirmek için burdan.Kolay gelsin…
May 22
İkinci dersimizde biraz PHP’ye başlangıç yapalım. PHP kodlarını yorumlayıcınızın tanıyabilmesi için PHP tagları dediğimiz:
arasına yazmalısınız. Bunun kısa stili de mevcut aslında o da;
bu şekilde. Bunu kullanabilmeniz için ayar dosyanızdan (ki bu php.ini oluyor) short_open_tags ayarını etkin hale getirmeniz gerekir. Ama bu çoğu sunucu da etkin değildir. Çünkü xml tagları da <?xml ?> şeklindedir. En iyisi çoğu PHP programcının kullandığı biçimi yani <?php //kodlar ?> biçimini kullanmaktır. Bunların dışında da hiç kullanıldığına rastlamadığım bir yöntem daha mevcut o da;
<script language="php" >
//kodlar
</script> |
Bu oldukça uzun bir yöntem olduğundan neredeyse hiç kullanıldığını görmedim. Büyük bir ihtimalle bu kullanım biçimine verilen destek de kaldırıldı, emin değilim ama
.
Herneyse gelelim PHP’de en önemli fonksiyon’a
. Tabi ki echo ‘dan bahsediyorum. PHP’ye ve programlamaya yeni başlayanlar bile bu kodun; Okumaya Devam »
May 20
Zamanında dersimizpc.com için yazdım bu dersleri ama orası devam etmiyecek gibi o yüzden burdan yayınlıyorum.
İlk dersimizde PHP’ye giriş yapmak yerine PHP’nin ne olduğu ve ne işe yaradığını anlamanız sizin için daha yararlı olucaktır. PHP Rasmus Lerdrof adlı bir programcının eseridir (1994). Bir grup tarafından değil de sadece bu şahıs tarafından geliştirilmeye başlanmıştır. Tabi daha sonra birçok kişi tarafından da geliştirilmiş ve günümüzdeki halini almıştır (Ben bu satırları yazarken 5.3.2 sürümü) .
PHP Ne İşe Yarar?
PHP web için tasarlanmış bir dildir. Web sayfalarınızda PHP ile;
- Uzun süren işlemlerinizi basit kodlarla kısa sürede yapabilir
- Sunucu ziyaretçi ilişkisi kurabilir(bknz: forum sistemleri vs.)
- Her bir içerik için tek tek Html sayfa hazırlamak yerine bilgileri veritabanından alabilir (bknz: İçerik yönetim sistemleri)
ve internet üzerinde yapmak istediğiniz bir çok fantezinizi gerçekleştirebilirsiniz
.
Neden Php Öğrenmeliyim?
Şu an aklınıza neden PHP öğrenmeliyim zaten bedava forum sistemleri, içerik yönetim sistemleri mevcut diyebilirsiniz. Eğer böyle düşünüyorsunuz yazının geri kalanını okumanıza gerek yok. Size son bir iyilik olarak bedava forum sistemi için SMF’yi bedava içerik yönetim sistemi için ise Wordpress ve Joomlayı önerebiliriz. Tabi bunları kullanmaya başladığınızda kendi eklentilerinizi , temalarınızı ve kendinize özgü düzenlemelerinizi yapmak isterseniz tekrar PHP’nin kollarına atlamanız gerekebilir. O yüzden şahsi tavsiyem devam etmenizdir. Fazla bilgi göz çıkarmaz hele vaktiniz varsa
.
PHP Nasıl çalışır?
PHP yorumlayıcısı bulunan serverlarda çalışır. Genellikle bu serverlarda PHP gibi açık kaynak kodlu olan linux kuruludur. Tabi eklentilerle Windows serverlarda da çalışabilir. Eğer PHP’yi bir serverda değil de kendi bilgisayarınızda çalıştırmak istiyorsanız Xampp adlı programı önerebilirim. Bu programla bilgisayarınızda bir çok PHP fonksiyonunu çalıştırabilirsiniz. Ama bir servera ait özellikleri kullanmak isteyen fonksiyonlar hariç. Mesela mail() fonksiyonu gibi… Bu fonksiyonları kullanırken bedava PHP destekli alan veren siteleri kullanabilirsiniz. Okumaya Devam »
May 19
Php’de tür dönüşümü aslında çoğu zaman gerekli olmayan bişiydir. Zaten php bunu bizim yerimize yapar. Siz bir değişkeni string olarak tanımlamış olsanız ve onu parametresini integer olarak alan bir fonksiyonda kullanmaya çalışsanız bile php onu integer’a çevirir ve çalışmaya devam eder.
Aynı şekilde bir değişken oluştururken de tür belirtmessiniz. Tırnak işareti kullandıklarınız string olarak;
$a='ali ata bak';
$b="emel eve gel";
$c='132123';
//üçüde string olarak kaydedilir.
//bu arada tek tırnak ile çift tırnağın farkı çift tırnağın
//içindeki metinde php motorunun değişken vb. şeyleri
//arayıp yorumlamaya çalışması. Tek tırnağın içindekiler
//yorumlanmadan kullanılır o yüzden daha hızlıdır. |
kullanmayıp sadece rakam yazdıklarınız integer olarak;
$a=23;
$b=1234115;
//ikiside integere
$c='12341';
//bu tırnak işareti kullanıldığı için string olarak kaydedilir. |
tırnak işareti kullanmayıp noktalı olarak yazdıklarınız float olarak;
$a=2.5;
$b=43.008;
//ikisi de float/double'dır
$c='34.4';
//burda da yukarıda anlattığım durum söz konusudur
//$c değişkeni float değil stringdir |
false yada true şeklinde belirttikleriniz boolean olarak hafızaya kaydedilir. Okumaya Devam »
May 18
Yine bir işimi görmek için araştırıp bulduğum bir şey
(Çok bencilim). Aslında burdaki sorun fsockopen’la nasıl bir proxy’e bağlanıcağım değil o proxy’e hangi adrese gitmek istediğimizi nasıl ileticeğimdi. Php manual’den fonksiyona baktım ama orda pek fazla örnek yoktu daha sonra php.net’te aradığımı buldum.
Fsockopen() ile bağlantı kurduktan sonra fputs() ile url’yi aşağıdaki gibi gönderiyorsunuz. Okumaya Devam »
Nis 27
Her ne kadar çok gerekli bir doğrulama olduğunu düşünmesem de bazen kullanmamız gerekebiliyor. Bu iş için bir çok fonksiyon var internette… Bunların çoğu da işinizi görecek seviyede. Ama bir arkadaş bunların hangisinin daha sağlıklı çalıştığına dair bir deneme yapmış ve sonuçlarını yayınlamış. Yaptığı araştırmayı buradan inceleyebilirsiniz. Size 3 ayrı fonksiyon vericeğim işinize geleni kullanabilirsiniz
.
Arkadaşın en başarılı bulduğu regex desenini içeren fonksiyonumuz bu:
function maildogrula($mail){
if(preg_match('/^[-_a-z0-9\'+*$^&%=~!?{}]++(?:\.[-_a-z0-9\'+*$^&%=~!?{}]+)*+@(?:(?![-.])[-a-z0-9.]+(?<![-.])\.[a-z]{2,6}|\d{1,3}(?:\.\d{1,3}){3})(?::\d++)?$/iD', $mail)){return true;}else{return false;}
} |
Diğer önerebileceğim fonksiyon ise daha çok parça parça kontrol etmeye tercih etmiş biraz uzun bir fonksiyon:
function maildogrula($email) {
// First, we check that there's one @ symbol, and that the lengths are right
if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) {
// Email invalid because wrong number of characters in one section, or wrong number of @ symbols.
return false;
}
// Split it into sections to make life easier
$email_array = explode("@", $email);
$local_array = explode(".", $email_array[0]);
for ($i = 0; $i < sizeof($local_array); $i++) {
if (!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$", $local_array[$i])) {
return false;
}
}
if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1])) { // Check if domain is IP. If not, it should be valid domain name
$domain_array = explode(".", $email_array[1]);
if (sizeof($domain_array) < 2) {
return false; // Not enough parts to domain
}
for ($i = 0; $i < sizeof($domain_array); $i++) {
if (!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$", $domain_array[$i])) {
return false;
}
}
}
return true;
} |
İstediğinizi kullanabilirsiniz. Sonuç bazında fazla bir değişiklik olmayacaktır. Ama yine de birinciyi kullanmanızı tavsiye ederim. Kolay gelsin
Nis 21
Sql injection açıklarına karşı önerilen güvenlik önlemlerinden biri de mysql hatalarını gizlemek diye yazar bir çok yerde. Yazan yerlerde nasıl yapıldığını bulamadığım için biraz araştırdım
. Aslında bu yazarların çok sık başvurduğu bir oyundur. Birşey yazıyla/konuyla ilgili ve önemli olduğu için söylenir ama ayrıntıya girilmez. Çünkü ayrıntıya girmek fazladan araştırma, deneme vs. ister. Yorar adamı
.
Mysql hatalarını gizlememizin nedeni aslında çok sql injection’un temeline dayanıyor. Sql injection mysql hatalarından yola çıkılarak yapılan bir saldırı türü. Dikkatli olmak lazım…
Mysql hatalarını php’de birkaç şekilde gizleyebilirsiniz…
İlk yöntem php.ini de ufak bir ayar değişikliği: display_errors‘u bulup karşılığındaki rakamı 0 yapıyorsunuz. Ama bu genelde etkili olucağı için pek önermiyorum.
İkinci yöntemimiz birinci yöntemi kardeşi. Burda da şöyle bir php kod kullanıyoruz:
ini_set ('display_errors', TRUE); |
Gördüğünüz gibi php.ini’yi açıp elle yaptığımız işi burda kodla yaptık. Mantıken php.ini editlemek gibi birşey. Yalnız ini_set fonksiyonuna bazı hostlar izin vermeyebilir. O yüzden en mantıklısı 3. yöntem gibi…
İşte üçüncü yöntemimiz de bu:
Son yöntem gayet işlevsel, ayrıca bunu yönetici cookielerine göre ayarlayarak sadece yöneticilerin hataları görmesini sağlayabilirsiniz. Bu arada burda gösterdiklerim sadece mysql hatalarını değil tüm hataları gizlemektedir. Kolay gelsin…
Nis 16
Günümüzde arama motorları bile (özellikle google) önemser oldu sitenin açılış hızını. Şu an çok küçük bir oranda arama sonuçlarına etki etse dahi, arama motorları bu oranı “hızlı internet siteleri” adına yükseltmeyi düşünüyor. Bunun için site optimizasyonu bugünlerde önemli bir konu. Tabi ki site optimizasyonunun tek yararı sitenizin arama motorları tarafından sevilmesi olmayacaktır. Bu sayede siz ziyaretçilerinize hızlı bir site sunabiliceksiniz ve yaptığınız optimizasyon sonrasında sunucu yükü, aylık bandwith miktarında da düşüş yaşanacaktır. Bu sayede biraz da olsa hosting masraflarından da kısabiliceksiniz.
Konumuza gelicek olursak sitenizin geç açılmasının birçok sebebi vardır. Bunları sitelerin kuruluş hiyerarşisine uygun olarak ayırmak daha doğru olur herhalde: sunucu ve istemci taraflı
. Sunucu taraflı dediğimiz sitenin sunucu tarafından yorumlanan kısmında (php, asp, mysql) bulunan eksiklikler, istemci taraflı dediğimiz ise sitenin ziyaretçiye gönderilen (html, css, js, resimler) kısmında bulunan eksiklikler. İlk önce sunucu sorunlara bir göz atalım:
Okumaya Devam »