<?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..
HTML Kod Yiyor Çözemedim :(
8
●652
- 29-10-2009, 15:10:16Eposta Aktivasyonu Gerekmekte
- 29-10-2009, 15:39:06Html 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, 16:31:36form 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, 21:44:54strip_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.