[php] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    Готово
    PHP:
    <?php
    $login 
    '';
    $pass '';
    ##############################################################
    ##############################################################
    $ua 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en; rv:1.8.1.11) Gecko/20071127 Firefox/3.0.0.3';
    $url 'http://www.adultconvert.ru/login.php';
    $req "login=$login&pass=$pass&go=%C2%EE%E9%F2%E8";
    $ref 'http://adultconvert.ru/';
    $ch curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_USERAGENT$ua);
    curl_setopt($ch,CURLOPT_REFERER$ref);
    curl_setopt($ch,CURLOPT_COOKIEJAR'./cook');
    curl_setopt($ch,CURLOPT_COOKIEFILE'./cook');
    curl_setopt($ch,CURLOPT_RETURNTRANSFER1);
    curl_setopt($ch,CURLOPT_POST,1);
    curl_setopt($ch,CURLOPT_POSTFIELDS,$req);
    curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
    $result curl_exec($ch);
    curl_close($ch);
    ##############################################################
    sleep(1);
    ##############################################################
    $ch curl_init('http://www.adultconvert.ru/akk/links.php');
    curl_setopt($ch,CURLOPT_REFERER,'http://www.adultconvert.ru/akk/news.php');
    curl_setopt($ch,CURLOPT_COOKIEJAR'./cook');
    curl_setopt($ch,CURLOPT_COOKIEFILE'./cook');
    curl_setopt($ch,CURLOPT_RETURNTRANSFER1);
    curl_setopt($ch,CURLOPT_USERAGENT$ua);
    $result curl_exec($ch);
    curl_close($ch);
    preg_match_all('#value=\"(.*?)\"#',$result,$matches);
    ##############################################################
    foreach ($matches[1] as $link) {
        echo 
    $link.'<br>';

    }
    ?>
     
  2. je0n

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

    Joined:
    14 May 2006
    Messages:
    345
    Likes Received:
    96
    Reputations:
    41
    всякие маленькие сайты читаются через сокеты при таком коде:
    PHP:
    <form method='POST'>
    server:<input type='text' name='server' size=50><br>
    <input type='submit' value='hAck)'>
    </form>
    <?php
    $server
    =$_POST['server'];
    $s=fsockopen($server,80,$err,$err_msg);
    if(!
    $s)echo "($err) - $err_msg";
    else
    {
        echo 
    "<font color='green'>me connected to <b>$server</b>... tring to HaCk the systen my Lord)</font><br>";
        
    $str=""//string whitch gets all text before length you need
        
    fputs($s,"GET / HTTP/1.1 \nHost: $server\nUser-Agent: Opera mini\nAccept: text/html\nAccept-Language: ru,en-us\nAccept-Charset: windows-1251\n\n");
        while(!
    feof($s)) //strpos($str,"Content-Length")===false
        
    {
            
    $str.=fgets($s,1000);
        }
        echo 
    nl2br(htmlspecialchars($str));
    }
    ?>
    а вот сайты покрупнее уже нет! Например,ниодин поисковик не выдают свою страницу по этому хттп-запросу. рамблер,например, выдает какую-то страничку 302 found.
    Я так понимаю, что они как-то обрабатывают мой запрос и в нем не хватает какого-то ключевого параметра, но я не всосу какого :( все что знал, понавпихивал в запрос.
    Короче, помогите составить запрос, чтобы все сайты читались этим скриптом
     
  3. [dei]

    [dei] Active Member

    Joined:
    24 Nov 2008
    Messages:
    171
    Likes Received:
    112
    Reputations:
    5
    je0n, скрипт правильно работает, например запрос rambler.ru возвращает редирект на www.rambler.ru, как и должно быть
    Code:
    Location: http://www.rambler.ru/
    советую почитать спецификацию протокола HTTP

    чтобы небыло долгого ожидания ответа сервера добавь вконце заголовок
    Code:
    Connection: close
     
    2 people like this.
  4. je0n

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

    Joined:
    14 May 2006
    Messages:
    345
    Likes Received:
    96
    Reputations:
    41
    Блин! я заморочился с сокетами, тока ради того чтобы получать длинну страницы из заголовка страницы Content-length, а всю остальную страницу уже вообще не читать! А оказалось, что этот заголовок возвращается на редком сервере!Корочь, я обломался. Нельзя ли как-нить особенно обратится к серверу, чтобы он полубому вернул заголовок Content-length?
     
  5. DDoSька

    DDoSька Elder - Старейшина

    Joined:
    5 May 2008
    Messages:
    317
    Likes Received:
    352
    Reputations:
    18
    ИМХО лучше на курл перейди
     
    1 person likes this.
  6. je0n

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

    Joined:
    14 May 2006
    Messages:
    345
    Likes Received:
    96
    Reputations:
    41
    в курле есть возможность получить content-length любой страницы, не получая хтмл-код?
    Меня сейчас это волнует, через сокеты этот параметр чето нифига не появляется, по крайней мере тем путем, каким делаю я :( хнык
     
    1 person likes this.
  7. KIR@PRO

    KIR@PRO from Exception

    Joined:
    26 Dec 2007
    Messages:
    826
    Likes Received:
    291
    Reputations:
    359
    смысл? =) сокеты меньше кода :D
     
    _________________________
  8. KIR@PRO

    KIR@PRO from Exception

    Joined:
    26 Dec 2007
    Messages:
    826
    Likes Received:
    291
    Reputations:
    359
    2je0n

    попробуй так:

    PHP:
    fputs($s,"GET / HTTP/1.1\nAccept: text/html\nAccept-Language: en-us\nUser-Agent: Mozilla/4.0 \n\n");
     
    _________________________
  9. t4Nk

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

    Joined:
    23 Sep 2007
    Messages:
    70
    Likes Received:
    33
    Reputations:
    0
    когда формируешь http-пакет, вместо GET пиши HEAD, тогда сервер вернет только заголовки, а оттуда уже распаришь content-length.
     
    1 person likes this.
  10. geforse

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

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    У меня есть форма (<form>) в которой два поля, мне нужно чтобы человек вводил только в одной из них (на выбор, либо в перовй либо во второй)

    PHP:
    if (($_POST['1']) and ($_POST['2']))
    {
    echo (
    "Ошибка");
    Вобщем всё работает .... но может есть более изящный чтоли метод решения этой задачи ? :)
     
    1 person likes this.
  11. Zedi

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

    Joined:
    6 Jun 2007
    Messages:
    316
    Likes Received:
    120
    Reputations:
    13
    Что может быть изящнее? Разве что на яве еще прикрепить, чтобы когда в одно поле что нить вводил другое очищалось)
     
  12. geforse

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

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    Zedi спасибо ... просто думал может оператор есть какой то для этих целей )))
     
    1 person likes this.
  13. DDoSька

    DDoSька Elder - Старейшина

    Joined:
    5 May 2008
    Messages:
    317
    Likes Received:
    352
    Reputations:
    18
    Если тебе лень печатать,то пожалуйста
    .
     
  14. DDoSька

    DDoSька Elder - Старейшина

    Joined:
    5 May 2008
    Messages:
    317
    Likes Received:
    352
    Reputations:
    18
    Любой?
    || - или
    &&- и
    насколько я помню
     
  15. Zedi

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

    Joined:
    6 Jun 2007
    Messages:
    316
    Likes Received:
    120
    Reputations:
    13
    Вот ему нужно И, то есть &&, а не любой, и смысл этого? На 1 символ меньше?
     
    2 people like this.
  16. Zedi

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

    Joined:
    6 Jun 2007
    Messages:
    316
    Likes Received:
    120
    Reputations:
    13
    С помощью explode и foreach можно сделать, а функцию такую не знаю
     
  17. DDoSька

    DDoSька Elder - Старейшина

    Joined:
    5 May 2008
    Messages:
    317
    Likes Received:
    352
    Reputations:
    18
    ее знать не надо,ее создать нужно ;)
     
  18. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Вот что надумал я =)
    PHP:
    function marray($string) {
    $all=explode("&",$string);
    $first=explode("=",$all[0]);
    $second=explode("=",$all[1]);
    print_r($first);
    print_r($second); }
     
  19. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Эм... не знал о функции array_combine. Спс!
     
  20. astrologer

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

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    parse_str();
     
Thread Status:
Not open for further replies.