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

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

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

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

    Joined:
    4 Oct 2008
    Messages:
    189
    Likes Received:
    4
    Reputations:
    -5
    есть переменная содержащая в себе html страницу полученую курлом, в ней множество ссылок вида
    <a amba="user:167771" id="usero" href="http://site.com/param">
    мне нужно с помощью прег реплейса заменить их на пустоту. Сейчас попробую то что ты написал

    PHP:
    $ontent preg_replace('<a amba="([^"])"  id="usero" href="([^"])">'''$content); 
    echo 
    $content
    Остались ссылки :(

    шаблон для поиска урлов не предлогать, т.к. вашу маску буду использовать для несколько других целей, вообще у меня запланирована оставить ссылку текстом, обрезав тег <a></a>, я писал уже этот скрипт, но к сожалению хард умер. До этого использовал что то вроде этого
    PHP:
    preg_replace('<a amba="(.*)"  id="usero" href="'''$content); 
    Ошметки дорезал с помощью str_replace
    Мне по сути нужно лишь регулярное выражение, которое можно вписать в кавычках, которое будет значить любое значение\символ\букву, оно выглядело как то так (.*) но были еще слеши, как ставить правильно слеши не помню.

    Вообщем, тяжело как то донести все это....
    Задача

    Содержимое переменной $content =
    PHP:
    <a amba="user:16433460"  id="usero" href="http://site.com/fsdgsdqg">
    <
    a amba="user:144475460"  id="usero" href="http://site.com/iuyyurtrec">
    <
    a amba="user:75460"  id="usero" href="http://site.com/mnbv">
    Необходимо привести содержимое к виду:
    PHP:
    http://site.com/fsdgsdqg">
    http://site.com/iuyyurtrec">
    http://site.com/mnbv">
    Дальше уже сам обкусаю, спасибо тем кто понял меня :) И спасибо тем кто пытается помочь =)
     
    #21321 Vinsik, 16 Dec 2012
    Last edited: 16 Dec 2012
  2. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    всем привет, немогу сам ничего поделать, подскажите что я передаю неправильно

    нужна зарегатся на сайте

    http://openmeta.org/120671/cms_personal

    Заголовки



    скрипт

    PHP:
    <?  $b = array('a','b','c','d','e','f','g','i','h','j','k','l','m','n','o','p','q','r','s','t','u','w','x','y','z');  $rand1 rand(0,24);  $rand2 rand(0,24);  $rand3 rand(0,24);  $rand4 rand(0,24);  $rand5 rand(0,24);  $rand6 rand(0,24);  $rand7 rand(0,24);  $rand8 rand(0,24);  $rand9 rand(0,24);  $rand10 rand(0,24);  $rand11 rand(0,9);  $rand12 rand(0,9);  $rand13 rand(0,9);  $rand14 rand(0,9);  $rand15 rand(0,9);    $name "$b[$rand1]$b[$rand2]$b[$rand3]$b[$rand4]$b[$rand5]$b[$rand6]$b[$rand7]$b[$rand8]$b[$rand19]$b[$rand10]";  $email $name."@mail.ru";  $pass "$rand11$rand12$rand13$rand14$rand15$b[$rand1]$b[$rand2]$b[$rand3]$b[$rand4]$b[$rand5]";  $cookiefile "openmetaorg.txt";      $h '"Content-Type" content="text/html; charset=utf-8"';  $post "__form_auth=free&RETURN=back&REFERER=http://openmeta.org/&Posting=item&item.PARENT_ID=openmeta&item.TYPE_ID=AUTHOR&item.__new=1&item.Check=item.1&item.1.CHK=!%LOGIN&&%SAVE&item.1.ACT=fail&item.1.MSG=Не введено регистрационное имя!&item.LOGIN=$name&item.Check=item.2&item.2.CHK=!%PASS1&&%STATUS!=LOCKED&&%SAVE&item.2.ACT=fail&item.2.MSG=Не введен пароль!&item.PASS1=$pass&item.PASS2=$pass&item.Check=item.3&item.3.CHK=!%TITLE&&%SAVE&item.3.ACT=fail&item.3.MSG=Не введено полное имя!&item.TITLE=aaaaaaaaaaaaa&item.TITLE.REPR=Text&item.OPEN_INFO=ALL&item.Check=item.4&item.4.CHK=%EMAIL~(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)&&%SAVE&item.4.ACT=fail&item.4.MSG=Неверный E-mail!&item.Check=item.5&item.5.CHK=%EMAIL&&%EMAIL!~.+@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,6}|[0-9]{1,3})(\]?)&&%SAVE&item.5.ACT=fail&item.5.MSG=Неверный E-mail!&item.EMAIL=$email&item.NO_SEND=1&Use=item.NO_SEND&item.NO_SEND.EXPR=0ifempty&item.UIN=657558458&item.ABSTRACT=ddddddddddddd&item.ABSTRACT.REPR=Text&item.TEXT=<html>&<head>&<meta http-equiv=$h />&<title>communiware item </title>&</head>&<body>&</body>&</html>&item.TEXT.REPR=HTML&item.WYSIWYG=1&item.UPLOAD=Content-Type: application/octet-stream&item.UPLOAD_TYPE1=file&item.UPLOAD_PIC_FORTEXT1=Content-Type: application/octet-stream&item.UPLOAD_PIC_FORTEXT1_NAME=item.MailSpec=cms_registration_m(%ITEM_ID)html&Use=item.WRITTEN_ACCURACY&item.WRITTEN_ACCURACY.EXPR=UNKNOWN&ADDRESSEE=EDITOR_VIEW=ret_ids=ret_tpls=.cgifields=item.NO_LINT&.cgifields=item.NO_SEND&.cgifields=item.WYSIWYG&SAVE=Зарегистрироваться";        $cur=curl_init();   curl_setopt($curCURLOPT_URL"http://openmeta.org/openmeta/cms_personal");   curl_setopt($cur,CURLOPT_USERAGENT,"Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.8.131 Version/11.10");      curl_setopt($cur,CURLOPT_COOKIEJAR,"$cookiefile");         curl_setopt($cur,CURLOPT_COOKIEFILE,"$cookiefile");   curl_setopt($cur,CURLOPT_RETURNTRANSFER,1);   curl_setopt($curCURLOPT_POST1);           curl_setopt($curCURLOPT_POSTFIELDS,$post);    $ok curl_exec($cur);  curl_close($cur);    echo $ok;      ?>

    передаю заголовки точь в точь но ответ от сайта Неверный E-mail!

    почему??
     
  3. 0o Chris o0

    0o Chris o0 New Member

    Joined:
    16 Oct 2011
    Messages:
    142
    Likes Received:
    1
    Reputations:
    0
    Всем привет. Такая проблема: надо залогиниться на сайте, я все отправляю на login.php, мне в ответ выдаются cookie и происходит редирект на home.php, так надо выставить куки до редиректа, иначе не пускает. Как бы это провернуть?
     
  4. mironich

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

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    Сделать перед post запросом get на login.php, а вообще куки должны ставиться при редиректе..
     
  5. LStr1ke

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

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    Вроде CURL c параметрами CURLOPT_COOKIEFILE, CURLOPT_FOLLOWLOCATION - сам сохранит куки и использует их при редиректе.
     
  6. 0o Chris o0

    0o Chris o0 New Member

    Joined:
    16 Oct 2011
    Messages:
    142
    Likes Received:
    1
    Reputations:
    0
    Я тоже так думал, но почему то не выходит. Нужно чтобы куки передавались в хедерах, как "Cookie: ...", делаю без редиректа, отправляю запрос на логин, получаю куки, пихаю их в хедеры и делаю запрос на home.
     
  7. VY_CMa

    VY_CMa Green member

    Joined:
    6 Jan 2012
    Messages:
    917
    Likes Received:
    492
    Reputations:
    724
    0o Chris o0, без исходника будем молчать!
     
    _________________________
  8. 0o Chris o0

    0o Chris o0 New Member

    Joined:
    16 Oct 2011
    Messages:
    142
    Likes Received:
    1
    Reputations:
    0
    PHP:
    <?php
    $url 
    'http://heroeswm.ru/login.php';
    $user 'Mozilla/5.0 (Windows NT 5.1; rv:17.0) Gecko/20100101 Firefox/17.0';
    $headers = array('Host: www.heroeswm.ru''User-Agent: '.$user,'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8''Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',
    'Accept-Encoding: gzip, deflate''Connection: keep-alive''Referer: http://www.heroeswm.ru/login.php');
    $ch curl_init();
    curl_setopt($chCURLOPT_URL$url);
    curl_setopt($chCURLOPT_HEADERtrue);
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_POST1);
    curl_setopt($chCURLOPT_POSTFIELDS"LOGIN_redirect=1&login=Логин&pass=пароль");
    curl_setopt($chCURLOPT_HTTPHEADER$headers);
    curl_setopt($chCURLOPT_FOLLOWLOCATION0);
    //curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
    $result curl_exec($ch);
    echo 
    $result "<p>";
    preg_match_all('/Set-Cookie: ((.*)=(.*);){0,}/',$result,$res); //немного изменил регулярку
    $cookie='';
    print_r($res[1]);
    echo 
    "<p>";
    foreach (
    $res[1] as $value) {
        
    $cookie.= $value;
    }
    echo 
    $cookie "<p>";
    //$cookieArray = explode('Set-Cookie: ', $cookie);

    //print_r($cookieArray);

    //curl_setopt($ch, CURLOPT_URL, 'http://heroeswm.ru/home.php');
    //array_push($headers, "Cookie: ".$newcookie);
    //curl_setopt($ch, CURLOPT_POST, 0);
    //curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    //$result = curl_exec($ch);
    curl_close($ch);
    //echo $result;
    ?>
     
  9. VY_CMa

    VY_CMa Green member

    Joined:
    6 Jan 2012
    Messages:
    917
    Likes Received:
    492
    Reputations:
    724
    0o Chris o0, ня...
    PHP:
    <?php

    function auth($url){
    $cookie '';
    $ch curl_init();
    curl_setopt($chCURLOPT_URL$url); 
    curl_setopt($chCURLOPT_POST1);
    curl_setopt($chCURLOPT_POSTFIELDS"LOGIN_redirect=1&login=testeste&lreseted=1&pass=1Aa____&preseted=1&x=112&y=25");
    curl_setopt($chCURLOPT_COOKIE$cookie); 
    curl_setopt($chCURLOPT_USERAGENT'Mozilla/5.0 (Windows NT 5.1; rv:17.0) Gecko/20100101 Firefox/17.0');
    curl_setopt($chCURLOPT_COOKIEFILEdirname(__FILE__) . '/cookie.txt');
    curl_setopt($chCURLOPT_COOKIEJARdirname(__FILE__) . '/cookie.txt');
    curl_close($ch);
    }
    function 
    enter($url)
    {
    $ch curl_init();
    curl_setopt($chCURLOPT_URL$url); 
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_USERAGENT'Mozilla/5.0 (Windows NT 5.1; rv:17.0) Gecko/20100101 Firefox/17.0');
    curl_setopt($chCURLOPT_COOKIEFILEdirname(__FILE__) . '/cookie.txt');
    curl_setopt($chCURLOPT_COOKIEJARdirname(__FILE__) . '/cookie.txt');
    $result curl_exec($ch);
    echo 
    $result;
    curl_close($ch);
    }
    auth("http://heroeswm.ru/login.php");
    enter("http://www.heroeswm.ru/home.php");
    ?> 
    [​IMG]
     
    _________________________
  10. 0o Chris o0

    0o Chris o0 New Member

    Joined:
    16 Oct 2011
    Messages:
    142
    Likes Received:
    1
    Reputations:
    0
    Спасибо. Все куда проще...

    Еще небольшой вопрос, а каким образом "www" влияет на результат: с ним запрос проходит нормально, а без него ответ "301 Moved Permanently"?
     
    #21330 0o Chris o0, 21 Dec 2012
    Last edited: 21 Dec 2012
  11. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    код сапы

    Всем привет, такая проблма, не могу впихнуть сайт в сапу с таким кодом, ето всё я инклудом добавляю в index.php а сапа пишет что кода не нашол, я млин делаю неправильно?

    код
     
  12. phenix1025

    phenix1025 New Member

    Joined:
    20 Oct 2012
    Messages:
    11
    Likes Received:
    1
    Reputations:
    0
    Ой, не хорошо ссылки прятать - пс плохо к такому относятся :)

    А вот по коду - добавь на страницу на время добавления
    Code:
    <!--check code-->
    и проблема решится (после добавления строку можно убирать)
     
  13. Trinux

    Trinux Members of Antichat

    Joined:
    26 Nov 2004
    Messages:
    1,403
    Likes Received:
    296
    Reputations:
    364
    Никаким, т.е. поддомен www не является обязательным, но многие его используют, как основной. Чаще всего не имеет разницы, запрашиваешь ты проект с www или без. Но есть проекты, которые настраиваются на работу только с www, или только без него. В частности ты попал на тот, что работает только с www, а 301 заголовок указывает на то, что Moved Permanently, т.е. документ перенесён навсегда. Ответ с таким заголовком подаётся вместе с Location хеадером, который указывает, куда именно перенесён документ. Для курла в твоём случае достаточно поставить
    PHP:
    curl_setopt($chCURLOPT_FOLLOWLOCATION1
    что скажет курлу следовать всем редиректам.
     
    _________________________
  14. blesse

    blesse Member

    Joined:
    18 Jan 2012
    Messages:
    175
    Likes Received:
    8
    Reputations:
    1
    Набросайте скрипт плз есть файл в нем разные данные из них надо спарсить хэши wordpress они еще заключены в # ,но в ## встречаются и другие данные я так понимаю- #$P$(.+)#
     
  15. Skofield

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

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    392
    Reputations:
    58
    blesse,
    PHP:
    <?php
    preg_match_all
    ('~#(\$P\$B.+)#~'file_get_contents('data.txt'), $matches);
    print_r($matches[1]);
     
    1 person likes this.
  16. BRR

    BRR New Member

    Joined:
    4 Jun 2012
    Messages:
    31
    Likes Received:
    1
    Reputations:
    0
    всем привет,пишу хелпер.

    вот код

    PHP:
    <?php

    Class helper {

       public function 
    __construct($helper) {
          
            
    $helper_list = array(
            
            
    'br' => $this->br(),
            
    'test1' => $this->test1(),
            
            );
            
            
    array_search($helper,$helper_list);
        
            }
            
        public function 
    br() {

             echo 
    "br";

             }
           
           public function 
    test1() {

             echo 
    "test1sss";

             }


    }

    $helper = new helper('test1');


    ?>

    почему вызывается обе функции одновременно?

    надо чтоб при вызове br() вызывало только его.
     
  17. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Потому что ты их сам вызываешь.
    Code:
    'br' => $this->br(),
    'test1' => $this->test1(), 
    
     
    _________________________
  18. BRR

    BRR New Member

    Joined:
    4 Jun 2012
    Messages:
    31
    Likes Received:
    1
    Reputations:
    0
    del///
     
  19. sharm

    sharm New Member

    Joined:
    4 Dec 2012
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте!
    Скажите, плиз, в каком направлении лучше копать, есть следующая задача:
    имеется:
    сайт_хозяин - с него происходит управление сайтами_рабами
    сайт_раб_1 - имеет скрипт который выполняет команды (сейчас я просто передаю гет запрос вида cmd=1&=value=lalala, скрипт записывает lalala в файл 1.txt)
    сайт_раб_2 - идентичен сайту_рабу_1
    сайт_раб_3 - идентичен сайту_рабу_1

    Задача:
    Мне просто лень в ручную, в браузере передавать каждому сайту_рабу параметры гет.
    По этому я сделал сайт_хозяин, куда поместил 1 текст бокс и 1 кнопку и хочу одной кнопкой передать сразу 3-м сайтам_рабам параметры. И склоняюсь более к тому что бы переделать все под метод пост.

    Вопрос к вам, специалисты(т.к. я в пхп ноль):
    В какую сторону копать ? курл, сокеты, еще какая-то фигня ?

    Заранее спасибо!
    (За пример вообще буду счастлив по уши) =)
     
  20. mironich

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

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    curl
     
Thread Status:
Not open for further replies.