Giriş Yap / Kayıt Ol
ytmatikvip

WM Aracı'na üyelikler tekrar açıldı! Kayıt olmak için TIKLAYIN!

4Beğeni
  • 3 Yazan KadirCeyhan
  • 1 Yazan SoftwareDeveloper

Kilitli Konu Favorilerime Ekle
Seçenekler Stil
Geri Git   Forum > > PHP

AJAX-MySQL Basit Canlı Sohbet Sistemi

  #1  
Okunmamış 07 Aralık 2016, 13:09
KadirCeyhan Adlı Üyenin Avatarı
WM Aracı
 
Üyelik Tarihi: 23 Ekim 2016
Yaş / Cinsiyet: 23 / Erkek
Meslek: Öğrenci
Konum: Denizli
Ad, Soyad: Ka... Ce...
Mesajlar: 704
Beğeniler: 201 / 0
Ticaret: 6, 100%
Arkadaşlar tamamen çok basit bir sistemi sizlerle paylaşmak istiyorum. Belki kafanızda sistemin oturmasını sağlar ve dahada geliştirip kullanırsınız.

Resimler :

http://i.hizliresim.com/LZgd7J.png

http://i.hizliresim.com/l3rBYk.png

Localhost üzerinde nasıl kullanılacağını anlatayım ;


* Localhostunuzda (htdocs yada www içinde) chat adında bir klasör oluşturun

* ajax.php ve chat.php dosyaları oluşturun

1 - Yeni bir veritabanı oluşturun. [Ajax.php mysql bağlantısına veritabanını yazın]

** Veritabanını içine chat_history olarak bir tablo oluşturun [UTF8 general_ci]

2 - Tablo Yapısı
  • id (INT, Auto Increment, Primary Key)
  • Kime (TEXT)
  • Kimden (TEXT)
  • Mesaj (TEXT)
  • Tarih (TEXT)

3 - Kullanım linki ;

http://localhost/chat/chat.php?t=a&f=b // b kişisi olarak a'ya yazarsınız.
http://localhost/chat/chat.php?t=b&f=a // a kişisi olarak b'ye yazarsınız.

4 - Geçmiş sohbetleri sayfa yüklenirken otomatik yükler.

5 - Her 3 saniyede bir yeni mesaj varsa ekranı günceller.

6 - Türkçe kodlama, anlaşılabilir kod yapısı. Tamamen basit bir eğitim olarak düşünün.

** Herhangi bir sıkıntı olursa konu altına yorum atmaktan çekinmeyin **


ajax.php
PHP- Kodu:
<?php
$Bağlan 
mysqli_connect('localhost','root','','test');
if(
$_POST['a'] == "yeni"){
$Kime = @$_POST['kime']; $Kimden = @$_POST['kimden']; $Mesaj = @$_POST['mesaj'];
    if(
$Kime != '' && $Kimden != '' && $Mesaj != ''){
        
$Eski strip_tags($Mesaj);
        
$Kime mysqli_real_escape_string($Bağlan$Kime);
        
$Kimden mysqli_real_escape_string($Bağlan$Kimden);
        
$Mesaj mysqli_real_escape_string($Bağlan$Mesaj);
        
$Kime =  strip_tags($Kime);
        
$Kimden strip_tags($Kimden);
        
$Mesaj strip_tags($Mesaj);        
        
$Tarih date("d/m/Y H:i:s");
        
$Sorgu "INSERT INTO chat_history (Kime,Kimden,Mesaj,Tarih) VALUES ('$Kime','$Kimden','$Mesaj','$Tarih')";
        
$Kaydet mysqli_query($Bağlan,$Sorgu);        
        if(
$Kaydet){
            
$Tarih explode(' '$Tarih)[1];
            echo 
'<p class="Ben">Ben : '.$Eski.' ('.$Tarih.')</p>';
            echo 
'<p id="LastID_Message" style="display:none;">LastID:'.mysqli_insert_id($Bağlan).'</p>';
        }else{
            echo 
'<br>[System] : Mesajınız İletilemedi ! '.mysqli_error($Bağlan);
        }
    }
}
elseif (
$_POST['a'] == "eski"){
    
$Kime = @$_POST['kime']; $Kimden = @$_POST['kimden'];
    if(
$Kime != '' && $Kimden != '' ){
        
$Sorgu "SELECT * FROM chat_history WHERE (Kime = '$Kime' and Kimden = '$Kimden') or (Kime = '$Kimden' and Kimden = '$Kime')  ORDER BY id";
        
$Yükle mysqli_query($Bağlan,$Sorgu);
        if(
mysqli_affected_rows($Bağlan)){
            
$i 1;
            
$Sayı mysqli_num_rows($Yükle);
            while(
$X mysqli_fetch_array($Yükle)){
                
$X['Tarih'] = explode(' '$X['Tarih'])[1];
                if(
$X['Kimden'] == $Kimden){
                    echo 
'<p class="Ben">Ben : '.$X['Mesaj'].' ('.$X['Tarih'].')</p>';
                }else{
                    echo 
'<p class="Diger" >'.$X['Kimden'].' : '.$X['Mesaj'].' ('.$X['Tarih'].')</p>';
                }
                if (
$i == $Sayı){
                    echo 
'<p id="LastID_Message" style="display:none;">LastID:'.$X['id'].'</p>';                    
                }
                
$i++;
            }
        }
    }
}
elseif (
$_POST['a'] == "guncelle"){
    
$Kime = @$_POST['kime']; $Kimden = @$_POST['kimden']; $SonMesaj = @$_POST['sonmesaj'];
    if(
$Kime != '' && $Kimden != ''){
        
$Sorgu "SELECT * FROM chat_history WHERE (kime = '$Kime' and kimden = '$Kimden') or (kime = '$Kimden' and kimden = '$Kime')  ORDER BY id DESC";
        
$Yükle mysqli_query($Bağlan,$Sorgu);
        if(
mysqli_affected_rows($Bağlan)){
            
$SonPST explode(':'$SonMesaj)[1];
            
$SQLSon mysqli_fetch_array($Yükle)['id'];
            if(
$SonPST != $SQLSon){
                
$Sorgu "SELECT * FROM chat_history WHERE id > '$SonPST' AND id <='$SQLSon' AND (Kime = '$Kime' or Kime = '$Kimden') AND (Kimden = '$Kime' or Kimden = '$Kimden') ORDER BY id";
                
$Yükle mysqli_query($Bağlan,$Sorgu);
                if(
mysqli_affected_rows($Bağlan)){
                    
$i 1;
                    
$Sayı mysqli_num_rows($Yükle);
                    while(
$X mysqli_fetch_array($Yükle)){
                        
$X['Tarih'] = explode(' '$X['Tarih'])[1];
                        if(
$X['Kimden'] == $Kimden){
                            echo 
'<p class="Ben" >Ben : '.$X['Mesaj'].' ('.$X['Tarih'].')</p>';
                        }else{
                            echo 
'<p class="Diger" >'.$X['Kimden'].' : '.$X['Mesaj'].' ('.$X['Tarih'].')</p>';
                        }
                        if (
$i == $Sayı){
                            echo 
'<p id="LastID_Message" style="display:none;">LastID:'.$X['id'].'</p>';                    
                        }
                        
$i++;
                    }
                }
            }
        }
    }
}
?>
chat.php
HTML Kodu:
<style>
.Ben{
	color: green;
}
.Diger{
	color: blue;
}
</style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

<div id="Chat" style="width: 500px; height: 300px; background-color: #ecf0f1; overflow-y: scroll; border: 1px solid #f1c40f"></div>
<br>
<br>
<input type="text" name="mesaj" id="mesaj" placeholder="Mesajınız..." style="height: 75px; width: 435px;"/>
<input type="submit" name="gonder" id="gonder" value="Gönder" style="height: 45px; width: 65px;" />


<script>
var Last = "";
var Kime = "<?php echo $_GET['t']; ?>";
var Kimden = "<?php echo $_GET['f']; ?>";
function Yukle(){
	$.ajax({
			method: "POST",
			url: "ajax.php",
			data: {
				"a" : "eski",
				"kime" : Kime,
				"kimden" : Kimden
			},
			success: function(Cevap) {
				$("#LastID_Message").remove();
				$("#Chat").append(Cevap).delay(1000).scrollTop($('#Chat')[0].scrollHeight);
			}
	});
	
}
function Guncelle(){
	Last = $("#LastID_Message").text();
	$.ajax({
		method: "POST",
		url: "ajax.php",
		data: {
			"a" : "guncelle",
			"kime" : Kime,
			"kimden" : Kimden,
			"sonmesaj" : Last
		},
		success: function(Cevap) {
			if(Cevap != ''){
				$("#LastID_Message").remove();
				$("#Chat").append(Cevap).delay(1000).scrollTop($('#Chat')[0].scrollHeight);
			}
		}
	});
}
function Gonder() {
		Mesaj = $("#mesaj").val();
		$("#mesaj").val("");
		if (Kime != '' && Kimden != '' && Mesaj != ''){
		$.ajax({
			method: "POST",
			url: "ajax.php",
			data: {
				"a" : "yeni",
				"kime" : Kime,
				"kimden" : Kimden,
				"mesaj" : Mesaj
			},
			success: function(Cevap) {
				$("#LastID_Message").remove();
				$("#Chat").append(Cevap).delay(1000).scrollTop($('#Chat')[0].scrollHeight);
			}
		});
		}
}
$(function() {
	Yukle();
	$("#gonder").click(function() {
		Gonder();
	});
	setInterval(Guncelle, 3000);
});
</script>
Dipnot: Çok profesyonel veya hatasız bir sistem demiyorum. Sadece belki bir yardımı olur diye paylaşmak istedim. Tamamen bana ait.
SosyalAbi, aercan ve senyeterkiiste bunu beğendi.
Konu KadirCeyhan tarafından (07 Aralık 2016, 13:14 ) değiştirilmiştir.
kochost smmfull
  #2  
Okunmamış 07 Aralık 2016, 13:17
Avatar Seçilmemiş
WM Aracı
 
Üyelik Tarihi: 16 Ağustos 2016
Yaş / Cinsiyet: 24 / Erkek
Konum: Amasya
Ad, Soyad: En... Er...
Mesajlar: 160
Beğeniler: 13 / 0
Ticaret: 0, 0%
güzelmiş bende mesajlaşma sistemi yaptıydım ama ajaxsız
böyle http://prntscr.com/dgdzhm
  #3  
Okunmamış 07 Aralık 2016, 20:35
SosyalAbi Adlı Üyenin Avatarı
WM Aracı
 
Üyelik Tarihi: 12 Ağustos 2014
Yaş / Cinsiyet: 19 / Erkek
Meslek: Webmaster
Ad, Soyad: On... Ge...
Mesajlar: 600
Beğeniler: 142 / 193
Ticaret: 40, 100%
Güzel çalışma, teşekkürler
  #4  
Okunmamış 07 Aralık 2016, 23:20
Avatar Seçilmemiş
WM Aracı
 
Üyelik Tarihi: 18 Ağustos 2016
Cinsiyet: Erkek
Ad, Soyad: Em... Sa...
Mesajlar: 82
Beğeniler: 36 / 4
Ticaret: 1, 100%
Socket.io ve mongodb kullanılarak daha real-time bir uygulama yapılabilir, socketio kullanması çok kolay gerçekten.
PRODUCTION bunu beğendi.
php, java, python - django, nodejs, vuejs, reactjs, angularjs, c# asp.net mvc...
  #5  
Okunmamış 15 Ocak 2017, 03:31
Avatar Seçilmemiş
Üyeliği Durdurulmuş
 
Üyelik Tarihi: 21 Kasım 2016
Yaş / Cinsiyet: 32 / Erkek
Meslek: Genel Müdür
Konum: Antalya
Ad, Soyad: Bu... Üs...
Mesajlar: 198
Beğeniler: 44 / 369
Ticaret: 0, 0%
Örnek ?
Kilitli Konu Favorilerime Ekle

reklam


Konuyu toplam 1 kişi okuyor. (0 üye ve 1 Ziyaretçi)
 
Seçenekler
Stil
Normal Normal

Geri Git   Forum > PHP


Yetkileriniz
Konu açma yetkiniz: Yok
Cevap Yazma Yetkiniz Yok
Eklenti yükleme yetkiniz: Yok
Mesajınızı değiştirme yetkiniz: Yok

BB code: Açık
İfadeler: Açık
[IMG] Kodları: Açık
HTML kodu: Kapalı




Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şu anki Zaman: 01:41.