1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

Примитивный скрипт вставления строки в форму html-страницы и её сабмит

Тема в разделе "Web Coding", создана пользователем G-Null, 4 дек 2007.

Статус темы:
Закрыта.
Модераторы: latteo
  1. G-Null

    G-Null

    Регистр.:
    6 сен 2007
    Сообщения:
    180
    Симпатии:
    21
    Подскажите, пожалуйста, примерный скрипт, вставляющий в форму хтмл-страницы определённое значение. При том что у формы method="post". Если был бы get то я бы просто ввёл в строке адреса соответствующую переменную и приравнял бы ей, что следует. А как быть при method="post" ?
    Просто даже не знаю за что ухватится ..
     
  2. bueno

    bueno Читатель

    Заблокирован
    Регистр.:
    7 май 2007
    Сообщения:
    236
    Симпатии:
    69
    копай curl..
    http://ru2.php.net/manual/ru/ref.curl.php
    если точнее - тебе надо сразу отправлять данные (нужныйй набор "элемент формы" => "значение") постом в принимающий скрипт..
     
  3. ar4ik

    ar4ik

    Регистр.:
    26 ноя 2007
    Сообщения:
    331
    Симпатии:
    95
    С помощью курла.
    http://ua.php.net/manual/ru/ref.curl.php

    <?php

    $postData['userInfo'] = "@userInfo.xml"; //userInfo - имя поля в форме
    $url = "http://curl.dev";

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);

    curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
    $response = curl_exec($ch);

    print_r($response);
    if(curl_errno($ch))
    {
    print curl_error($ch);
    }
    curl_close($ch);
    ?>
     
  4. myweb

    myweb Среда обитания WEB

    Регистр.:
    10 сен 2007
    Сообщения:
    539
    Симпатии:
    246
    Сам всегда делаю через сокеты

    PHP:
     $fp fsockopen($proxy,$port$errno$errstr120) or die("can't connect");                
                      
    $headers "POST http://$hostname$path2 HTTP/1.1\r\n"
                      
    $headers .= "Host: $hostname\r\n"
                      
    $headers .= "Content-type: application/x-www-form-urlencoded\r\n";
                      
    $headers .= "Referer: http://".$hostname.$path1."\r\n";
                       
    $headers .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n";
                      
    $headers .= "Cookie: PHPSESSID=$cookie;\r\n";
                      
    $headers .= "Content-Length: ".strlen($data)."\r\n\r\n"
                         
    fwrite($fp,$headers.$data);
                            while(!
    feof($fp)){ 
                               
    $buffer.=fgets($fp,4096); }
                         
    fclose($fp);
    Вот кусочек кода из своего проекта.
     
  5. G-Null

    G-Null

    Регистр.:
    6 сен 2007
    Сообщения:
    180
    Симпатии:
    21
    myweb, пожалуйста поясни немного.. я в пхп новичок...
    я не очень понимаю а куда собственно в этом скрипте вставлять необходимые для ввода данные ?
    можешь на каком нить примере ? на каком нить сайте, ну чтоб было ясно, я просто реально не понимаю ..

    СПАСИБО ждёт ))
     
  6. judgefog

    judgefog

    Регистр.:
    12 авг 2006
    Сообщения:
    487
    Симпатии:
    335
    для примера из третьего поста
    (curl)
    POST через сокеты для начала запарно будет,
    если курла на хосте не окажется - тогда сокет

    PHP:
    $postData['название поля'] = "что нужно туда вписать"// повторить столько раз, сколько полей надо отправить
    $url "http://куда.шлем"// это должно быть action из формы
    остальное оставить как есть
     
  7. g0rn

    g0rn Постоялец

    Регистр.:
    3 июн 2007
    Сообщения:
    137
    Симпатии:
    63
    myweb, это конечно хорошо, но надо стараться использовать curl, ибо он рулит.
     
  8. G-Null

    G-Null

    Регистр.:
    6 сен 2007
    Сообщения:
    180
    Симпатии:
    21
    подскажите, пожалуйста, а что значит переменная $ch ?
    то как это описано тут
    http://ru2.php.net/manual/ru/function.curl-setopt.php
    честно говоря я совершенно не понял .. подскажите что это значит ?

    Если вы хорошо разбираетесь, я думаю это для вас не составит особого труда.
    Вот скрипт к форме авторизации на yandex.ru, поля уже соответствующие вписал. Укажите, что стоит изменить, чтоб всё заработало ?


    PHP:
    $postData['login'] = "testAcc"//userInfo - имя поля в форме
    $postData['passwd'] = "testPass"//userInfo - имя поля в форме
    $url "http://yandex.ru";

    curl_setopt($chCURLOPT_URL$url);
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_POST1);

    curl_setopt($chCURLOPT_POSTFIELDS$postData);
    $response curl_exec($ch);

    print_r($response);
    if(
    curl_errno($ch))
    {
    print 
    curl_error($ch);
    }
    curl_close($ch);
    Пожалуйста..



    Ну помогите, ну пожалуйста. Ну очень надо, не могу я сам додумать :(
     
  9. judgefog

    judgefog

    Регистр.:
    12 авг 2006
    Сообщения:
    487
    Симпатии:
    335
    первой строчкой должно быть
    PHP:
    $ch curl_init();
    создается ресурс, с которым потом и работаем
    выше просто пропустили это;

    а url нужен из формы, как я писал - action
    например на главной яндекса это (красным)
    PHP:
    <form action="http://passport.yandex.ru/passport?mode=auth&amp;retpath=http://mail.yandex.ru" method=post>
    на самом деле сразу надо было сказать,
    что речь о яндехе
    он и GET хавает спокойно.

    Вопрос будет в том что после отправки формы последует редирект
    и нужна еще одна опция
    PHP:
    curl_setopt($chCURLOPT_FOLLOWLOCATION1);
     
    G-Null нравится это.
  10. G-Null

    G-Null

    Регистр.:
    6 сен 2007
    Сообщения:
    180
    Симпатии:
    21
    judgefog, а ещё с одним моментом не подскажешь ?

    Мне необходимо с помощью этого дела в Direct Admin создавать тучи сабдоменов. (достпа к серваку нет, только к хостингу, поэтому и приходится прибегать к подобным ухищрениям). И вот собсна что он мне выдаёт при :

    PHP:
    <?php
    $ch 
    curl_init();

    $postData['subdomain'] = "newsub";
    $url "https://hosting.ru:2222/CMD_SUBDOMAIN?domain=site.net";

    curl_setopt($chCURLOPT_URL$url);
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_POST1);

    curl_setopt($chCURLOPT_POSTFIELDS$postData);
    $response curl_exec($ch);

    print_r($response);
    if(
    curl_errno($ch))
    {
    print 
    curl_error($ch);
    }
    curl_close($ch);
    ?>

    SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

    то есть тут запрашиваются сертификаты, да и после этого скорее всего меня попросят авторизоваться.. Быть может, чтобы не авторизовываться постоянно, можно как то включить куки ? а перед этим просто зайти разок в эту директАдмин традиционным способом, в этом же браузере, в котором и запускаем скрипт.. хотя быть может бред говорю..

    Если не затруднит не могли бы мне, такому назойливому, подсказать что делать ? пожалуйста ..:thenks:



    С ертификатами разобрался!
    просто добавил ещё:
    и теперь я попал на страницу авторизации, где надо ввести пароль и логин.. как бы сделать, чтобы она не появлялась, чтобы постоянно не авторизовываться ? наверное как то куки подкрутить ... не подскажете ?
     
Статус темы:
Закрыта.