Как написать пост на форум

Тема в разделе "PHP", создана пользователем Terri.p, 4 фев 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Terri.p

    Terri.p Постоялец

    Регистр.:
    24 ноя 2008
    Сообщения:
    56
    Симпатии:
    31
    Здравствуйте,
    У меня такая задача нужно чтобы скрипт постил в форум на PHPBB в одну единственную тему, я подсмотрел что отправляет браузер и попытался сымитировать тоже ..
    Но что-то не хочет работать, в чем грабли, мой код:

    PHP:
    $host="www.forumbb"
    $content="subject=&addbbcode18=%23444444&addbbcode20=0&helpbox=Font+size%3A+%5Bsize%3Dx-small%5Dsmall+text%5B%2Fsize%5D&message=Testggggggggggggggg+post+tttt+ffffffff&mode=reply&sid=e6c6d43fe97ea975cc83628e00972d17&t=2&post=Submit"
    $UserAgent 'Mozilla/5.0 (Windows; U; Windows NT 5.1; uk; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3 ;
    $Accept = '
    text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
    $refer="www.forumbb/posting.php?mode=reply&t=2"; 
    $cookie="phpbb2mysql_data=a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bs%3A0%3A%22%22%3Bs%3A6%3A%22userid%22%3Bs%3A1%3A%222%22%3B%7D; phpbb2mysql_sid=e6c6d43fe97ea975cc83628e00972d17; phpbb2mysql_t=a%3A1%3A%7Bi%3A2%3Bi%3A1233717544%3B%7D"; 
    $zap="/posting.php"; 
    $get="POST $zap HTTP/1.1\r\nHost: $host\r\nUser-Agent: $UserAgent\r\nAccept: $Accept\r\nAccept-language: ru,uk;q=0.8,en-us;q=0.5,en;q=0.3\r\nAccept-Encoding: gzip,deflate\r\nAccept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\nKeep-Alive: 300\r\nConnection: keep-alive\r\nReferer: $refer\r\nCookie: $cookie\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: 191\r\n\r\n$content\r\n"; 
    $fp=fsockopen($host,80); 
    fwrite($fp,$get); 
    fclose($fp);
    ЗИ: Если то что я на писал извращение и можно все реализовать проще, то не откажусь от примера.
     
  2. HeavyHell

    HeavyHell

    Заблокирован
    Регистр.:
    15 апр 2006
    Сообщения:
    278
    Симпатии:
    71
    сессия каждый раз меняется, а тут не видно что б ты ее получал... похоже написал от болды + перед постом скорее всего надо залогинится на форуме
     
  3. serb80

    serb80 Писатель

    Регистр.:
    14 ноя 2008
    Сообщения:
    13
    Симпатии:
    1
    Такие вещи удобно делать с помощью класса snoopy
     
  4. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    312
    ТС, если ты полностью сюда скопировал то, что пробывал запускать, то проблема, скорее всего, в том, что ты ковычку забыл в конце этой строки:
    PHP:
    $UserAgent 'Mozilla/5.0 (Windows; U; Windows NT 5.1; uk; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3';
    а вообще попробуй дописать перед fclose($fp); такой код(чтобы вывести ответ сервера:(
    PHP:
    while($ss=fread($fp,4096))
      echo 
    $ss;
    и посмотри результат.
     
  5. kalpsik

    kalpsik Писатель

    Регистр.:
    14 мар 2007
    Сообщения:
    6
    Симпатии:
    1
    попробуй курлом, на нем более прозрачно все получается, да и проблем с куками и сессиями не должно быть
     
  6. Terri.p

    Terri.p Постоялец

    Регистр.:
    24 ноя 2008
    Сообщения:
    56
    Симпатии:
    31
    Про сессии я тоже уже догадался.

    Добавлено через 20 секунд
    О спасибо сейчас посмотрю …

    Добавлено через 45 секунд
    Кто-нибудь может показать пример роботы с сессиями?
     
  7. pslava

    pslava

    Регистр.:
    16 май 2007
    Сообщения:
    618
    Симпатии:
    122
    Советую использовать курл. вот примерчик (я его адаптировал под твои переменные:(
    PHP:
      $cookie 'cookies.txt';
      
    $ch curl_init();
      
    curl_setopt($chCURLOPT_HEADER0);
      
    curl_setopt ($chCURLOPT_USERAGENT$UserAgent);
      
    curl_setopt ($chCURLOPT_REFERER$referer);
      
    curl_setopt($chCURLOPT_FAILONERROR1);
      
    curl_setopt ($chCURLOPT_RETURNTRANSFER1);
      
    curl_setopt ($chCURLOPT_FOLLOWLOCATION1);
      
    curl_setopt ($chCURLOPT_TIMEOUT120);
      
    curl_setopt ($chCURLOPT_URL$host."/".$content);
      
    curl_setopt($chCURLOPT_COOKIEFILE$cookie);
      
    curl_setopt($chCURLOPT_COOKIEJAR$cookie);
      
    $result curl_exec ($ch);
    и в $result получишь результат твоего запроса
     
  8. Terri.p

    Terri.p Постоялец

    Регистр.:
    24 ноя 2008
    Сообщения:
    56
    Симпатии:
    31
    О спасибо побежал пробивать ))
     
Статус темы:
Закрыта.