PDA

Просмотр полной версии : Post запрос


vvs777
30.10.2005, 00:47
Народ, нужна помощь!
У меня на сайте стоит форма регистрации на другом сайте. Писал на Яваскрипте.

<form name="regfrm" method='POST' action="http://othersite.ru/cgi-bin/script.cgi">
<input type="text" name="code" size=10>
<input type="text" name="number" value="">
<input type="text" name="language" value="rus">
<textarea name="descr">Your description</textarea>
<input type="submit" Value="Go!">
</form>
<script>
// функция получает из строки запроса значение параметра по имени.
function Getparamvalue(search_string, param_name) {
param_name=param_name+'=';
var z='';
if (search_string!='') {
if (search_string.indexOf(param_name,0)!=-1) {
var startpos=search_string.indexOf(param_name,0)+param _name.length;
var endpos=search_string.indexOf('%26',startpos);
if (endpos<=startpos) endpos=search_string.length;
z=search_string.substring(startpos,endpos);
}
}
return z;
}
var p=window.location.search;
document.regfrm.code.value=Getparamvalue(p,'code') .substring(0,6);
document.regfrm.number.value=Getparamvalue(p,'numb er');
//...
document.forms[0].submit();
</script>

Так вот.
Как мне сделать то же самое на PHP?
Если точнее, нет ли у кого готового кода формирования POST-запроса к скрипту с другого сайта с заданными значениями?
Если б это был GET, можно было бы прописать что-то типа
header('http://othersite.ru/cgi-bin/script.cgi?code=ABCD&number=bf01&language=rus&descr=Your_description');
а так в descr многострочный текст, который должен быть передан именно так, как в textarea, без изменений.

fucker"ok
02.11.2005, 16:10
function Post($server,$url,$post)
{
$q="POST $url HTTP/1.1\r\n".
"Host: $server\r\n".
"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n".
'Accept:text/html, image/jpeg, image/png, text/*, image/*, */*'."\r\n".
"Accept-Encoding: x-gzip, x-deflate, gzip\r\n".
"Accept-Charset: windows-1251, utf-8;q=0.5, *; q=0.5\r\n".
"Accept-Language:ru, en\r\n".
"Keep-Alive: 300\r\n".
"Proxy-Connection: keep-alive\r\n".
"Referer: $server \r\n".
//
"Content-Type: application/x-www-form-urlencoded\r\n".
"Content-Length: ".strlen($post)."\r\n".
"\r\n".
"$post\r\n";
$s=fsockopen($server,80);
fputs($s,$q);
while (!feof($s)) $page.=fgets($s);
fclose($s);
return $page;
}


Передаёшь функции 3 параметра: сервер, урла, ПОСТ запрос.

Например
Post('othersite.ru,'/cgi-bin/script.cgi','login=123&pass=qwerty');

vvs777
03.11.2005, 10:12
А если descr многострочный - надо писать
Post('othersite.ru,'/cgi-bin/script.cgi','login=123&pass=qwerty&descr=stroka1%13%10stroka2%13%10итд'); ?

fucker"ok
03.11.2005, 12:09
Можно и так, или обработать через urlencode();

vvs777
05.11.2005, 00:18
А самое главное не заметил. А без fsockopen как-то можно?

fucker"ok
10.11.2005, 20:41
Curl, но не факт...