• 29-10-2009, 15:10:16
    #1
    Eposta Aktivasyonu Gerekmekte
    <?php
    /* 
    //Veritabanı tablosu 
    CREATE TABLE `se_comments` ( 
    `com_id` INT NOT NULL AUTO_INCREMENT , 
    `title` TEXT NOT NULL , 
    `username` TEXT NOT NULL , 
    `email` TEXT NOT NULL , 
    `date` int(10 ) NOT NULL default '0', 
    `comment` TEXT NOT NULL , 
    `guest_ip` varchar(15 ) NOT NULL default '', 
    PRIMARY KEY ( `com_id`  )  
     ); 
    */ 
    
    // Aşağıya veritabanı bilgilerinizi girin 
    
    $hostname = "localhost"; // DBHost adresi 
    $db_username = "root"; // database girişi kullanıcı adını yazın 
    $db_password = "root"; // database girişi şifresini yazın 
    $database = "dbname"; // Database Adını yazın 
    
    // Veritabanı bağlantısı yapıyor 
    $connection = mysql_connect($hostname,$db_username,$db_password ) or die (mysql_error( ) );  
    $database = mysql_select_db($database,$connection ) or die (mysql_error( ) );  
    
    
    $query = "SELECT * FROM se_comments"; 
    $comments = mysql_query($query ); 
    
    // Toplam Yorum 
    $comments = mysql_num_rows($comments ); 
    
    // Sayfada toplam yorum sayısını gösteriyor 
    echo "Toplam Yorum: $comments<br><br>"; 
    
    if(isset($_POST['submit'] ) ){  
    
    $username = $_POST['username'] ;  
    $email = $_POST['email'];  
    $title = addslashes($_POST['title'] );  
    $comment = addslashes($_POST['comment'] );  
    $date = time( ); 
    $ip = $_SERVER['REMOTE_ADDR']; 
    
    // Boş alan kontrolü yapıyor 
    if (empty($username ) ) {  
    echo "<br><b style='color:#ff0000;'>Adınız/Soyadınız alanını boş bıraktınız!</b><br><a href='javascript:history.go(-1 )'>Geri Dönün</a>\n"; 
    }  
    elseif (empty($email ) ) {  
    echo "<br><b style='color:#ff0000;'>Email Adresiniz alanını boş bıraktınız!</b><br><a href='javascript:history.go(-1 )'>Geri Dönün</a>\n"; 
    }  
    elseif (empty($title ) ) {  
    echo "<br><b style='color:#ff0000;'>Yorum Başlığı alanını boş bıraktınız!</b><br><a href='javascript:history.go(-1 )'>Geri Dönün</a>\n"; 
    }  
    elseif (empty($comment ) ) {  
    echo "<br><b style='color:#ff0000;'>Yorumunuz alanını boş bıraktınız!</b><br><a href='javascript:history.go(-1 )'>Geri Dönün</a>\n"; 
    }  
    
    // Herşey tamamsa yorum ekleme formundan gelen bilgileri veritabanına kaydediyor 
    else {  
    $query = "INSERT INTO se_comments (username, title, email, date, comment, guest_ip ) VALUES ('$username', '$title', '$email', '$date', '$comment', '$ip' )"; 
    $result = mysql_query($query ) or die (mysql_error( ) ); 
    echo "<div align='center'>Teşekkürler $username, yorumunuz başarıyla eklendi!<br><a href='".$_SERVER[PHP_SELF]."'>Yorumunuzu İzleyin</a><p></div>"; 
    } 
    
    } 
    
    // Yazılan yorumları görüntülüyor 
    else { 
    $query = "SELECT * FROM se_comments ORDER BY com_id"; 
    $result = mysql_query($query )or die (mysql_error( ) ); 
    
    while ($data = mysql_fetch_array($result ) ) {  
    $com_id = $data['com_id']; 
    $title = $data['title']; 
    $title = stripslashes($title ); 
    $username = $data['username']; 
    $username = stripslashes($username ); 
    $email = $data['email']; 
    $comment = $data['comment']; 
    $comment = stripslashes($comment ); 
    $date = $data['date']; 
    $date = date("d/m/Y H:i", $date );  
    $ip = $data['guest_ip']; 
    $guest_link = "<a href='mailto:email'>$username</a>"; 
    
    echo "Gön: $guest_link <small>(IP: <i>$ip</i> )</small> Tarih: $date<br> 
    <b>$title</b><br> 
    $comment 
    <hr>";  
    } 
    
    // Yorum ekleme formu 
    echo "
    <form name='form' action='yorum.php' method='post'>  
    <table border='0' cellpadding='0' cellspacing='0' width='100%'> 
    <tr> 
    <td colspan='2'><b>YORUM EKLE<br> 
    (* ) Tüm alanları Doldurmak Zorunludur.</b></td> 
    </tr> 
    <tr> 
    <td>Adınız - Soyadınız :</td> 
    <td><input type='text' name='username' size='25'></td> 
    </tr> 
    <tr> 
    <td>Email Adresiniz :</td> 
    <td><input type='text' name='email' size='25'></td> 
    </tr> 
    <tr> 
    <td>Yorum Başlığı :</td> 
    <td><input type='text' name='title' size='25'></td> 
    </tr> 
    <tr> 
    <td valign='top'>Yorumunuz :</td> 
    <td><textarea name='comment' rows='5' cols='20'></textarea></td> 
    </tr> 
    <tr> 
    <td colspan='2' align='center'> 
    <input type='submit' name='submit' value='Yorumu Ekle'>  
    <input type='reset' name='reset' value='Temizle'></td> 
    </tr> 
    </table>  
    </form> ";  
    } 
    ?>
    Yardımcı olurmusunuz? Yardımlarınızı bekliyorum..Ve birde ekleyi başka bir sayfaya aldığımızda her f5 e bastığımda veriyi yeniden veritabanına kaydediyor..
  • 29-10-2009, 15:38:01
    #2
    Üyeliği durduruldu
    html kod yiyor derken?
  • 29-10-2009, 15:39:06
    #3
    Html kod yiyor derken html kodlarını da veritabanına kaydediyor demek istediyseniz bu gayet doğal, çünkü bunu engellemek için hiçbir şey yapmamışsınız.
    Gelen verileri veritabanına kaydetmeden önce strip_tags, htmlspecialchars ve magic_quotes gibi (yazılışlarından tam emin değilim) fonksiyonları kullanmanız gerek. Biraz araştırmayla hepsini içeren hazır yazılmış özel bir fonksiyon bile bulabilirsiniz.
  • 29-10-2009, 15:39:44
    #4
    htmlspecialchars fonksiyonunu kullanmayı dene.Olur sanırım.
  • 29-10-2009, 15:46:52
    #5
    Eposta Aktivasyonu Gerekmekte
    Demek istediğim şudur mesela html yönledirme kdunu yazdığımızda direk veri tabanına kaydediyo ve sayfa açıldığında yönleniyor.Bunun için sizden teknik bir destek bekliyorum.Biraz araştırdım fakat farklı hatalar aldım.. :S
  • 29-10-2009, 16:31:36
    #6
    form verilerini aldığın değişkenlere strip_tags(); fonksiyonunu ekle, örneğin

    $_isim = strip_tags($_POST['isim']);

    bu şekilde html kodlarını ayıklamış olursun.

    Ayrıca sayfayı yenilediğinde tekrar kayıt yapmaması için değişkenleri session değişkenler şeklinde tanımlayıp veritabanına kayıt ettirdikten sonra değişkenleri unset(); fonksiyonuyla veya oturumu sonlandırarak ortadan kaldırırsın ve sayfa yenilendiğinde o değişkenler tanımlanmamış olduğu için kullanıcı karşısında senin formunu görür.
    Daha basit bir yol istersen, veritabanındaki isim alanına INUQUE index tanımlaması yapabilirsin.Bu şekilde o alana artık aynı veri girilemez ama buda SQL hatası oluşturabilir.En iyisi session değişkenleri tanımlamak.
  • 29-10-2009, 18:01:54
    #7
    Üyeliği durduruldu
    strip_tags ve htmlspecialchars fonskiyonları işinizi görür
  • 29-10-2009, 19:43:20
    #8
    Eposta Aktivasyonu Gerekmekte
    Çok sağolun oldu teşkkür ederim bana yardımcı olanlara..
  • 29-10-2009, 21:44:54
    #9
    strip_tags kullanıp tümünü engellemesini istemiyorsan temizlemesini istemediğini de şu şekilde parametreye ekleyebilirsin;

    $yenimetin = strip_tags($metin,"<a><br><b>");

    <a><br><b> etiketlerini serbest bırakmış olursun.