Curl

  • Автор темы DNTS
  • Дата начала
D

DNTS

#1
Здравствуйте, вот какая проблема - нужно с помощью curl авторизироваться на сайте и отправить сообщение в чат(онлайн-игра). Нашел 2 функции:
PHP:
function get_web_page( $url )
{
$uagent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)";

$ch = curl_init( $url );
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  // возвращает веб-страницу
curl_setopt($ch, CURLOPT_HEADER, 0);		  // не возвращает заголовки
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);  // переходит по редиректам
curl_setopt($ch, CURLOPT_ENCODING, "");		// обрабатывает все кодировки
curl_setopt($ch, CURLOPT_USERAGENT, $uagent); // useragent
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); // таймаут соединения
curl_setopt($ch, CURLOPT_TIMEOUT, 120);		// таймаут ответа
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);	  // останавливаться после 10-ого редиректа
curl_setopt($ch, CURLOPT_COOKIEJAR, "coo.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE,"coo.txt");

$content = curl_exec( $ch );
$err	 = curl_errno( $ch );
$errmsg = curl_error( $ch );
$header = curl_getinfo( $ch );
curl_close( $ch );

$header['errno']  = $err;
$header['errmsg'] = $errmsg;
$header['content'] = $content;
return $header;
}

function post_content ($url,$postdata) {
$uagent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)";

$ch = curl_init( $url );
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_ENCODING, "");
curl_setopt($ch, CURLOPT_USERAGENT, $uagent); // useragent
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch, CURLOPT_COOKIEJAR, "coo.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE,"coo.txt");

$content = curl_exec( $ch );
$err	 = curl_errno( $ch );
$errmsg = curl_error( $ch );
$header = curl_getinfo( $ch );
curl_close( $ch );

$header['errno']  = $err;
$header['errmsg'] = $errmsg;
$header['content'] = $content;
return $header;
}

$url = 'http://capitalcity.oldbk.com/enter.php';
$username = 'Левчик';
$userpass = '*******';
// формируем строку с данными
$postdata = 'login='.$username.'&psw='.$userpass;

$result = post_content( $url, $postdata );
$html = $result['content'];

// загружаем любую другую страницу. Пользователь, под логином которого вошли, должен сохраниться
$url = 'http://capitalcity.oldbk.com/main.php';
// $url = "http://capitalcity.oldbk.com/ch.php?color=000000&sys=&om=&lid=&text=private [Мергахеф] gh";
$result = get_web_page( $url );
$html = $result['content'];

$pos = StrPos($html,"Левчик");
if ( $pos === false ) { 
echo 'Авторизация провалилась';
} 
else {
$msg = "private [Мергахеф] gh";
echo 'Авторизация прошла успешно';echo "<img src='http://capitalcity.oldbk.com/ch.php?color=000000&sys=&om=&lid=&text=".$msg."' width=0 height=0 border=0>";
}
?>
если заходить на $url = 'http://capitalcity.oldbk.com/main.php'; после авторизации и вывести контент - то все работает, но если пойти на $url = "http://capitalcity.oldbk.com/ch.php?color=000000&sys=&om=&lid=&text=private [Мергахеф] gh"; - для отправки сообщения при отображении контента пишет 400 Bad Request, также пробуя через вставку картинки echo "<img src='http://capitalcity.oldbk.com/ch.php?color=000000&sys=&om=&lid=&text=".$msg."' width=0 height=0 border=0>"; - также не дает результат.
Заранее благодарен.