рефрешит потому, что ты выводишь код ответа, в котором сидит рефреш.spy писал(а):как мне выдернуть ее, если с моего запроса меня рефрешить на стартовую...
вот этот код у тебя построчно выводит ответ сервера
Код: Выделить всё
echo fgets($fp, 128);
рефрешит потому, что ты выводишь код ответа, в котором сидит рефреш.spy писал(а):как мне выдернуть ее, если с моего запроса меня рефрешить на стартовую...
Код: Выделить всё
echo fgets($fp, 128);
Код: Выделить всё
$host = 'www.spysoft.us';
$service_uri = '/test/login.php';
$vars ='login=test&pass=test';
# compose HTTP request header
$header = "Host: $host\r\n";
$header .= "User-Agent: PHP Script\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: ".strlen($vars)."\r\n";
$header .= "Connection: close\r\n\r\n";
$fp = pfsockopen($host, 80, $errno, $errstr);
if (!$fp) {
echo "$errstr ($errno)<br/>\n";
echo $fp;
} else {
fputs($fp, "POST $service_uri HTTP/1.1\r\n");
fputs($fp, $header.$vars);
@fwrite($fp, $out);
while (!feof($fp)) {
$str=fgets($fp, 128);
if (preg_match ("/Set/", $str))
{
$str=eregi_replace("Set-Cookie: PHPSESSID=","",$str);
$str=eregi_replace("; path=/","",$str);
@print $str;
}
}
fclose($fp);
}
Код: Выделить всё
include("c.php");
@$data=file_get_contents("http://spysoft.us/test/?ses=razdel&id=1");
//@$data = htmlspecialchars($data);
@$data=stristr($data,"?");
@$data=eregi_replace("<table border=1>","<br>",$data);
@$data=eregi_replace("
","",$data);
@$data=eregi_replace("<tr><td>Наименование магазина</td><td>Дополнительная информация</td></tr>","",$data);
@$data=eregi_replace("<tr><td><a href=\"","",$data);
@$data=eregi_replace("\">","||",$data);
@$data=eregi_replace("</a></td><td>","||",$data);
@$data=eregi_replace("</td></tr>","||&&",$data);
//print $data;
$str_exp = explode("&&", $data);
$s=count($str_exp);
$s=$s-1;
for($i=0; $i<$s; $i++)
{
$str_expe = explode("||", $str_exp[$i]);
print "<p><b>Наименовани магазина:</b> ".$str_expe[1]."<br><b>Ссылка:</b> ".$str_expe[0]."<br><b>Описание:</b> ".$str_expe[2]."</p>";
$r=mysql_query("SELECT * from obj_2199_tab where link='$str_expe[0]'");
if(mysql_num_rows($r)!=0)
{
print "<font color=red>нафиг вам дубли? в базе есть уже такая запись ;)</font>";
}
else
{
@mysql_query("INSERT into obj_2199_tab (name, link, info) values ('$str_expe[1]', '$str_expe[0]','$str_expe[2]')");
}
}
через контекст file_get_contents -) за одно научишься им пользоватьсяspy писал(а):как теперь прикрутить грамотно эту сессию???
Код: Выделить всё
$header .= "Connection: close\r\n\r\n";
$fp = pfsockopen($host, 80, $errno, $errstr);
if (!$fp) {
echo "$errstr ($errno)<br/>\n";
echo $fp;
} else {
fputs($fp, "POST $service_uri HTTP/1.1\r\n");
fputs($fp, $header.$vars);
@fwrite($fp, $out);
while (!feof($fp)) {
$str=fgets($fp, 128);
if (preg_match ("/Set/", $str))
{
$str=eregi_replace("Set-Cookie: PHPSESSID=","",$str);
$str=eregi_replace("; path=/","",$str);
?><META HTTP-EQUIV="REFRESH" CONTENT='5; URL=test.php?PHPSESSID=<?print $str;?>'><?
}
}
fclose($fp);
}
Код: Выделить всё
include("c.php");
$url="http://spysoft.us/test/?ses=razdel&id=1&PHPSESSID=".$PHPSESSID;
print $url;
@$data=file_get_contents($url);
@$data = htmlspecialchars($data);
@$data=stristr($data,"?");
@$data=eregi_replace("<table border=1>","<br>",$data);
@$data=eregi_replace("
","",$data);
@$data=eregi_replace("<tr><td>Наименование магазина</td><td>Дополнительная информация</td></tr>","",$data);
@$data=eregi_replace("<tr><td><a href=\"","",$data);
@$data=eregi_replace("\">","||",$data);
@$data=eregi_replace("</a></td><td>","||",$data);
@$data=eregi_replace("</td></tr>","||&&",$data);
$str_exp = explode("&&", $data);
$s=count($str_exp);
$s=$s-1;
for($i=0; $i<$s; $i++)
{
$str_expe = explode("||", $str_exp[$i]);
print "<p><b>Наименовани магазина:</b> ".$str_expe[1]."<br><b>Ссылка:</b> ".$str_expe[0]."<br><b>Описание:</b> ".$str_expe[2]."</p>";
$r=mysql_query("SELECT * from obj_2199_tab where link='$str_expe[0]'");
if(mysql_num_rows($r)!=0)
{
print "<font color=red>нафиг вам дубли? в базе есть уже такая запись ;)</font>";
}
else{
@mysql_query("INSERT into obj_2199_tab (name, link, info) values ('$str_expe[1]', '$str_expe[0]','$str_expe[2]')");
}
}
сейчас основная проблема в том, что ты не ориентируешься в своём коде. Уже пора писать свои функции, конкретно нужны две:spy писал(а):Вот все на что хватило моей соображалки)))
Код: Выделить всё
<pre><?
$uri = 'http://test1/spy/session.php?id=asd&login=asd';
$cookies = getUriCookies($uri, array('login' => 'My login', 'password' => 'my password'), 'POST');
$context = createCookiesContext($cookies);
echo file_get_contents($uri, false, $context);
/**
* Функция возвращает массив кук по заданному запросу
*
* @author zg
* @param string $uri Адрес запроса
* @param array $params Параметры запроса
* @param string $method Метод запроса
* @return array
*/
function getUriCookies( $uri, $params = null, $method = null )
{
if ( !isset($method) )$method = 'GET';
if ( $method !== 'GET' && $method !== 'POST' ) throw new Exception('Function '. __FUNCTION__ .'(): Invalid method '. $method .'. Must be GET or POST.');
// Парсим запрос
$url = parse_url( $uri );
// Получаем данные из адреса запроса
$host = isset($url['host']) ? $url['host'] : null;
$path = isset($url['path']) ? $url['path'] : null;
$query = isset($url['query']) ? $url['query'] : null;
// Защита от нулевого хоста
if ( !$host ) throw new Exception('Function '. __FUNCTION__ .'(): Invalid hostname in URI "'. $uri .'".');
// Строим массив параметров
$outParams = array();
// Заполняем массив параметров из строки запроса
if ( isset($query) ) parse_str($query, $outParams);
// Добавляем параметры из аргументов функции, если метод GET
if ( $method === 'GET' && is_array($params) ) $outParams = array_merge( $outParams, $params );
// Получаем результирующий запрос
$query = http_build_query( $outParams );
// Формируем заголовки
$headers = array();
// Общие заголовки
$headers[] = $method .' '. $path .'?'. $query .' HTTP/1.0';
$headers[] = 'Host: '. $host;
// Тело запроса
$content = null;
// Если метод запроса POST
if ( $method === 'POST' && is_array( $params ) )
{
// Добавляем параметры запроса
$headers[] = 'Content-type: application/x-www-form-urlencoded';
$content = http_build_query($params);
}
// Дбоавляем к заголовкам тело запроса
$headers[] = 'Content-length: '. strlen($content);
$headers[] = 'Connection: close';
$headers[] = '';
$headers[] = $content;
// Формируем запрос
$request = join("\r\n", $headers);
// Открываем сокет для записи
$fp = @fsockopen($host, 80, $errno, $error);
// Проверка правильности открытия сокета
if ( !$fp ) throw new Exception('Function '. __FUNCTION__ .'(): Filed open URL '. $uri .'');
// Посылаем запрос
fputs($fp, $request);
// Массив результата
$result = array();
// Считываем ответ построчно
while ( !feof($fp) )
{
$line = trim(fgets( $fp ));
// Меня интерисует только заголовок
if ( !$line ) break;
// В заголовке меня интерисуют только куки
@list($field, $value) = preg_split('/\s*:\s*/', $line, 2);
// Запоминаем найденную куку
if ( strtolower($field) === 'set-cookie' )
{
// Точнее, запоминаем только само значение куки (недекодированное)
$result[] = array_shift(preg_split('/\s*;\s*/', $value, 2));
}
}
// Тут можно сделать обработку тела ответа, например, проверку результата логирования
// но это специфичный код, поэтому я его опущу
// Вывод тела ответа
//fpassthru($fp);
// Закрываем сокет
fclose($fp);
// Возвращаем массив результата
return $result;
}
/**
* Создание контекста со значениями кук
*
* @author zg
* @param array $cookies
* @return resource
*/
function createCookiesContext( $cookies )
{
return stream_context_create(array(
'http' => array(
'header' => 'Cookie: '. join('; ', $cookies),
),
));
}
?>
Код: Выделить всё
<?
session_start();
setcookie('asddsad', 'привет мир!!!');
echo 'GET => ';
print_r( $_GET );
echo 'POST =>';
print_r( $_POST );
echo 'Cookies =>';
print_r( $_COOKIE );
?>
Код: Выделить всё
GET => Array
(
[id] => asd
[login] => asd
)
POST =>Array
(
)
Cookies =>Array
(
[PHPSESSID] => 480cfa07ec4f4aad170263bd7d1548c8
[asddsad] => привет мир!!!
)
Код: Выделить всё
//fpassthru($fp);
Код: Выделить всё
GET => Array
(
[id] => asd
[login] => asd
)
POST =>Array
(
[login] => My login
[password] => my password
)
Cookies =>Array
(
)
Код: Выделить всё
$i="
бугага твтвтвттвтввтв\n
тратат ылвлыфовлыовыва\n
бугага ыдвылвлдлыввывыв\n
бугага ываьываыдвлаьвьалва\n
бугага 328гтрмт83г84\n
тратат ылвлыфовлыовыва\n
";