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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Извлечь cookie из http-заголовков

Сообщения:  [1-10]   [11-13] 

 
 автор: mihdan   (01.07.2008 в 11:42)   письмо автору
 
   для: Oligarx   (01.07.2008 в 11:26)
 

Вы так и не поняли ???
В массиве с индексом 0 - массив полных вхождений шаблона, дальше - то, что соответствует первой подмаски, и так далее, поэтому вам нужен массив с индексом 1

   
 
 автор: Oligarx   (01.07.2008 в 11:26)   письмо автору
 
   для: mihdan   (01.07.2008 в 11:09)
 

Как это ?!

Вот вид массива который он возвращает :


     Array ( [0] => Array ( [0] => Set-Cookie: zhuki_stat_enter=deleted; expires=Mon, 02-Jul-2007 07:05:13 GMT 
                [1] => Set-Cookie: zhuki_stat_enter=1 
                [2] =>Set-Cookie: test_cookie1=1; path=/ 
                [3] => Set-Cookie: test_cookie2=1 
                [4] => Set-Cookie: number_pasport=a%3A6%3A%7Bi%3A6%3Bi%3A5%3Bi%3A5%3Bi%3A1%3Bi%3A4%3Bi%3A4%3Bi%3A3%3Bi%3A6%3Bi%3A2%3Bi%3A5%3Bi%3A1%3Bi%3A1%3B%7D; path=/ )
         [1] => Array ( [0] => zhuki_stat_enter=deleted; expires=Mon, 02-Jul-2007 07:05:13 GMT 
                [1] => zhuki_stat_enter=1 
                [2] => test_cookie1=1; path=/ 
                [3] => test_cookie2=1 
                [4] => number_pasport=a%3A6%3A%7Bi%3A6%3Bi%3A5%3Bi%3A5%3Bi%3A1%3Bi%3A4%3Bi%3A4%3Bi%3A3%3Bi%3A6%3Bi%3A2%3Bi%3A5%3Bi%3A1%3Bi%3A1%3B%7D; path=/ ) )


Оба подмассива почти одинаковые... отличие только в том, что в первом массиве Set-Cookie:* , а во втром сразу переменная куков = значению.

Причём тут print_r() ?

   
 
 автор: mihdan   (01.07.2008 в 11:09)   письмо автору
 
   для: Oligarx   (01.07.2008 в 11:02)
 

Нда - вам стоит прочитать про print_r() и preg_match_all() для начала, ничего он не дублирует!!!

   
 
 автор: Oligarx   (01.07.2008 в 11:07)   письмо автору
 
   для: Oligarx   (01.07.2008 в 11:02)
 

Ой ... что то незаметил сразу ... значения то у них разные.

Первый подмассив:

Set-Cookie: zhuki_stat_enter=deleted; expires=Mon, 02-Jul-2007 07:05:13 GMT 
Set-Cookie: zhuki_stat_enter=1 
Set-Cookie: test_cookie1=1; path=/ 
Set-Cookie: test_cookie2=1 
Set-Cookie: number_pasport=a%3A6%3A%7Bi%3A6%3Bi%3A5%3Bi%3A5%3Bi%3A1%3Bi%3A4%3Bi%3A4%3Bi%3A3%3Bi%3A6%3Bi%3A2%3Bi%3A5%3Bi%3A1%3Bi%3A1%3B%7D; path=/


Второй подмассив:

zhuki_stat_enter=deleted; expires=Mon, 02-Jul-2007 07:05:13 GMT
zhuki_stat_enter=1
test_cookie1=1; path=/
test_cookie2=1
number_pasport=a%3A6%3A%7Bi%3A6%3Bi%3A5%3Bi%3A5%3Bi%3A1%3Bi%3A4%3Bi%3A4%3Bi%3A3%3Bi%3A6%3Bi%3A2%3Bi%3A5%3Bi%3A1%3Bi%3A1%3B%7D; path=/


Вот второй то мне и нужен.

Спасибо за помощь.

   
 
 автор: Oligarx   (01.07.2008 в 11:02)   письмо автору
 
   для: Эй   (01.07.2008 в 10:43)
 

Теперь выводится. ... но почему то дублируется:


     Array ( [0] => Array ( 
                              [0] => Set-Cookie: zhuki_stat_enter=deleted; expires=Mon, 02-Jul-2007 06:56:19 GMT 
                              [1] => Set-Cookie: zhuki_stat_enter=1 
                              [2] => Set-Cookie: test_cookie1=1; path=/ 
                              [3] => Set-Cookie: test_cookie2=1 
                              [4] => Set-Cookie:number_pasport=a%3A6%3A%7Bi%3A6%3Bi%3A5%3Bi%3A5%3Bi%3A6%3Bi%3A4%3Bi%3A5%3Bi%3A3%3Bi%3A0%3Bi%3A2%3Bi%3A6%3Bi%3A1%3Bi%3A9%3B%7D; path=/ ) 
                  [1] => Array ( 
                              [0] => zhuki_stat_enter=deleted; expires=Mon, 02-Jul-2007 06:56:19 GMT 
                              [1] => zhuki_stat_enter=1 
                              [2] => test_cookie1=1; path=/ 
                              [3] => test_cookie2=1
                              [4] =>number_pasport =a%3A6%3A%7Bi%3A6%3Bi%3A5%3Bi%3A5%3Bi%3A6%3Bi%3A4%3Bi%3A5%3Bi%3A3%3Bi%3A0%3Bi%3A2%3Bi%3A6%3Bi%3A1%3Bi%3A9%3B%7D; path=/ ) )


Незнаете почему может дублироваться ? ... я непонимаю почему.

   
 
 автор: mihdan   (01.07.2008 в 10:57)   письмо автору
 
   для: Oligarx   (01.07.2008 в 09:57)
 

Да вам же написали preg_match_all()

   
 
 автор: Эй   (01.07.2008 в 10:43)   письмо автору
 
   для: Oligarx   (01.07.2008 в 10:34)
 

        $text=""; 
        $i=0; 
        while(!feof($fp)) 
        { 
            $buff = fgets($fp,1024); 
             
            //preg_replace("!Set-Cookie:(.*)\n!","",$text); 
            //preg_match("!Set-Cookie:(.*)\n!",$buff,$out[$i]); 
             
            //@$cook[$i]=preg_replace("!Set-Cookie:(.*)\n!",$buff); 
            echo ($buff); 
            $text .= $buff; 
                     
        } 
        preg_match_all('~^Set-Cookie:(.*)\\r$~m', $text, $matches);
        print_r($matches);

   
 
 автор: Oligarx   (01.07.2008 в 10:34)   письмо автору
 
   для: Эй   (01.07.2008 в 10:03)
 

Уважаемый, покажите пожалуйста как мне исправить мою функцию чтобы все куки свалились в массив.

А то похоже я что то недогоняю ...

   
 
 автор: Эй   (01.07.2008 в 10:03)   письмо автору
 
   для: Oligarx   (01.07.2008 в 09:57)
 

Странно, что не один. Функция preg_match находит только первое совпадение. Я написал пример выше.

   
 
 автор: Oligarx   (01.07.2008 в 09:57)   письмо автору
 
   для: Эй   (01.07.2008 в 08:53)
 

Вот, переписал так

    function WriteHeader($fp)
    {
        $out;
        $text="";
        $i=0;
        while(!feof($fp))
        {
            $buff = fgets($fp,1024);
            
            //preg_replace("!Set-Cookie:(.*)\n!","",$text);
            //preg_match("!Set-Cookie:(.*)\n!",$buff,$out[$i]);
            
            //@$cook[$i]=preg_replace("!Set-Cookie:(.*)\n!",$buff);
            echo ($buff);
            $text .= $buff;
                    
        }
        preg_match("!Set-Cookie:(.*)\n!",$text,$out);
        echo ($out[0]);
        echo ("<br>");
        echo ($out[1]);
    }


Но всё равно что то нитак. Выводятся не все куки, а только первые два.

   

Сообщения:  [1-10]   [11-13] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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