Рабочий ЧАТ на Iframe

Вставляем в Index.php
<div id="chats" style="height:100; overflow: scroll; overflow: auto; background-color: white; text-align:left; padding:2px 2px 2px 2px;  margin:0px 0px 2px 0px; color:#b6b19d; border:1px solid #bdc7d8"></div>
<script src="jquery-1.4.2.min.js" charset="windows-1251"></script>
<script type="text/javascript">
function addchats(text) {
 var text = text;
 if (text == "") var text = "всем привет";
 var stroka2 = "<?require 'vkapi.class.php';
define('API_ID', "*********"); // ID вашего приложения
define('API_VERSION', "3.0"); // Версия API (на данный момент она равняется 3.0)
define('API_SECRET', "*********************"); // Тот самый защищённый ключ
// Генерируем подлинный auth_key (для наглядности, назовём его secret_key)
$secret_key = md5(API_ID . "_" . $_GET['viewer_id'] . "_" . API_SECRET); // вместо постоянной API_ID, можно воспользоваться полученной от сервера $_GET['api_id']. Разницы между этими значениями нет (если, конечно, запрос не фальшивый :))
 
// Если нет сессии (т.е. пользователь НЕ авторизирован), сравниваем наш подлинный secret_key с полученным auth_key, и при успехе ставим сессию user_id, содержащую id текущего пользователя.
 
if (!$_SESSION['user_id']){
   if ($_GET['auth_key'] == $secret_key){
       $_SESSION['user_id'] = $_GET['viewer_id'];
   }
}
 
$method = "getProfiles";
 
$sig = md5("api_id=" . API_ID . "method=" . $method . "uids=" . $_SESSION['user_id'] . "v=" . API_VERSION . API_SECRET);
 
$user = simplexml_load_file("http://api.vkontakte.ru/api.php?api_id=" . API_ID . "&v=" . API_VERSION . "&method=" . $method . "&uids=" . $_SESSION['user_id'] . "&sig=" . $sig);
$zname = $user->user->first_name;
$zfam = $user->user->last_name;
$zid = $user->user->uid;
?><? echo "$zid $zname $zfam пишет:"; ?>";
 
$.post("addchat.php", { check: text, stroka: stroka2 }, function(data) {
document.getElementById('textchat').value='';  } );
}
</script>
<input  type=text id="textchat" name="textchat" title="напишите сообщение в чат" size=30 maxlength=50>
 
<INPUT TYPE=IMAGE SRC="chatadd.gif" onmouseover="this.src='chatadd2.gif';" onmouseout="this.src='chatadd.gif';" id="okey3" name="okey3" onclick="addchats(document.getElementById('textchat').value); return false;" title="написать в чат" VALUE="написать">
 
<script type="text/javascript">
function chatad() {
$.post("getchat.php", {  }, function(data) {
  document.getElementById('chats').innerHTML =  '';
  for(var i = 1; i <= 20; i++) {
  document.getElementById('chats').innerHTML +=  ' ' + $(data).find("time" + i).text() + ' ' + '<a href=http://vkontakte.ru/id' + $(data).find("uid" + i).text() + ' ' + 'target="_blank">' + $(data).find("first_name" + i).text() + ' ' + $(data).find("last_name" + i).text() + '</a>';
  document.getElementById('chats').innerHTML += ' ' + $(data).find("text" + i).text()  + '<br>';
  }
 }, "xml" );
setTimeout('chatad()', 1000);
}
</script>
<script type="text/javascript">
setTimeout('chatad()', 1000);
</script>

в файл getchat.php вставляем
<?
header('Content-Type: text/xml; charset=UTF-8');
$file5 = file("chat.txt");
if ($file5) {
$ss2 = 0;
for ($ss=1;$ss<21;$ss++) {
${pieces.$ss} = explode(" ", iconv('windows-1251', 'UTF-8', $file5[$ss2]));
$ss2++;
}
}
echo"<xml><body>";
for ($t=1;$t<21;$t++) {
 echo "<time$t>" . ${pieces.$t}[0]. "</time$t>";
 echo "<uid$t>" . ${pieces.$t}[2]. "</uid$t>";
 echo "<first_name$t>" . ${pieces.$t}[3]. "</first_name$t>";
 echo "<last_name$t>" . ${pieces.$t}[4]. "</last_name$t>";
 echo "<text$t>";
 for ($mm=5;$mm<count(${pieces.$t});$mm++) { echo  ${pieces.$t}[$mm]." "; }
 echo "</text$t>";
}
 
echo "</body></xml>";
?>

и в addchat.php
<?
if (isset($_POST['stroka'])) {
$dates = date( 'H:i:s d/m/y', time() );
$chatstr = $dates;
$storki = $_POST['stroka'];
$chatstr = "$chatstr $storki";
$testfrom = $_POST['check'];
$chatstr = "$chatstr $testfrom";
$chatstr = iconv('UTF-8', 'windows-1251', $chatstr);
}
 
$file_chat="chat.txt"; // файл гостевой книги
$file_temp="tempchat.txt"; // временный файл
$fe = file_exists($file_temp);
 
if($fe != TRUE) {
if(copy($file_chat, $file_temp))  {
 if($w=fopen($file_chat,"w")) {
  flock($w,2); // локируем файл
  fwrite($w,$chatstr."\n"); // записываем первую строку
  if ($r=fopen($file_temp,"r")) {
   flock($r,1);
   $x = 0;
   while( ($str=fgets($r,10240)) && ($x < 20) ) { // читаем построчно
     $x++;
     fputs($w,$str); // пишем построчно
    }
   flock($r,3);
   fclose($r);
   flock($w,3);
   fclose($w);
   unlink($file_temp);
  }
 }
}
}
 
?>

создаем chat.txt всё это закидываем на сервер и ставим права на запись для chat.txt
Всё наслаждаемся!!!! тема взята от автора azzzi и код немного переделал!!!!
Теги:
ЧАТ, Iframe, Вконтакте api
Добавлено: 16 Августа 2013 08:29:25 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...