PDA

Просмотр полной версии : помогите с Curlом


vitek10
21.06.2007, 00:32
подскажите почему не передается referer
вот кусок кода

<?
set_time_limit(0);
ob_implicit_flush();
$refs=explode("\n",trim($aref));
$uref=trim($host);
$gurl=trim($refs);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $gurl);
curl_setopt($ch, CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_NOBODY,0);
curl_setopt($ch,CURLOPT_TIMEOUT,6);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, $uref);
curl_setopt($ch, CURLOPT_USERAGENT,"Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
$file_content=curl_exec ($ch);
curl_close ($ch);

?>



переменные передаются скрипту через формы методом POST,
ошибок не выдает, но в TOP REFERERS не приходит.
подскажите в чем проблема :confused:

GreenBear
21.06.2007, 00:44
ну попробуй $_POST['host']

vitek10
21.06.2007, 01:09
не помогает
пробовал . что-то куда-то типа отсылает, но в ресурсе не видно, хотя через minibrowser все отсылается, значит сайт принимает подобные данные...
(для тренировки пользую _http://slotvent.com/guestbook/
в нем длинный TOP и можно отслеживать поступление данных :D ),и если бы CURL был отключен на хосте - я полагаю выдавалась бы ошибка... :confused:
вот скрипт
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title></title>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=Windows-1251">
<META content="text/html; charset=windows-1251" http-equiv=Content-Type>
</head>
<body>
<?
if (empty($aref))
{
$aref="";
}

if (empty($prox))
{
$prox="";
}
if (empty($aref)||empty($_POST['host']))
{
echo "<CENTER>
<h1>URL</h1>
<form action='index.php' method='post' name='logg'>
<table>
<tr>
<br>
<input type='text' name='host' size=60><br><br>
<td valign='top'><strong>Ссылки </strong>
<textarea cols=150 rows=10 name=aref>$aref</textarea>
</td>
</tr>

<tr>
<td ><input type='submit' name='qqqqq' value='отправить'></td>
</tr>
</table>
</form>
</CENTER>
";
exit;
}
?>

<?
set_time_limit(0);
ob_implicit_flush();
$refs=explode("\n",trim($aref));

$ZZI=0;
WHILE ( (count($refs)>$ZZI) && ($ZZI<50) )
{
echo trim($refs[$ZZI])." &nbsp;&nbsp;&nbsp; ok <br>";
ob_flush();

$uref=trim($_POST['host']);
$gurl=trim($refs[$ZZI]);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $gurl);
curl_setopt($ch, CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_NOBODY,0);
curl_setopt($ch,CURLOPT_TIMEOUT,6);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, $uref);
curl_setopt($ch, CURLOPT_USERAGENT,"Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
$file_content=curl_exec ($ch);
curl_close ($ch);
sleep(1);
$ZZI=$ZZI+1;
}


echo "<CENTER>
<h1>URL</h1>
<form action='index.php' method='post' name='logg'>
<table>
<tr>
<br>
<input type='text' name='host' size=60><br><br>
<td valign='top'><strong>Ссылки </strong>
<textarea cols=150 rows=10 name=aref>$aref</textarea>
</td>
</tr>

<tr>
<td ><input type='submit' name='qqqqq' value='отправить'></td>
</tr>
</table>
</form>
</CENTER>
";
?>
</body>
</html>

hhover
21.06.2007, 13:15
<?php
set_time_limit(0);
ob_implicit_flush();
# $refs=explode("\n",trim($aref));
# $uref=trim($host);
# $gurl=trim($refs);
$uref = "http://referer.com/";
$gurl = "http://host.com/";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $gurl);
curl_setopt($ch, CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_NOBODY,0);
curl_setopt($ch,CURLOPT_TIMEOUT,6);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, $uref);
curl_setopt($ch, CURLOPT_USERAGENT,"Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
$file_content=curl_exec ($ch);
curl_close ($ch);
?>
Такой код прекрасно передает реферер. Так что ищи ошибку в своей форме, и в том, как она что передает. Там все так сумбурно, что я не понял, для чего она. И имена переменных странные.
Но несколько советов -
1) Почитай про register_globals (http://www.phpfaq.ru/globals), про основы работы с формами (http://php.novgorod.ru/manual/ru/tutorial.forms.php) и это (http://www.phpfaq.ru/debug).
2) Сделай себе страничку <?php echo $_SERVER['HTTP_REFERER']; ?> и отлаживай скрипт ей, выводя на экран содержимое странички запроса.

vitek10
21.06.2007, 15:43
не пойму что странного в именах переменных, а передаются они вполне нормально,
только все равно не работает. может проблема с хостингом?

hhover
21.06.2007, 16:48
Конечно, в нем все дело!

vitek10
21.06.2007, 16:59
хостинг _hut.ru

вот более понятный код,
может я всетаки что-то пропустил


<?

if (empty($prox))
{
$prox="1.11.11.11:39";
}
if (empty($_POST['aref'])||empty($_POST['ddor']))
{
exit;
}
set_time_limit(0);
ob_implicit_flush();
$refs=explode("\n",trim($_POST['aref']));

$ZZI=0;
WHILE ( (count($refs)>$ZZI) && ($ZZI<50) )
{
echo trim($refs[$ZZI])." &nbsp;&nbsp;&nbsp; ok <br>";
ob_flush();

$uref=trim($_POST['ddor']);
$gurl=trim($refs[$ZZI]);
# print($uref)." &nbsp;&nbsp;&nbsp;ok <br>";
# print($gurl)." &nbsp;&nbsp;&nbsp; ok <br>";
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $gurl);
curl_setopt($ch, CURLOPT_PROXY, $prox);
curl_setopt($ch, CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_NOBODY,0);
curl_setopt($ch, CURLOPT_TIMEOUT,6);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_REFERER, $uref);
curl_setopt($ch, CURLOPT_USERAGENT,"Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
$file_content=curl_exec ($ch);
curl_close ($ch);
sleep(1);
$ZZI=$ZZI+1;

}
?>


или лучше подскажите хост с поддержкой CURL
желательно бесплатный ну или за пару баксов в месяц

vitek10
21.06.2007, 21:19
тема закрыта. поменял хостинг и все в елочку
всем спасибо