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.