Reklam

Reklamlar

8 Haziran 2010 Salı

PHP ile Ziyaretçi sayacı

Php ile hazırlanmış mysql kullanan ve ziyaretçilerimizi haricen listeleyebildiğimiz ve nereden giriş yaptıklarını görebildiğimiz güzel bir uygulama.
•Php ile hazırlanmış web sitenizde kullanabileceğiniz bir sayaç uygulamasıdır.
•Veri tabanı olarak mysql kullanılmaktadır.
•Aynı anda online kullanıcı sayısı, toplam kullanıcı sayısı, ziyaretçi ip, dün ve bugüne ait toplam tekil ziyaretçi sayısını gösterir.
•Ayrıca veri tabanına yapılan ziyaretçi kayıtlarını phpmyadmin’e girmeden görmenize olanak tanır.

•Listelediğimiz kayıtların konumunu sorgular.
#———————————————————————–#
#Aşağıdaki kodları sayac.php olarak kaydedin                         #
#———————————————————————–#

include "db_baglan.php";
echo "Online
Dün
Bugün
Toplam



";
#---Online Ziyaretçi Sayısı--------------------------------------------------------------------
$ip = $_SERVER['REMOTE_ADDR'];
$past = time()-150;
mysql_query("DELETE FROM online WHERE time < $past");
$result = mysql_query("SELECT time FROM online WHERE ip='$ip'");
$time = time();
if($row = mysql_fetch_array($result)){
mysql_query("UPDATE online SET time='$time',ip='$ip' WHERE ip='$ip'");
}else{
mysql_query("INSERT INTO online (ip,time) VALUES ('$ip','$time')") or die(mysql_error());
}
$result = mysql_query("SELECT ip FROM online");
$aktifkac = mysql_num_rows($result);
echo $aktifkac;
#---Online Ziyaretçi Sayısı--------------------------------------------------------------------
echo "


";
#---Dün Tekil Toplam Kaç Kişi Girmiş----------------------------------------------------------
$baslat =date(Y."-".m."-".d);
$year =substr($baslat, 0,4);
$month =substr($baslat, 5, 2);
$day =substr($baslat, 8, 2);
$bitis =date("Y-m-d", mktime(0, 0, 0, $month, $day-1, $year));
$sorgula = mysql_query("select tarih from ziyaret where tarih='$bitis'");
$dunku = mysql_num_rows($sorgula);
echo $dunku;
#---Dün Tekil Toplam Kaç Kişi Girmiş----------------------------------------------------------
echo "

";
#---Bugün Tekil Toplam Kaç Kişi Girmiş--------------------------------------------------------
$bugun = date("Y-m-d");
$sorgu = mysql_query("select tarih from ziyaret where tarih='$bugun'");
$bugunku = mysql_num_rows($sorgu);
echo $bugunku;
#---Bugün Tekil Toplam Kaç Kişi Girmiş--------------------------------------------------------
echo "


";
#---Toplam Tekil Kaç Kişi Girmiş--------------------------------------------------------------

$ipsi = $_SERVER['REMOTE_ADDR'];
$tarih = date("Y-m-d");
$ipkontrol = mysql_query("select * from ziyaret where ip='$ipsi' order by id desc");
$yaz = mysql_fetch_assoc($ipkontrol);
$vip = $yaz['ip'];
$vtarih= $yaz['tarih'];
$bak = mysql_num_rows($ipkontrol);
if($bak>0){ //if-
if($vtarih<$tarih){
$kayit_1 = mysql_query("insert into ziyaret (ip,tarih) values ('$ipsi','$tarih')");
}
}//if-
else{
$kayit_2 = mysql_query("insert into ziyaret (ip,tarih) values ('$ipsi','$tarih')");
}
$toplamne = mysql_query("select * from ziyaret");
$toplamziyaret = mysql_num_rows($toplamne);
echo $toplamziyaret;
#---Toplam Tekil Kaç Kişi Girmiş--------------------------------------------------------------
echo "



IP $ipsi


Design by ksabitk

"; ?>
#——————————————————————————–#
#Aşağıdaki kodları db_baglan.php olarak kaydedin                               #
#——————————————————————————–#

#--Veritabanına Bağlantı Ayarları-----------------------------------------------------------------------------------------------------
//Buraya Kendi MYSQL Bilgilerinizi Yazacaksınız
@$db_name = "veritabanı adı"; #db adı
@$db_user = "kullanıcı adı"; #db kullanıcı adı
@$db_pass = "şifre"; #db kullanıcı şifresi
@$db_host = "localhost"; #db server/sunucu/host adı
@$eror1 = "

...MySQL Bağlantısı Gerçekleştirilemedi...
";
@$eror2 = "
...Veritabanı Seçimi Gerçekleştirilemedi...
";
@$baglan= mysql_connect($db_host,$db_user,$db_pass) or die ($eror1);
@mysql_select_db($db_name,$baglan) or die ($eror2);
#--Veritabanına Bağlantı Ayarları-----------------------------------------------------------------------------------------------------
?>
#——————————————————————————–#
#Aşağıdaki kodları sayac.sql olarak kaydedin                                     #
#——————————————————————————–#

# phpMyAdmin SQL Dump
# version 2.5.7-pl1
# http://www.phpmyadmin.net
#
# Sunucu: localhost
# Çıktı Tarihi: Nisan 29, 2008 at 09:46 AM
# Server sürümü: 5.0.16
# PHP Sürümü: 4.4.1
#
# Veritabanı : `sayac`
#
# --------------------------------------------------------
#
# Tablo yapısı : `online`
#
# Oluşturulma: Nisan 29, 2008 at 09:12 AM
# Son güncellenme: Nisan 29, 2008 at 09:40 AM
#
DROP TABLE IF EXISTS `online`;
CREATE TABLE `online` (
`ip` varchar(50) NOT NULL,
`time` varchar(50) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
#
# Tablo döküm verisi `online`
#
INSERT DELAYED INTO `online` (`ip`, `time`) VALUES ('127.0.0.1', '1209451553');
# --------------------------------------------------------
#
# Tablo yapısı : `ziyaret`
#
# Oluşturulma: Nisan 29, 2008 at 09:12 AM
# Son güncellenme: Nisan 29, 2008 at 09:16 AM
#
DROP TABLE IF EXISTS `ziyaret`;
CREATE TABLE `ziyaret` (
`id` int(50) NOT NULL auto_increment,
`ip` varchar(75) NOT NULL,
`tarih` varchar(12) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=34 ;
#
# Tablo döküm verisi `ziyaret`
#
INSERT DELAYED INTO `ziyaret` (`id`, `ip`, `tarih`) VALUES (1, '127.0.0.1', '2008-04-29');
#——————————————————————————–#
#Aşağıdaki kodları guvenlik.php olarak kaydedin                                 #
#——————————————————————————–#

/* Config Section */
$pass = 'demo'; // Sifreyi buraya giriniz...
$cookiename = 'sascookie'; // Optional change: Cookie'ye isim veriniz.Basta geçerli olan sascookie dir.
$expirytime = time()+3600; // Optional change: Sifrenin geçerli oldugu süre "saniye olarak". Basta geçerli olan 1 saatdir.
$msg = 'Sifre Yanlis.'; // Optional change: parola yanlis mesajidir.basta geçerli olan "Sifre Yanlis"dir.
/* End Config */
/* Logout Stuff - Sept 5, 2005 */
if (isset($_REQUEST['logout'])) {
setcookie($cookiename,'',time() - 3600); // remove cookie/password
if (substr($_SERVER['REQUEST_URI'],-12)=='?logout=true') { // if there is '?logout=true' in the URL
$url=str_replace('?logout=true','',$_SERVER['REQUEST_URI']); // remove the string '?logout=true' from the URL
header('Location: '.$url); // redirect the browser to original URL
}
show_login_page('');
exit();
}
$logout_button='';
$logout_text='Logout';
/* End Logout Stuff */
/* FUNCTIONS */
$encrypt_pass=md5($pass); // encrypt password
function setmycookie() {
global $cookiename,$encrypt_pass,$expirytime;
setcookie($cookiename,$encrypt_pass,$expirytime);
}
function show_login_page($msg) {
?>
Şifre:




/* END FUNCTIONS */
$errormsg='';
if (substr($_SERVER['REQUEST_URI'],-7)!='sas.php') {// if someone tries to request sas.php
if (isset($_POST['sub'])) { // if form has been submitted
$submitted_pass=md5($_POST['password']); // encrypt submitted password
if ($submitted_pass<>$encrypt_pass) { // if password is incorrect
$errormsg=$msg;
show_login_page($errormsg);
exit();
} else { // if password is correct
setmycookie();
}
} else {
if (isset($_COOKIE[$cookiename])) { // if cookie isset
if ($_COOKIE[$cookiename]==$encrypt_pass) { // if cookie is correct
// do nothing
} else { // if cookie is incorrect
show_login_page($errormsg);
exit();
}
} else { // if cookie is not set
show_login_page($errormsg);
exit();
}
}
} else {
echo '';
}
?>
#——————————————————————————–#
#Aşağıdaki kodları ust.php olarak kaydedin                                       #
#——————————————————————————–#

Ziyaretçi Kayıtları











#——————————————————————————–#
#Aşağıdaki kodları alt.php olarak kaydedin                                       #
#——————————————————————————–#







Design by ksabitk



#——————————————————————————–#
#Aşağıdaki kodları kayit.php olarak kaydedin                                     #
#——————————————————————————–#

include('ust.php');?>


Kayıtlar



$say=0;
$dbhost = "localhost";
$dbuname = "kullanıcı adı";
$dbpass = "şifre";
$dbname = "veritabanı adı";
//bağlan
mysql_connect("$dbhost", "$dbuname", "$dbpass") || die ("mysql hatasi");
mysql_select_db("$dbname") || die ("mysql bağlantısı başarısız");
// Degiskenleri tanimlayalim
$page = $_SERVER['PHP_SELF'];
$limit = "250"; // Kaç kayitta bir sayfalama yapilacak ?
/* URL üzerinden gelen $_GET[] dizisi içinde degisken olup olmadigina bak eger yoksa 1'e esitle */
if(empty($_GET['paged'])) { $paged ="1"; }
else{ $paged=$_GET['paged'];}
/* Degiskenin numerik(rakamsal) bir deger olup olmadigina bak degilse düzeltip sayfaya bir daha yolla */
//if(!is_numeric($_GET['paged'])) { header("location:$page?paged=1"); }
//veriyi çek
$query = ("select * from ziyaret order by id");
$id = $listele['id'];
$kullaniciadi = $listele['tarih'];
$cinsiyet = $listele['ip'];
$girdi =mysql_query($query);
$sayi =mysql_num_rows($girdi); // toplam mySQL kayit sayisi
$kac_tane = $sayi / $limit; // Kaç sayfa olacak
/* burasi önemli , sayfalama linklerini basarken toplam kayiti $limti degiskeninin içerigine bölüyoruz eger tam bölünmüyorsa sayfa sayisini bir arttiriyoruz.Böylece her kayit listeleniyor.*/
$kac_tane=ceil($kac_tane);//bir yukarıya yuvarladık
// Kayitlari yazdiralim ( son kayittan itibaren )
$son = ($paged-1)*$limit; //burası çok güzel
$query = "select * from ziyaret order by id limit $son,$limit";
$veri = mysql_query ($query);
while($cikart = mysql_fetch_array($veri)) {
$id = $cikart['id'];
$tarih = $cikart['tarih'];
$ip = $cikart['ip'];
if ($say%2)
$renk='#BAFEFB';
else
$renk='#FBCF37';
?>
Sayı
Tarih
İp




">

$say++;
}
// Sayfalama linklerini ekrana yazdiralim
for($i=1; $i <=$kac_tane; $i++) {
if( $i==$paged)
{echo " $i " ;}
else {
echo("[$i] - "); }
}
ob_end_flush(); //
?>




Nasıl kullanılır ?
Sayaçımızın çalışması için
sayac.php ve db_baglan.php’yi ana dizinimize atmalı ve ziyaretçilerinizin sayılmasını istediğiniz sayfalara

betiğini yazarak çekmelisiniz, şayet alt dizinlerde kullanılacaksa   include(‘./sayac.php’); normal klasör adlarını vererek ana dizinden çekebilirsiniz.
Mysql
db_baglan.php ve kayit.php deki veri tabanı ayarlarını yapmalı
sayac.sql yi veritabanına yüklemelisiniz
Güvenlik
Ziyaretçi kayıtlarını listelerken herkesin görememesi için guvenlik.php ile şifrelenmiştir.
Yani bu sayfadaki şifreyi kendinize göre uyarlamalısınız.
Kayıtlar
guvenlik.php de belirlediğiniz şifre ile kayit.php ye girerek ziyaretçilerinizi giriş tarihine göre ip numaralarıyla görebiliriz.
Listelenen ip numaralarının üzerine tıklayarak konumunu görebilirsiniz.
Dikkat!
substr fonksiyonunu kullandığınız farklı bir kod parçası varsa sorun çıkaracaktır.
Dipnot
Bu yazı 8 Haziran 2010 Salı günü yazılmıştır. Bulunduğu kategori : ,,,,,. Yazdığım yazıları RSS 2.0 sistemini kullanarak takip edebilir, dilerseniz yorum yapabilirsiniz. Unutmadan, Bu yazı sizler tarafından tam tamına defa okunmuştur.

Hiç yorum yok:

Yorum Gönder

Sitemizi ziyaret ettiğiniz için teşekkür ederiz


Php Dersleri

ebook library