!!СРОЧНО НУЖЕН СКРИПТ!!

Discussion in 'PHP' started by Godfather Bulan, 5 Aug 2008.

  1. Godfather Bulan

    Godfather Bulan Elder - Старейшина

    Joined:
    18 Mar 2008
    Messages:
    172
    Likes Received:
    443
    Reputations:
    25
    на главной странице форума античата список тех, кто онлайн. нужен скрипт такой, чтобы был вывод на html странице.
    И нужен граббер RSS с ачата. как тут http://godlab.ru/faq/
     
    10 people like this.
  2. lisa99

    lisa99 Banned

    Joined:
    15 Jul 2008
    Messages:
    359
    Likes Received:
    200
    Reputations:
    70
    куда это все ты собрался вставлять?
    т.е. скрипт...для форума или cms или просто гипертестовых страниц?

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

    Godfather Bulan Elder - Старейшина

    Joined:
    18 Mar 2008
    Messages:
    172
    Likes Received:
    443
    Reputations:
    25
    рабочий стол оформить в стиле ачата надо. хостинг с пхп есть
     
  4. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    эээ..типо список юзеров?
    Всё это безобразие делается примерно так:
    Создаёшь с БД таблицу например `sessions` примерно с таким содержанием:
    Code:
    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/>';
       }
    }
    Короче в таком духе))
     
    4 people like this.
  5. Godfather Bulan

    Godfather Bulan Elder - Старейшина

    Joined:
    18 Mar 2008
    Messages:
    172
    Likes Received:
    443
    Reputations:
    25
    эм.. не то))) еще предложения?))) надо именно С АЧАТА!!
     
  6. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Слава богу обьяснил в аське что за скрипт нужен))
    проверил. вроде работает.
    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('/');
    preg_match('#<td class="alt1" width="100%">(.+)<\/div>#Us'$site$out);
    echo 
    strip_tags($out[1]);
    ?>
     
    #6 .:EnoT:., 5 Aug 2008
    Last edited: 5 Aug 2008
  7. Godfather Bulan

    Godfather Bulan Elder - Старейшина

    Joined:
    18 Mar 2008
    Messages:
    172
    Likes Received:
    443
    Reputations:
    25
    актуален только вопрос с Rss
     
    1 person likes this.
  8. Shadow_p1raT

    Shadow_p1raT Elder - Старейшина

    Joined:
    9 Mar 2008
    Messages:
    174
    Likes Received:
    93
    Reputations:
    0
    Сам когда-то писал
    PHP:
    <?php
    $rss
    =simplexml_load_file('/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>"
    }
    ?>
     
    2 people like this.