lostyazilim
tr.link

AJAX-MySQL Basit Canlı Sohbet Sistemi

5 Mesajlar 3.048 Okunma
lstbozum
tr.link

KadirCeyhan KadirCeyhan WM Aracı Kullanıcı
  • Üyelik 23.10.2016
  • Yaş/Cinsiyet 27 / E
  • Meslek Öğrenci
  • Konum Denizli
  • Ad Soyad K** C**
  • Mesajlar 689
  • Beğeniler 0 / 203
  • 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

$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 '

Ben : '.$Eski.' ('.$Tarih.')

';
echo '';
}else{
echo '
[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 '

Ben : '.$X['Mesaj'].' ('.$X['Tarih'].')

';
}else{
echo '

'.$X['Kimden'].' : '.$X['Mesaj'].' ('.$X['Tarih'].')

';
}
if ($i == $Sayı){
echo '';
}
$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 '

Ben : '.$X['Mesaj'].' ('.$X['Tarih'].')

';
}else{
echo '

'.$X['Kimden'].' : '.$X['Mesaj'].' ('.$X['Tarih'].')

';
}
if ($i == $Sayı){
echo '';
}
$i++;
}
}
}
}
}
}
?>


chat.php


<script></script>










<script>
var Last = "";
var Kime = "";
var Kimden = "";
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 senyeterkiiste

kişi bu mesajı beğendi.

wmaraci
reklam

enex enex WM Aracı Kullanıcı
  • Üyelik 16.08.2016
  • Yaş/Cinsiyet 28 / E
  • Meslek PHP Developer Novice Jquery
  • Konum Amasya
  • Ad Soyad E** E**
  • Mesajlar 160
  • Beğeniler 0 / 13
  • Ticaret 0, (%0)
güzelmiş bende mesajlaşma sistemi yaptıydım ama ajaxsız
böyle http://prntscr.com/dgdzhm
 

 

SosyalAbi SosyalAbi WM Aracı Kullanıcı
  • Üyelik 12.08.2014
  • Yaş/Cinsiyet 23 / E
  • Meslek Webmaster
  • Konum İstanbul Anadolu
  • Ad Soyad O** G**
  • Mesajlar 571
  • Beğeniler 193 / 143
  • Ticaret 46, (%100)
Güzel çalışma, teşekkürler :)
 

 

SoftwareDeveloper SoftwareDeveloper WM Aracı Kullanıcı
  • Üyelik 18.08.2016
  • Yaş/Cinsiyet 29 / E
  • Meslek Bilgisayar Mühendisliği
  • Konum İstanbul Avrupa
  • Ad Soyad E** S**
  • Mesajlar 79
  • Beğeniler 4 / 36
  • Ticaret 1, (%100)
Socket.io ve mongodb kullanılarak daha real-time bir uygulama yapılabilir, socketio kullanması çok kolay gerçekten.
PRODUCTION

kişi bu mesajı beğendi.

php, java, python - django, nodejs, vuejs, reactjs, angularjs, c# asp.net mvc...
wmaraci
wmaraci

PRODUCTION PRODUCTION Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 21.11.2016
  • Yaş/Cinsiyet 37 / E
  • Meslek Genel Müdür
  • Konum Antalya
  • Ad Soyad B** Ü**
  • Mesajlar 190
  • Beğeniler 369 / 44
  • Ticaret 0, (%0)
Örnek ?
 

 

wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al