• 28-03-2008, 22:11:56
    #46
    Eposta Aktivasyonu Gerekmekte
    Veritabanı kullanmadan basit bir ziyaretçi defteri nasıl yapılır sorusuna bir örnek olarak böyle birşey hazırladım.Ayrıca db dosyasının kullanımınada bir örnek olarak gösterilebilir.

    İlk önce mesajlar.db adında bir veritabanı dosyası oluşturuyoruz.

    Daha sonra index.php sayfasını oluşturuyoruz.

    <table width="425" align="center" bordercolor="#999999">
     
    <tr>
     
    <td width="500" height="229"><div align="center">
     
    <table width="287" border="0">
     
    <form method="POST" action="mesaj.php"><tr><td width="74">Ad Soyad </td>
     
    <td width="10">:</td>
     
    <td width="196"><input name="adsoyad" type="text" size="25" /></td>
     
    </tr>
     
    <tr>
     
    <td>Mesaj</td>
     
    <td>:</td>
     
    <td><textarea name="mesaj" cols="30" rows="5"></textarea></td>
     
    </tr>
     
    <tr>
     
    <td>&amp;nbsp;</td>
     
    <td>&amp;nbsp;</td>
     
    <td><input type="submit" name="gonder" value="Ekle" /></td>
     
    </tr>
     
    </form>
     
    </table>
     
    </div>
     
    <p align="center"><br />
     
    </p>
     
    </td>
     
    </tr>
     
    </table>
     
    <p>&amp;nbsp;</p>
     
    <table width="425" align="center" bordercolor="#999999">
     
    <tr>
     
    <td width="500" height="229">
     
    <?php
     
    include ("mesajlar.db");
     
    ?>
     
    </td>
     
    </tr>
     
    </table>
    En son olarak işlemlerimizin gerçekleşeceği mesaj.php dosyasını oluşturup işlemimizi sonlandırıyoruz.
    <?php
     
    ob_start();
     
    $adsoyad = $_POST["adsoyad"];
     
    $mesaj = $_POST["mesaj"];
     
    $buton = $_POST["gonder"];
     
    if(!$buton==""){if($adsoyad=="" or $mesaj=="") {
     
    die( "<b>Boş Alan Bırakmayınız</b>");
     
    }
     
    echo "<center>Mesajiniz basariyla eklendi.<br>Ziyaretçi Defteri Sayfasına Yönlendiriliyorsunuz.</center>";
     
    header("Refresh: 2; url=index.php");
     
    $dbdosya = "mesajlar.db";
     
    $dosya = fopen ($dbdosya, ‘a’) or die ("Dosya açılamıyor");
     
    $tarih = date("Y-m-d");
     
    $goster = "<b><font color=\"red\">Tarih:</font></b> ".$tarih."<br><b><font color=\"red\">Yazar:</font></b> $adsoyad<br><b><font color=\"red\">Mesaj: </font></b>$mesaj<br><hr>";  
     
    fwrite ($dosya, $goster) ;
     
    fclose ($dosya);
     
    }
     
    ?>
    Örneği iyi incelerseniz, anlayacağınızı ve daha gelişmişlerini yapabileceğinizi düşünüyorum.Hoşçakalın.

    Uygulama dosyasını http://www.guraysuerdem.com/dosya/ziyaretcidefteri.rar adresinden indirebilirsiniz.
  • 28-03-2008, 22:12:40
    #47
    Eposta Aktivasyonu Gerekmekte
    Eğer kullanıcıların üye olarak bilgilerini paylaştığı bir ağ tabanlı sistem geliştiriyorsanız (Session,Cookie) ve bu bilgileri bir veritabanında saklıyorsanız bu bilgiler kullanıcı ve sunucu arasında olduğundan dolayı araya 3. bir kişinin girmesine izin vermemek için kendinizden emin olana dek tüm güvenlik risklerini gözden geçirmeniz gereklidir.

    Bunun en başlangıç noktası projeye başlamadan önce küçük hataları önlemektir.Burada size anlatacağım konu PHP ile olduğu için kodlama yaparken nelere dikkat etmeniz ve bazı ipuçlarını öğrenmenizdir.

    Aşağıda güvenlik ipuçları olarak verdiğim bilgiler projenizi geliştirirken dikkat etmenizi kesinlikle tavsiye ettiğim yöntemlerdir.

    1- Üye ismi ve şifresini 6 karakter veya daha uzun yapın.

    2- Oturum açma hatasında kullanıcıyı bilgilendirin.

    Kullanıcı sisteme giriş yaparken eğer parolayı yanlış girmişse hata mesajı gösterin.Eğer tekrar yanlış parola ile girmeye çalışıyorsa üç yanlış denemeden sonra o kullanıcı adı ile girişi bir müddet yasaklayın ve şifremi unuttum bölümüne yönlendirerek şifrenin mail adresine gelmesini, geldikten sonra değiştirilmesini önerin.

    3- İşlemlerinizin başına @ hata bastırma simgesini yerleştirin.

    Birçok PHP fonksiyonunun önünde @ simgesi yer alır.Eğer yapılması istenen işlem başarısız olursa @ simgesi hatanın ekranda gösterilmesini önleyecektir.En faydalı olduğu işlemlerin başında SQL ile veritabanında bir işlem yaptığınızda hatanın gösterilmesini engeller.Bu hataların engellenmesi ile SQL hatalarından kaynaklanan güvenlik açıklarınıda engellemiş oluruz.

    4- Kullanıcı parolalarını veritabanında şifreleyerek saklayın (MD5,CRYPT,SHA-1)

    Eğer biri veritabanınıza erişim sağladıysa tüm kullanıcı bilgilerini ve parolalarını görebilir.Ama parolayı bir şifreleme yöntemi ile sakladığımızda kişinin parolayı öğrenmesini engelleriz.Şifreleme Metodları yazımda bu konu hakkında detaylı bilgi alabilirsiniz.

    5- Hiçbir zaman yönetici isminizi admin,root veya yönetici şeklinde yapmayın.

    Herkesin bildiği ve çok kullanılan üye isimlerini kullanmanız risklidir.

    6- Kullanıcının sisteme giriş yaptığı son zamanı ve IP adresini saklayın.

    Kullanıcının giriş yaptığı son zamanı saklayın ve IP adresini kaydedin.Ayrıca kullanıcı daha sonra giriş yaptığında son giriş zamanını ve ip adresini kullanıcıyada gösterin.

    7- Herhangi bir form alanı verisinden tehlikeli SQL,PHP,HTML komutlarını ve karakterleri temizleyin.

    strip_tags() , str_replace() ve stripslashes() fonksiyonları ile bu komutları engelleyebilirsiniz.

    8- HTML form alanlarınızda “maxlenght” seçeneğini kullanın.

    Eğer veritabanında saklayacağınız üye ismi veya parolanın maximum uzunluğunu 8 karakter olarak belirlemek isterseniz form alanınıza “maxlenght” seçeneğini eklemeniz gereklidir.Bu sayede uzun girişleri engelleyebilirsiniz.

    Örnek: <input type=”text” name=”giris” size=”8″ maxlenght=”8″>

    9- $_REQUEST yerine $_POST kullanın.

    10- Son olarakta eğer önemli ve büyük bir projeyse SSL Sertifikası kullanın.

    Daha yazılması gereken birçok şey var fakat tecrübe kazandıkça herşeyi öğreneceksiniz.Şu an için temel önlemleri öğrenmeniz diğer yöntemler için bir altyapı taşıyacaktır.
  • 28-03-2008, 22:13:23
    #48
    Eposta Aktivasyonu Gerekmekte
    Metin belgesinde bulunan satırları tek tek saymak biraz yorucu olsa gerek.Bu çok kısa kod sayesinde bu yoruculuğu engellemiş oluyoruz.Tabi ben başka bir yöntemde biliyorum örneğin metin dosyasının içindekileri editör ile açarak kaç satır olduğunu sol taraftaki satır sayacı ile öğrenmek.Ama bizim amacımız PHP ile öğrenmek olduğu için önemli olan bu komutu uygulamanız.
    <?php        
    echo count(file("metin.txt"));        
    ?>
  • 28-03-2008, 22:14:31
    #49
    Eposta Aktivasyonu Gerekmekte
    Genellikle formdan gelen bilgilerdeki html kodlarını temizlemek için stript_tags() fonksiyonunu kullanırız.Örnek vermek gerekirse bir ziyaretçi formunda,üyelik kayıt formunda,tartışma forumunda vb. gibi yerlerde kullanılabilir.


    Kullanım Şekli:

    strip_tags($değişken)

    Örnek:

    <?php   
     
    $mesaj = "<a href=\"index.php\"><b>Ana Sayfamız</b></a><br><br>";    
     
    // strip_tags kullanmadan bakalım    
     
    echo $mesaj;    
     
    //  şimdi strip_tags kullanalım    
     
    echo strip_tags($mesaj);    
     
    ?>
    Gördüğünüz gibi strip_tags kullanmadığımızda html kodu çalıştı fakat kullandığımızda çalışmadı ve yazımız normal bir text olarak gözüktü.Şimdide belirttiğimiz tagların çalışmasına izin verelim.

    <?php   
     
    $mesaj = "<a href=\"index.php\"><b>Ana Sayfamız</b></a><br><br>";    
     
    echo strip_tags($mesaj, "<a><b>");    
     
    ?>
    Burda ise <a> ve <b> taglarının kullanımına izin verdik ve html kodu çalıştı.
  • 28-03-2008, 22:15:39
    #50
    Eposta Aktivasyonu Gerekmekte
    stripslashes() fonksiyonu bir değerdeki ters slash (\) işaretini temizlemeye yarar.Genellikle formda textarea vb. bölümünden çekilen sql sorgularında slash işaretinden kurtulmanızı sağlayan fonksiyondur.


    Kullanım Şekli:

    stripslashes($değişken)

    Örnek:
    <?php 
     
    $isimsoyisim = "Doğan\’ın Blogu"; 
     
    echo stripslashes($isimsoyisim); 
     
    ?>
    Gördüğünüz gibi $isimsoyisim içindeki \\ ters slash işaretini temizledi ve okumadı.

    addslashes() fonksiyonu ise tam tersini yapar slash olmadığı halde tırnağın önüne bir ters slash ekler.

    Örnek:
    <?php 
     
    $isimsoyisim = "Doğan’ın Blogu"; 
     
    echo addslashes($isimsoyisim); 
     
    ?>
  • 28-03-2008, 22:16:46
    #51
    Eposta Aktivasyonu Gerekmekte
    str_replace() fonksiyonu bazı karakterleri belirttiğiniz karakterler ile değiştirir.Bu herhangi bir karakter veya bir sözcük olabilir.

    Kullanım Şekli:

    str_replace(bul, değiştir, dizi değişken, dizi sayısı)

    Bul,değiştir ve dizi değişken içeriği gereklidir fakat dizi sayısı içeriği gerekli değildir opsiyoneldir.

    Örnek:
    <?php  
     
    $meyveler = array("elma","portakal","mandalina","muz","erik");  
     
    print_r(str_replace("mandalina","greyfurt",$meyveler));  
     
    ?>
    Ekran Görüntüsü:

    Array ( [0] => elma [1] => portakal [2] => greyfurt [3] => muz [4] => erik )

    Mandalinayı greyfurt ile değiştirdik.Yeni Sıralama (elma,portakal,greyfurt,muz,erik) şeklinde olacaktır.

    Bu fonksiyon ile karakter değişimi yapabilen fonksiyonlar, form uygulamaları için tag temizleme vb. fonksiyonlar yazabilirsiniz.
  • 28-03-2008, 22:17:30
    #52
    Eposta Aktivasyonu Gerekmekte
    strlen() Fonksiyonu bir değerde bulunan karakterlerin sayısını alır.Sayıyı alırken boşluğuda değerlendirir.

    Kullanım Şekli:

    strlen($değişken)

    Örnek:
    <?php  
     
    $isim = "Güray Süerdem";  
     
    echo strlen($isim);  
     
    ?>
    Normalde Güray Süerdem 12 karakterlidir fakat arada olan boşlukta bu sayıya eklenince 13 oluyor.
  • 28-03-2008, 22:19:57
    #53
    Eposta Aktivasyonu Gerekmekte
    substr() fonksiyonu bir dizenin belirli bölümünü döndürür.

    Kullanım Şekli:

    substr(dize,başlangıç,uzunluk)

    Notize ve başlangıç gereklidir uzunluk opsiyoneldir.

    Örnek:
    <?php   
     
    $adsoyad = "Güray Süerdem";   
     
    echo substr($adsoyad,8);   
     
    ?>
    Ekran Çıktısı:

    erdem

    Uzunluk değerini kullanarak yapalım:

    <?php   
     
    $adsoyad = "Güray Süerdem";   
     
    echo substr($adsoyad,8,4);   
     
    ?>
    Ekran çıktısı:

    erde
  • 28-03-2008, 22:21:14
    #54
    Eposta Aktivasyonu Gerekmekte
    scandir() fonksiyonu belirttiğiniz dizinin içindeki klasörleri ve dosyaları bir dizi olarak döndürür.

    Kullanım Şekli:

    scandir(dizin,sıralama,bağlam)

    Notizin gereklidir, sıralama ve bağlam gerekli değildir.Sıralama belirtilmediği sürece default olarak 0′dır ve normal olarak sıralar.1 ise ters sıralar.

    Örnek:
    <?php  
     
    print_r(scandir("resimler"));  
     
    ?>
    Ekran Çıktısı:

    Array
    (
    [0] => .
    [1] => ..
    [2] => logo.gif
    [3] => banner.gif
    [4] => smiley.jpg
    [5] => alt.jpg
    [6] => ust.gif
    [7] => orta.gif
    )

    Tabi benim resimler klasörümde bunlar vardı sizinkinde ne var bilinmez