Рабочий ЧАТ на Iframe
Добавлено: 14 мар 2011, 19:47
Вставляем в Index.php
в файл getchat.php вставляем
и в addchat.php
создаем chat.txt всё это закидываем на сервер и ставим права на запись для chat.txt
Всё наслаждаемся!!!! тема взята от автора azzzi и код немного переделал!!!!
пример работы чата здесь: http://vkontakte.ru/app1833150
Код: Выделить всё
<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>"; ?>
Код: Выделить всё
<?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); } } }} ?>
Всё наслаждаемся!!!! тема взята от автора azzzi и код немного переделал!!!!
пример работы чата здесь: http://vkontakte.ru/app1833150