Luhn Algoritması ile Kredi Kartı Doğrulaması

Kredi kartı numarası doğrulamada kullanılan Luhn algoritamasının çalışma prensibi şöyledir:

Örneğin hayali 7419 8339 5689 1008 numarasını ele alalım.

1. adım:
Tek hanelerdeki rakamlar toplanır.
4,9,3,9,6,9,0,8 rakamları için;
4+9+3+9+6+9+0+8=48

2. adım:
Çift hanelerdeki rakamlar 2 ile çarpılır ve elde edilen sayıların basamakları toplanır.
7,1,8,3,5,8,1,0 rakamları için;
Bu rakamları 2 ile çarparsak 14,2,16,6,10,16,2,0 sayılarını elde ederiz.
Elde ettiğimiz sayıların basamaklarındaki rakamları toplarsak;
5+2+7+6+1+7+2+0=30

3. adım:
Hesaplanan iki toplam sonucu birbirleriyle toplanır. Elde edilen sayı 10′un katı ise bu kredi kartı numarası geçerli bir numaradır.
48+30=78 (10′un katı değil, numara geçersiz)

MARQUEE Elementi ile Basit Kayma Efekti

HTML’in marquee elementi ile JavaScript, Flash gibi başka bir teknolojiye gerek duymadan basitçe kayan yazı veya resim efekti oluşturabiliriz. Bu element span ya da img elementleri gibi bir satır içi (inline) elementtir. Firefox ve Internet Explorer tarayıcıları tarafından desteklenmektedir.

Örnek kullanımları:

<marquee scrollamount="5" bgcolor="yellow" width="200" behavior="scroll" direction="left">webgelistirici.com</marquee>

webgelistirici.com

<marquee bgcolor="yellow" width="200" behavior="scroll" direction="left"><img src="images/smiley.jpg"/></marquee>

<marquee scrollamount="5" bgcolor="yellow" width="200" behavior="alternate" direction="left">webgelistirici.com</marquee>

webgelistirici.com

<marquee scrollamount="10" bgcolor="yellow" width="200" behavior="slide" loop="10" direction="left">webgelistirici.com</marquee>

webgelistirici.com

scrollamount niteliğinin değeri ne kadar büyük olursa metin o kadar hızlı kayar. behavior niteliğinin altenate olması sağa-sola kaymayı, slide olması loop niteliğinde verilen sayı kadar kaymanın tekrarlanacağını, scroll olması kaymanın sürekli tekrarlanacağını ifade eder. Ayrıca img elementinde de kullanılabilen width, height, hspace, vspace, align niteliklerini de destekler ve aynı şekilde kullanılır.

İnternette tüm özelliklerini bir arayüzden seçebilmemize olanak veren HTML Marquee Generator araçları mevcuttur. Örneğin şu adreste bir tane mevcut.

MySQL sorgusunun içine açıklama yazmak

Programlama dillerinde açıklamalar eklemek için çeşitli yapılar bulunur. Örneğin PHP’de tek satırlık ve çok satırlık açıklamalar şu şekilde kullanılır.

// tek satırlık açıklama
/*
çok
satırlık
açıklama
*/

MySQL sorguları içinde de benzer şekilde açıklamalar kullanmak mümkündür.

SELECT * FROM ulke WHERE /* tr: Türkiye */ kod=‘tr’ OR /* fr: Fransa */ kod=‘fr’

Bu sorgu aşağıdaki sorgu ile eşdeğerdir.

SELECT * FROM ulke WHERE kod=‘tr’ OR kod=‘fr’

Farklı tarayıcılar için farklı JavaScript harici dosyası yüklemek

Sayfamızda kullanacağımız JavaScript kodlarını harici bir dosyada toplayabiliriz. Bu durumda bu kodları <script src="harici.js" type="text/javascript"> şeklinde sayfamıza ekleriz. Tarayıcı türümüze özel kodlarımızı ayrı dosyalarda toplayıp, sadece ilgili tarayıcı için gerekli kodları yükletmek istersek şu yöntemi kullanabiliriz.

if(document.all) // Internet Explorer
{
   document.write(‘<script src="ie.js" type="text/javascript"></script>’);
}
else if(document.style) // Firefox
{
   document.write(‘<script src="ff.js" type="text/javascript"></script>’);
}

 

Burada özellik algılama tekniğini kullanarak tarayıcı türünü öğrendik ve uygun harici JavaScript dosyasını sayfamıza dahil ettik. Tarayıcı türünü tespit etmek için navigator.userAgent ile elde edilen metin de kullanılabilirdi. Ayrıca write() fonksiyonu içine bu şekilde HTML kodları gömmek mümkündür.

Limitli bir sorgunun limitsiz halinin sonuç sayısını bulmak

Bir sorgunun döndüreceği sonuç sayısını limit eki ile sınırlandırabiliyoruz. Özellikle sayfalama yaparken bunu çok sık kullanırız. Örneğin

SELECT * FROM tablo WHERE sehir=‘İstanbul’ LIMIT 10

sorgusu bize şarta uyan ilk 10 kaydı getirecektir. Peki ama limit koymasaydık toplam kaç kayıt gelecekti? Toplam kayıt sayısını bulmak için aklımıza gelen ilk yol aynı sorguyu bu kez limitsiz olarak işletmektir. Bunun yerine MySQL’in SQL_CALC_FOUND_ROWS ifadesi böyle bir durumda bizi ikinci bir sorgu yazmaktan kurtarıyor.

SELECT SQL_CALC_FOUND_ROWS * FROM tablo WHERE sehir=‘İstanbul’ LIMIT 10

Yukarıdaki sorgunun limitsiz halinin sonuç sayısını bulmak için aşağıdaki yöntemi kullanıyoruz.

$toplam_kayit_sayisi_s=mysql_query(’select found_rows() as adet’);
$toplam_kayit_sayisi_fa=mysql_fetch_array($toplam_kayit_sayisi_s,MYSQL_ASSOC);
$toplam_kayit_sayisi=$toplam_kayit_sayisi_fa[‘adet’];

Böylece yeni bir sorgu işletmeden toplam kayıt sayısını elde etmiş oluruz. Yukarıdaki işlemler, içinde SQL_CALC_FOUND_ROWS ifadesi geçen en sonuncu sorgu için uygulanacaktır.

Temel XHTML kuralları

  1. Tüm element ve nitelikler küçük harfle yazılmalıdır.
  2. Açılan imler sırayla kapanmalıdır. <b><i>merhaba</b></i> değil, doğrusu <b><i>merhaba</i></b>
  3. Bitiş imi mutlaka kullanılmalıdır. Örneğin <p> imi daima </p> imi ile bitmelidir.
  4. İçeriği olmayan boş elementlerin sonuna “/” konmalıdır. <br/>, <hr/> gibi
  5. Nitelikler mutlaka değer verilerek kullanılmalıdr. <input type="checkbox" checked /> değil, doğrusu <input type="checkbox" checked="checked" />
  6. Dökümanın HEAD bloğu içindeki ilk element <title> elementi olmalıdır.
  7. <a> ve <img> elementlerinde “alt” ve “title” niteliklerinin kullanımına özen gösterilmelidir.
  8. Dökümanın DOCTYPE tanımına uygun sözdizimi kullanılmalıdır.

Dizi elemanlarını formatlı olarak görüntülemek

PHP’nin print_r() fonksiyonu bir dizinin içeriğini ekranda görüntülemeye yarar. Bazen program geliştirirken bir dizinin o anki içeriğini öğrenmek isteriz. Bu durumda diziyi döngü içinde kullanıp her bir elemanını ayrı ayrı yazdırmak yerine doğrudan bu komutu kullanabiliriz. Bu komutu kullandığımızda, HTML birden fazla boşluğu tek boşluğa indirgediği için tüm dizi içeriği yan yana gösterilecektir. Eleman sayısı fazla olan dizilerde bu ifadenin okunması ve anlaşılması zor olacaktır.

$dizi=array(‘Ahmet’,‘Mehmet’,‘Caner’);
print_r($dizi);

print_r() ekran görüntüsü 1

Bu fonksiyonu HTML’in <pre> elementi içinde kullanırsak tüm boşluklar olduğu gibi bırakılır ve dizi içeriği okunup anlaşılması daha kolay bir şekilde görüntülenir.

echo ‘<pre>’;
print_r($dizi);
echo ‘</pre>’;

print_r() ekran görüntüsü 2

CSS’de bir kuralı baskın yapmak

Bir element içinde farklı yerlerde tanımlanmış CSS kurallarının çakışması halinde hangisinin geçerli olacağını elemente yakınlık belirler. Örneğin elementin style niteliği içindeki bir CSS kuralı, sayfanın baş tarafında <style></style> bloğu içinde bulunan bir CSS kuralına göre daha baskındır. Ancak !important ifadesi ile hangi kuralın baskın olacağına biz karar verebiliriz.

<style type="text/css">
.etiket { color: red; }
</style>
<span class="etiket" style="color: green;">merhaba</span>

Bu durumda “merhaba” yazısının rengi yeşil olacaktır.

<style type="text/css">
.etiket { color: red !important; }
</style>
<span class="etiket" style="color: green;">merhaba</span>

Bu durumda ise yazı rengi kırmızı olacaktır. !important ifadesi ile, çakışma olması halinde hangi kuralın baskın olacağını biz belirlemiş olduk.