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

Статус
В этой теме нельзя размещать новые ответы.

G-Null

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

если точнее - тебе надо сразу отправлять данные (нужныйй набор "элемент формы" => "значение") постом в принимающий скрипт..
 
С помощью курла.
Для просмотра ссылки Войди или Зарегистрируйся

<?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);
?>
 
Сам всегда делаю через сокеты

PHP:
 $fp = fsockopen($proxy,$port, $errno, $errstr, 120) 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);
Вот кусочек кода из своего проекта.
 
myweb, пожалуйста поясни немного.. я в пхп новичок...
я не очень понимаю а куда собственно в этом скрипте вставлять необходимые для ввода данные ?
можешь на каком нить примере ? на каком нить сайте, ну чтоб было ясно, я просто реально не понимаю ..

СПАСИБО ждёт ))
 
для примера из третьего поста
(curl)
POST через сокеты для начала запарно будет,
если курла на хосте не окажется - тогда сокет

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

остальное оставить как есть
 
myweb, это конечно хорошо, но надо стараться использовать curl, ибо он рулит.
 
$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);

подскажите, пожалуйста, а что значит переменная $ch ?
то как это описано тут
Для просмотра ссылки Войди или Зарегистрируйся
честно говоря я совершенно не понял .. подскажите что это значит ?

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


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

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);

Пожалуйста..



Ну помогите, ну пожалуйста. Ну очень надо, не могу я сам додумать :(
 
первой строчкой должно быть
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($ch, CURLOPT_FOLLOWLOCATION, 1);
 
judgefog, а ещё с одним моментом не подскажешь ?

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

PHP:
<?php
$ch = curl_init();

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

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);
?>


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

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

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



С ертификатами разобрался!
просто добавил ещё:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

и теперь я попал на страницу авторизации, где надо ввести пароль и логин.. как бы сделать, чтобы она не появлялась, чтобы постоянно не авторизовываться ? наверное как то куки подкрутить ... не подскажете ?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху