Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Создание функции для POST и GET (fsockopen)
 
 автор: Inviseble_Demon   (04.11.2008 в 22:20)   письмо автору
 
 

Здраствуйте возникла проблемка при написании функции.

Вобщем дело обстоит так:

Решил написать функции для POST и GET (fsockopen) с сохронением кукисов и автоматическим переходом по location. Но возник трабл в условии мол проходим GET потом из ответа считываем данные и если там обнаружен локатион то переходим по нему и так до тех пор пока локатион не перестанет появляться.

Вот скрипт


<?PHP
function get($url$cookie$full
{

$urlx=parse_url($url);
  
$hostname $urlx['host'];
  
$path $urlx['path']; 
  if (
$urlx['query']!=''){ $path.='?'$path.=$urlx['query'];}

  
$fp fsockopen($hostname80$errno$errstr30);
  if (!
$fp) echo "Ошибка соединения, code error $errstr ($errno)<br />\n";
  else
  {
    
$headers "GET $path HTTP/1.0\r\n";
    
$headers.= "Host: $hostname\r\n";
    
// Подделываем кукиес
    
$headers.="$cookie";
    
$headers .= "Connection: Keep-Alive\r\n\r\n";
    
fwrite($fp$headers);
    while (!
feof($fp)) 
    {  
    
$line .= fgets($fp1024);
      
preg_match("|(.*\r\n\r\n).*|",$line,$out);
 
    if(!empty(
$out[1]) & $full!=1) break;
    
    } 

    
fclose($fp);  
  }
  
$dir="Cookie/";
$cookie='';
$m=preg_match_all("|Set-Cookie: (.*)|i",$line,$set);
if (
$m>0)
{
    for (
$i=0;$i<$m;$i++)
    {
    
$Cookie=$set[1][$i];
    
$Cookie=preg_replace("/(\\n|\\r)/"""$Cookie);
    
$explode=explode("="$set[1][$i]);
    
file_put_contents("$dir$explode[0]""$Cookie");
    }
}
    
$Cookie="";
      
$handle=opendir("$dir");

    while(
$file=readdir($handle))
    {
        if(
$file != "." && $file != "..")
        {

          
$w++;
        
$file_cookie=file("$dir$file");
        
$Cookie[]="$file_cookie[0]";
        };
    };
    
closedir($handle);

    
$cookie.= "Cookie: ";
        for (
$for=0$Cookie[$for]!=''$for++)
        {
        
$cookie.= $Cookie[$for];
        
$cookie.= "; ";

        }
           
$cookie.="\r\n";

            for (
$clear=0;$clear<=10;$clear++) {$cookie=preg_replace("/; \r\n/""\r\n"$cookie);}
            

return 
"$headers\n\n $line";

}
?>


Перед return решил зделать так


<?PHP
$test
=preg_match("|Location: (.*)\r|",$line,$location); 
if (
$location[1]!='')  { $urlx=$location[1]; }
\\
И вот она загвоздочка
if ($test=='1') {повторить функцию с самого начала !}
?>


Подумал может все решит цыкл while ($test!='0') и всю функцию засунуть в этот цыкл ! Но чегото не получилось (( Скрипт почемуто зацыклировал (Ну покрайней мере мне так показалось потому как 30 сек молчас а потом выкинул ерор !)

Если на странице нет локатиона то все ок как только появляется скрипт падает !

У кого какие идеи ?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования