Yebats adlı üyeden alıntı: mesajı görüntüle
Merhaba arkadaşlar bir projemde giriş sistemi yaptık. Mysql ile veritabanı ile üyeleri kayıt ettirip key sistemi ile giriş yapma kontrolü yapıyoruz ama 1 kullanıcı ile sınırsız giriş imkanı var biz bunu 1 kişi giriş yaptığında çıkış yapmadan başka bir bilgisayar tarafından giriş yapılmasını engellemek istiyoruz yardımcı olabilirseniz sevinirim.

giriş kontrol php dosyamız;
<?
include ("db_baglan.php");
session_start();
$kullaniciadi = $_GET[kadi];
$parola       = md5($_GET[pass]);

if ((!$kullaniciadi =="") and (!$parola =="")) {

$sql = "select * from uyeler where kulladi='$kullaniciadi' and parola='$parola'";
$kontrol = mysql_query($sql);
$kayitsayisi = mysql_num_rows($kontrol);
if ip !=null && getenv("REMOTE_ADDR") == ip
giriş başarılı
else
hesapta biri var
if ($kayitsayisi == "0") {
       echo "<meta http-equiv='Refresh' content='0; URL=uye_yok.php'>";
} else {
  $kontrol_ok = mysql_fetch_array($kontrol);
  setcookie ("kulladi", "$kontrol_ok[kulladi]",time()+24*60*60);
              echo "<meta http-equiv='Refresh' content='0; URL=uye_paneli.php'>";
       }
 
}
  else {
       echo "<meta http-equiv='Refresh' content='0; URL=uye_yok.php'>";
       }


?>
Giriş fonksiyonumuz;

<form action="giris_kontrol.php" method="POST">
<div align="center">
	<table border="1" id="table1" bordercolordark="#C4EC02" bordercolorlight="#FFFFFF" cellspacing="0" cellpadding="0" style="border-collapse: collapse">
		<tr>
			<td><div align="center">
	<table border="0" width="250" id="table2" cellpadding="0" style="border-collapse: collapse">
		<tr>
			<td height="20" background="imgeler/yesil_cubuk.gif" colspan="4"><b>
			<font size="1" face="Tahoma">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Üye Girişi</font></b></td>
		</tr>
		<tr>
			<td height="20" colspan="4">&nbsp;</td>
		</tr>
		<tr>
			<td height="20" width="16">&nbsp;</td>
			<td height="20" width="71" align="right">
			<font size="1" face="Tahoma">Kullanıcı Adınız</font></td>
			<td height="20" width="6" align="center">&nbsp;</td>
			<td height="20" width="157"><input type="text" name="kadi" style="font-size: 8pt; font-family: Tahoma; color: #000000; border: 1px dotted #CCCCCC; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px; background-color: #C4EC02" size="20"></td>
		</tr>
		<tr>
			<td height="20" width="16">&nbsp;</td>
			<td height="20" width="71" align="right">
			<font size="1" face="Tahoma">Parolanız</font></td>
			<td height="20" width="6" align="center">&nbsp;</td>
			<td height="20" width="157"><input type="password" name="pass" style="font-size: 8pt; font-family: Tahoma; color: #000000; border: 1px dotted #CCCCCC; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px; background-color: #C4EC02" size="20"></td>
		</tr>
		<tr>
			<td height="20" width="16">&nbsp;</td>
			<td height="20" width="71">&nbsp;</td>
			<td height="20" width="6">&nbsp;</td>
			<td height="20" width="157">
			<input type="image" src="imgeler/giris.gif" value="Giriş" style="font-size: 8pt; font-family: Tahoma; color: #000000; border: 1px dotted #C0C0C0; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px; background-color: #C6EE01" name="I1"></td>
		</tr>
	</table>
</div></td>
		</tr>
	</table>
</div>
</form>
mysql eklediğimiz tablolar;

DROP TABLE IF EXISTS `sn`;
CREATE TABLE `sn` (
  `no` int(11) NOT NULL AUTO_INCREMENT,
  `serial` varchar(100) NOT NULL,
  `onay` varchar(2) NOT NULL,
  `gun` varchar(3) NOT NULL,
  `kullanan` varchar(100) NOT NULL,
  PRIMARY KEY (`no`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;




DROP TABLE IF EXISTS `uyeler`;
CREATE TABLE `uyeler` (
  `uyeno` int(11) NOT NULL AUTO_INCREMENT,
  `kulladi` varchar(100) NOT NULL,
  `parola` varchar(32) NOT NULL,
  `sifre` varchar(32) NOT NULL,
  `email` varchar(100) NOT NULL,
  `tarih` varchar(60) NOT NULL,
  `onay` varchar(2) NOT NULL,
  `gun` varchar(3) NOT NULL DEFAULT '3',
  PRIMARY KEY (`uyeno`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
Erturk adlı üyeden alıntı: mesajı görüntüle
Bunu form sorgulatacagın sayfaya koy. Eğer giriş bilgileri doğruysa anasayfa.php isimli kısıma yonlendirecek.

// Üye Giriş Sayfası Form Kontrolü.
$kullanici = $_POST['kadi'];
$sifre = $_POST['pass'];
if(empty($kullanici) || empty($sifre)) {
	echo 'Kullanıcı adı ve ya şifrenizi girmediniz.';
} else {
	$sifre = md5($sifre);
	$baglan = mysql_query("select id,durum from uyeler where kulladi='$kullanici' and parola='$sifre'");
	if(mysql_num_rows($baglan)<1) {
		echo 'Girdiğiniz bilgilere ait kullanıcı bulunamadı.';
	} else {
		$bilgiler = mysql_fetch_assoc($baglan);
		$uyeid = $bilgiler['id']; 
		if($bilgiler['durum']==1) {
			echo 'Bu kullanıcı şuan başka bir oturumda online görünüyor. Giriş yapamazsınız.';
			/*
			Karşıdaki oturumu sonlandırmak için mail yada sms ile şifre gonderilip kullanıcının bunu girmesi
			istenebilir. Şifre belirli bir süre içinde girilirse diğer kişi offline olur.
			*/
		} else {
		$otguncelle = mysql_query("update uyeler set oturum='$sessionid' , durum='1', zaman='$offlinezamani' where id='$uyeid'");
		$_SESSION['uyeid'] = $uyeid;
		Header("Location:anasayfa.php");
		exit();
		}

Bu yazacagım fonksiyonu da db_baglan.php sayfasında en alta koy.

// Üye kontrol fonksiyonu
function uyekontrol($uyeid) {
	if(empty($uyeid)) {
		Header('Location:giris.php');
		exit();
	} else {
		$sessionid = session_id();
		$zaman = time();
		$dakika = 5; // Kaç dakika sonra otomatik offline olsun?
		$pasif = $dakika*60;
		$offlinezamani = $zaman+$pasif;	
		$sor = mysql_query("select id from uyelere where sessionid='$sessionid' and id='$uyeid' and durum='1' and zaman>='$offlinezamani'");
		if(mysql_num_rows($sor)<1) {
			echo '<script>alert("Uzun süre hareketsiz kaldığınız için oturumunuz sonlandırılmıştır.Lütfen tekrar giriş yapınız.");</script>';
			$offlineyap = mysql_query("update uyeler set durum='0' , zaman='0' where id='$uyeid'");
		} else {
			$otguncelle = mysql_query("update uyeler set zaman='$offlinezamani' where id='$uyeid' and sessionid='$sessionid'");
		}
		
	
	}
	
}
Şimdi paneldeki butun sayfalarda include ettiğin db_baglan.php satırının altında şunları yaz.

$uyeidi = $_SESSION['uyeid'];
uyekontrol($uyeidi);

İşyerindeyim local server olmadıgı için denemeyedim ama %99 calısacaktır.

--R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 10:35:58 -->-> Daha önceki mesaj 10:25:04 --

Bunda tek sıkıntı çıkış yap filan demeden cıkan kullanıcıdan dolayı bir daha ki girişte online gorunuyor olma ihtimali. Bu yuzden şu Email yada SMS ile oturum sonlandırma olayı eklenmeli bence. Şuan için aklıma gelen fikir bu. Geliştirebilirsin.



Aklıma çok daha basit bir fikir geldi. Algoritması şöyle :

Üyeler tablosuna giris sütunu ekle.

Üye giriş yaptığında o üyenin giris sütununa 1 yazdır.

Giriş yapma sayfasında giriş yapacak kullanıcının giris sutununu sorgula. 1 ise bu kullanıcı şuan online siz giriş yapamassınız yazdır.

Çıkış yapma sayfasında ise çıkış yaptırırken sessionu sonlandırırken o kullanıcıya ait giris sütununu 0 yazdır.

İşte bu kadar basit.