Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   !!СРОЧНО НУЖЕН СКРИПТ!! (https://forum.antichat.xyz/showthread.php?t=79686)

Godfather Bulan 05.08.2008 00:03

!!СРОЧНО НУЖЕН СКРИПТ!!
 
на главной странице форума античата список тех, кто онлайн. нужен скрипт такой, чтобы был вывод на html странице.
И нужен граббер RSS с ачата. как тут http://godlab.ru/faq/

lisa99 05.08.2008 01:03

Цитата:

Сообщение от Godfather Bulan
на главной странице форума античата список тех, кто онлайн. нужен скрипт такой, чтобы был вывод на html странице.
И нужен граббер RSS с ачата. как тут http://godlab.ru/faq/

куда это все ты собрался вставлять?
т.е. скрипт...для форума или cms или просто гипертестовых страниц?

все это есть. уточни

Godfather Bulan 05.08.2008 01:28

рабочий стол оформить в стиле ачата надо. хостинг с пхп есть

.:EnoT:. 05.08.2008 01:50

Цитата:

на главной странице форума античата список тех, кто онлайн. нужен скрипт такой, чтобы был вывод на html странице.
эээ..типо список юзеров?
Всё это безобразие делается примерно так:
Создаёшь с БД таблицу например `sessions` примерно с таким содержанием:
Код:

CREATE TABLE `sessions` (
  `session` varchar(32) NOT NULL,
  `date` datetime NOT NULL,
  `username` varchar(100)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

Далее в главном файле делаем примерно следующее:
PHP код:

<?php
session_start
();
$session session_id();

$_SESSION['username'] = !empty($_COOKIE['name']) ? $_COOKIE['name'] : ''//Имя юзера (для примера берём с куки)

$interval 15//интервал бездействия юзера в мин

#Экранируем имя юзера (но лучше сделать функцию получше =)))
$u_name = !get_magic_quotes_gpc() ? mysql_real_escape_string($_SESSION['username']) : $_SESSION['username'];
$sql mysql_query("SELECT * FROM `sessions` WHERE `session` = '".$session."'");
if(
$sql && mysql_num_rows($sql) > 0){
   
#Если сессия уже существует то обновляем время
   
mysql_query("UPDATE `sessions` SET `date` = NOW(), `username` = '".$u_name."' WHERE `session`='".$session."'");
}else{
   
#Если не существует то заносим
   
mysql_query("INSERT INTO `sessions` VALUES('".$session."', NOW(),'".$u_name."')");
}
#Удаляем старые сесии
mysql_query("DELETE FROM `sessions` WHERE `date` < NOW() - INTERVAL '".$interval."' MINUTE");

?>

Далее делаем функцию которая получает кол-во гостей и пользователей:
PHP код:

function online(){
    
$sql mysql_query("SELECT COUNT(*) FROM `sessions` WHERE `username` != '' UNION SELECT COUNT(*) FROM `sessions` WHERE `username` = ''");
    
$users mysql_result($sql0);
    
$guests mysql_result($sql1);
    
$vsego $users $guests;
    return array(
           
'vsego' => intval($all),
           
'users' => intval($users),
           
'guests' => intval($guests])
           );


Соответственно фукция возвращает массив. Выводится так:
PHP код:

<?php
$online 
online();
echo 
'Сейчас на сайте '.$online['vsego'].' пользователей ('.$online['users'].' гостей и '.$online['guests'].' гостей)';
?>

А ники юзеров выводятся просто циклом, типо того:
PHP код:

$sql mysql_query("SELECT * FROM `sessions` WHERE `username` != ''");
if(
$sql && mysql_num_rows($sql) > 0){
   while(
$nick mysql_fetch_array($sql)){
      echo 
htmlspecialchars($nick['username']).'<br/>';
   }


Короче в таком духе))

Godfather Bulan 05.08.2008 01:54

эм.. не то))) еще предложения?))) надо именно С АЧАТА!!

.:EnoT:. 05.08.2008 02:10

Слава богу обьяснил в аське что за скрипт нужен))
проверил. вроде работает.
PHP код:

<?php
function send(){
    
$send "GET /index.php? HTTP/1.1\r\n";
    
$send .= "Host: forum.antichat.ru\r\n";
    
$send .= "User-Agent: Mozilla/5.0\r\n";
    
$send .= "Pragma: no-cache\r\n";
    
$send .= "Connection: Close\r\n\r\n";
    
$socket = @fsockopen('forum.antichat.ru'80$errno$errstr30);
    
fputs($socket$send);
    
$line '';
    while(!
feof($socket)){
      
$line .= fgets($socket4096);
    }
    
preg_match('#<td class="alt1" width="100%">(.+)<\/div>#Us'$line$out);
    return 
strip_tags($out[1]);
}

echo 
send();  
?>

UPD:
Бля, чё тупанул. можно было и без сокетов))
PHP код:

<?php
$site 
file_get_contents('http://forum.antichat.ru');
preg_match('#<td class="alt1" width="100%">(.+)<\/div>#Us'$site$out);
echo 
strip_tags($out[1]);
?>


Godfather Bulan 05.08.2008 02:31

актуален только вопрос с Rss

Shadow_p1raT 05.08.2008 05:16

Сам когда-то писал
PHP код:

<?php
$rss
=simplexml_load_file('http://forum.antichat.ru/news.rss'); 
foreach (
$rss->channel->item as $item) {  
  echo 
"<a href='"$item->link"'>"iconv("UTF-8""WINDOWS-1251"$item->title). "</a>";  
  echo 
"<p>"iconv("UTF-8""WINDOWS-1251"$item->description). "</p>"
}
?>



Время: 13:12