Tem 23
Php’de yeni başlayanların sıklıkla karşılaştıkları bir sorudur. Farkları sıralarsak:
- Cookie’ye kaydedilen veriler kullanıcının tarayıcısında (browser), session’a kaydedilenler ise server tarafında depolanır.
- Cookie kullanıcı silene kadar yada cookie’yi yazan kişinin belirttiği tarihe kadar depolanır. Session ise tarayıcı kapandığı an biter.
- Cookie kullanıcı tarafından editlenebilir. Session’da böyle birşey söz konusu değildir. Çünkü server tarafında saklanır.
Bu bilgilerle düşünerek session’ın anlık üye girişlerinde, alışveriş sepetinin saklanmasında; cookie’nin ise beni hatırla, kişisel site kullanım seçenekleri gibi uygulamalarda kullanılacağını rahatça kestirebiliriz. Kolay gelsin…
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 10
Bazen eski versiyon tarayıcı kullananlara gıcıklık yapmak için, bazen mobile tarayıcıları sitemizin mobile sürümüne yönlendirmek için tarayıcıya yada tarayıcı sürümüne göre yönlendirme yapmaya ihtiyaç duyarız. Ben de bu iki nedenden dolayı biraz araştırdım sonunda güzel bir php nesnesine ulaştım. Yeni işletim sistemini, tarayıcıyı, sürümünü, arama motoru botlarını tanıyabilen bir nesne…
Tipik kullanımı şu şekilde:
include 'browser.php';
$browser = new Browser();
if( $browser->getBrowser() == Browser::BROWSER_FIREFOX && $browser->getVersion() >= 2 ) {
echo 'You have FireFox version 2 or greater';
} |
Gördüğünüz gibi ilk önce Browser nesnemizin bir kopyasını oluşturuyoruz daha sonra da $browser->getBrowser() ile browser türünü,
$browser->getVersion() ile de browser versiyonunu alabiliyorsunuz. Bunlardan başka getPlatform() fonksiyonuyla işletim sistemini, isRobot fonksiyonuyla gelenin bir bot olup olmadığını, isMobile() fonksiyonuyla gelenin mobil bir tarayıcıdan gelip gelmediğini öğrenebilirsiniz. Daha birçok fonksiyonu var. Fonksiyonlarını dosyanın 184. satırından itibaren açıklayarak tanımlamış inceleyip kullanabilirsiniz…
Browser.php dosyasını burdan indirebilirsiniz.
Son olarak kullanacağınız bazı fonksiyonların döndürdüğü değerler için aşağıdaki listeden yardım alabilirsiniz.
Okumaya Devam »