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

Форум PHP

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

 

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

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

тема: создать объект
 
 автор: Чайка   (10.10.2007 в 16:17)   письмо автору
 
 

Здравствуйте! Прошу помощи, прочитал у Вас здесь
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=8931


тему: Подделка реферера,

решил попробовать создать объект из изложенного скрипта, фрагмент следующий:
if(!$this->fp) echo"$errstr ($errno)<br />\n";  
                     else
                     {  
                        echo 'Открыли успешно адрес ->'.$this->host.$this->path;
                        $this->headers = "GET $path HTTP/1.0\r\n";  
                        $this->headers .= "Host: $host\r\n";  
                        $this->headers .= "Accept: *\r\n";  
                        $this->headers .= "Accept-Charset: *\r\n";  
                        $this->headers .= "Accept-Encoding: deflate\r\n";  
                        $this->headers .= "Accept-Language: ru\r\n";  
                        $this->headers .= "Referer: http://www.softtime.ru/forum/index.php\r\n";  
                        $this->headers .= "User-Agent: Opera/8.01 (Windows NT 5.1; U; ru)\r\n\r\n";  
                        fwrite($this->fp,$this->headers);  // для записи строки в файл
                        while(($this->text)!= "\r\n") $this->text = fgets($this->fp,128);  
                        $this->text = "";  
                        while(!feof($this->fp)) $this->text .= fgets($this->fp,4096);


где-то здесь


$this->headers .= "Referer: http://www.softtime.ru/forum/index.php\r\n";  
                        $this->headers .= "User-Agent: Opera/8.01 (Windows NT 5.1; U; ru)\r\n\r\n";  
                        fwrite($this->fp,$this->headers); 
                        while(($this->text)!= "\r\n") $this->text = fgets($this->fp,128);  
                        $this->text = "";  

ошибочка получается бесконечный цикл и через 30 сек выдает ошибочку Fatal error: Maximum execution time of 30 seconds подскажите что не так?

   
 
 автор: bronenos   (10.10.2007 в 16:28)   письмо автору
 
   для: Чайка   (10.10.2007 в 16:17)
 

может,
while (!feof($this->fp)) $this->text .= fgets($this->fp, 128);

   
 
 автор: Чайка   (10.10.2007 в 16:43)   письмо автору
 
   для: bronenos   (10.10.2007 в 16:28)
 

Не пашет, привожу полный скрипт, подскажите начинающему

class open_links
    { 
    var $host;
    var $path;
    var $fp;
    var $headers;
    var $text;
             function open_l()
                 {
              $this->host = "www.softtime.ru";  
              $this->path = "/forum/read.php?id_forum=1&id_theme=8931";  
              $this->fp = fsockopen($this->host,80,$this->errno,$this->errstr,30);  
              if(!$this->fp) echo"$errstr ($errno)<br />\n";  
                     else
                     {  
                        echo '<p>Открыли успешно адрес ->'.$this->host.$this->path.'</p>';
                        $this->headers = "GET $path HTTP/1.0\r\n";  
                        $this->headers .= "Host: $host\r\n";  
                        $this->headers .= "Accept: *\r\n";  
                        $this->headers .= "Accept-Charset: *\r\n";  
                        $this->headers .= "Accept-Encoding: deflate\r\n";  
                        $this->headers .= "Accept-Language: ru\r\n";  
                        $this->headers .= "Referer: http://www.softtime.ru/forum/index.php\r\n";  
                        $this->headers .= "User-Agent: Opera/8.01 (Windows NT 5.1; U; ru)\r\n\r\n";  
                        fwrite($this->fp,$this->headers);  // для записи строки в файл
                        while(($this->text)!= "\r\n") $this->text = fgets($this->fp,128);  
                        $this->text = "";  
                        while(!feof($this->fp)) $this->text .= fgets($this->fp,4096);
                        echo('<li> Загрузили страницу : '.$this->host.$this->path.'</li>');
                        
                        } 
                }
                          
                        
                        function print_l()
                                {
                                echo ($this->text);
                                }
                        
                        
                         function close_l()
                                    {                        
                                    fclose($this->fp);  // закрыли страницу
                                    }
                       
  }
  //======================================================================================================================
 $Open_links = new open_links();
  $Open_links->open_l();
  $Open_links->print_l();
  $Open_links->close_l(); 

   
 
 автор: Чайка   (10.10.2007 в 17:40)   письмо автору
 
   для: Чайка   (10.10.2007 в 16:43)
 

Может я эту строку


while (!feof($this->fp)) $this->text .= fgets($this->fp, 128); 

не туда вставлял?

   
 
 автор: Чайка   (10.10.2007 в 19:09)   письмо автору
 
   для: Чайка   (10.10.2007 в 17:40)
 

Где добрый человек cheops, только он отзывчивый, и дает хорошие реальные советы :-)

   
 
 автор: cheops   (11.10.2007 в 10:42)   письмо автору
 
   для: Чайка   (10.10.2007 в 16:17)
 

А без Referer ошибки Fatal error: Maximum execution time of 30 seconds не происходит?

   
 
 автор: Чайка   (15.10.2007 в 02:16)   письмо автору
 
   для: cheops   (11.10.2007 в 10:42)
 

без Referer тоже ошибка

Fatal error: Maximum execution time of 30 seconds exceeded in C:\WWW\scripts\primer\class_open_links.php on line 34

line 34 это

while(($this->text)!= "\r\n") $this->text = fgets($this->fp,128);  


это же, но как не объект работает без ошибок


<?
              $host 
"www.softtime.ru";  
              
$path "/forum/read.php?id_forum=1&id_theme=8931";  
              
$fp fsockopen($host,80,$errno,$errstr,30);  
              if(!
$fp) echo"$errstr ($errno)<br />\n";  
                     else
                     {  
                        echo 
'<p>Открыли успешно адрес ->'.$host.$path.'</p>';
                        
$headers "GET $path HTTP/1.0\r\n";  
                        
$headers .= "Host: $host\r\n";  
                        
$headers .= "Accept: *\r\n";  
                        
$headers .= "Accept-Charset: *\r\n";  
                        
$headers .= "Accept-Encoding: deflate\r\n";  
                        
$headers .= "Accept-Language: ru\r\n";                          
                        
$headers .= "User-Agent: Opera/8.01 (Windows NT 5.1; U; ru)\r\n\r\n";  
                        
fwrite($fp,$headers);  
                        while((
$text)!= "\r\n"$text fgets($fp,128);  
                        
$text "";  
                        while(!
feof($fp)) $text .= fgets($fp,4096);
                        echo(
'<li> Загрузили страницу : '.$host.$path.'</li>');
                        } 
                
                          
                    
//=======================================================================    
                        
echo ($text);            
                        
fclose($fp);  // закрыли страницу
?>


что же блин не так? :-(

   
 
 автор: bronenos   (15.10.2007 в 09:56)   письмо автору
 
   для: Чайка   (15.10.2007 в 02:16)
 

если не ошибаюсь фгетс не берет перевод строки и тут лучше на стрлен ориентироваться

   
 
 автор: Чайка   (15.10.2007 в 17:42)   письмо автору
 
   для: bronenos   (15.10.2007 в 09:56)
 

А по русски, что такое фгетс и стрлен и как быть?

   
 
 автор: bronenos   (15.10.2007 в 18:26)   письмо автору
 
   для: Чайка   (15.10.2007 в 17:42)
 

while(strlen($this->text) > 0) $this->text = fgets($this->fp);

   
 
 автор: Чайка   (15.10.2007 в 19:13)   письмо автору
 
   для: bronenos   (15.10.2007 в 18:26)
 

так тоже ошибка
400 Bad Request

   
 
 автор: bronenos   (15.10.2007 в 22:27)   письмо автору
 
   для: Чайка   (15.10.2007 в 19:13)
 

уберите из path параметры get и отошлите их как текст запроса после заголовков

   
 
 автор: EXP   (15.10.2007 в 23:37)   письмо автору
 
   для: Чайка   (15.10.2007 в 19:13)
 

а если сделать
$host = gethostbyname('www.softtime.ru');
?

   
 
 автор: Чайка   (16.10.2007 в 02:55)   письмо автору
 
   для: EXP   (15.10.2007 в 23:37)
 

Так тоже ошибка.

   
 
 автор: Чайка   (16.10.2007 в 12:23)   письмо автору
 
   для: Чайка   (16.10.2007 в 02:55)
 

Профи, где вы? Кто может дать дельный совет?

   
 
 автор: Чайка   (17.10.2007 в 16:27)   письмо автору
 
   для: Чайка   (16.10.2007 в 12:23)
 

Откликнитесь, как быть?

   
Rambler's Top100
вверх

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