<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>JEKA.RU</title>
	<atom:link href="http://jeka.ru/feed/" rel="self" type="application/rss+xml" />
	<link>http://jeka.ru</link>
	<description>Жизнь в мире IT</description>
	<lastBuildDate>Thu, 01 Jul 2010 20:13:58 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Мегадрама в IT семействе (Java 4-ever)</title>
		<link>http://jeka.ru/2010/07/02/mega-drama-v-it-semejstve-java-4-ever/</link>
		<comments>http://jeka.ru/2010/07/02/mega-drama-v-it-semejstve-java-4-ever/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 20:10:10 +0000</pubDate>
		<dc:creator>Jeka</dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[развлечение]]></category>
		<category><![CDATA[реклама]]></category>

		<guid isPermaLink="false">http://jeka.ru/?p=473</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><object height="340" width="560"><param name="movie" value="http://www.youtube.com/v/A1zySeNpW20&amp;hl=en_US&amp;fs=1&amp;rel=0"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed src="http://www.youtube.com/v/A1zySeNpW20&amp;hl=en_US&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="340" width="560"></object></p>
]]></content:encoded>
			<wfw:commentRss>http://jeka.ru/2010/07/02/mega-drama-v-it-semejstve-java-4-ever/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apostrophe &#8212; наглядная CMS на Symfony</title>
		<link>http://jeka.ru/2010/07/01/apostrophe-naglyadnaya-cms-na-symfony/</link>
		<comments>http://jeka.ru/2010/07/01/apostrophe-naglyadnaya-cms-na-symfony/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 05:33:51 +0000</pubDate>
		<dc:creator>Jeka</dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[Apostrophe]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://jeka.ru/?p=465</guid>
		<description><![CDATA[Apostrophe &#8212; CMS написанная на PHP, Symfony.
В данной CMS нет отдельной страницы для администрирования, все данные редактируются непосредственно в том месте где текст размещается.
Для пробы сделали пару сайтов на Apostrophe. Сама CMS все еще довольно сыроватая, но если ее обработать напильником, получается довольно интересный продукт.
Идеально подходит для небольших сайтов, сайтов визиток. 

]]></description>
			<content:encoded><![CDATA[<p><a  target="_blank" href="http://www.apostrophenow.com/" ><img src="http://jeka.ru/wp-content/uploads/2010/07/aposs.gif" alt="" title="Apostrophe CMS" width="74" height="125" class="alignleft size-full wp-image-467"  style="padding: 10px; margin: 0 15px 15px 0"/></a><a href="http://www.apostrophenow.com/">Apostrophe</a> &mdash; CMS написанная на PHP, Symfony.<br />
В данной CMS нет отдельной страницы для администрирования, все данные редактируются непосредственно в том месте где текст размещается.<br />
Для пробы сделали пару сайтов на Apostrophe. Сама CMS все еще довольно сыроватая, но если ее обработать напильником, получается довольно интересный продукт.<br />
Идеально подходит для небольших сайтов, сайтов визиток. </p>
<div style="clear: both"></div>
]]></content:encoded>
			<wfw:commentRss>http://jeka.ru/2010/07/01/apostrophe-naglyadnaya-cms-na-symfony/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Конференция Symfony Camp UA 2010</title>
		<link>http://jeka.ru/2010/05/31/konferenciya-symfony-camp-ua-2010/</link>
		<comments>http://jeka.ru/2010/05/31/konferenciya-symfony-camp-ua-2010/#comments</comments>
		<pubDate>Mon, 31 May 2010 17:58:57 +0000</pubDate>
		<dc:creator>Jeka</dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[конференция]]></category>

		<guid isPermaLink="false">http://jeka.ru/?p=457</guid>
		<description><![CDATA[
Приглашаем всех желающих посетить конференцию по Symfony PHP Framework, которая состоится 3 июля 2010 года в г.Киев. Участие в конференции – бесплатное. Зарегистрироваться на мероприятие.


Конференция ориентирована как на профессиональных веб-разработчиков, так и начинающих. Мероприятие будет интересным местом для общения программистов и руководителей интернет-проектов, которые используют или планируют использовать фреймворк Symfony, где можно будет пообщаться, поделиться [...]]]></description>
			<content:encoded><![CDATA[<p>
Приглашаем всех желающих посетить конференцию по <a href="http://www.symfony-project.org/" target="_blank">Symfony PHP Framework</a>, которая состоится 3 июля 2010 года в г.Киев. Участие в конференции – бесплатное. <a href="http://symfonycamp.org.ua/register/" target="_blank">Зарегистрироваться</a> на мероприятие.
</p>
<p>
Конференция ориентирована как на профессиональных веб-разработчиков, так и начинающих. Мероприятие будет интересным местом для общения программистов и руководителей интернет-проектов, которые используют или планируют использовать фреймворк Symfony, где можно будет пообщаться, поделиться своим опытом, получить новые знакомства.
</p>
<p>
<strong>Планируемые доклады</strong> </p>
<p>
<strong>&bull; Перевод боевого сайта с ветки 1.0 на ветку 1.4</strong><br/><br />
Руслан Ханов (Россия, Новосибирск)
</p>
<p><strong>&bull; Как мы делали langwhich.com и unique-shopper.com?</strong><br/><br />
Денис Пищенко, Дмитрий Одуло (Украина, Харьков)
</p>
<p>
<strong>&bull; Symfony как платформа для open-source проектов (Sympal, Apostrophe, Diem)</strong><br/><br />
Александр Демченко (Украина, Харьков)
</p>
<p>
<strong>&bull; Многоязычные сайты на Symfony. Проблемы и их решения</strong><br/></p>
<p>Игорь Бровченко (Украина, Киев)
</p>
<p>
<strong>&bull; Сontinuous Integration для Symfony</strong><br/><br />
Игорь Бровченко (Украина, Киев)
</p>
<p>
<strong>&bull; LESS, SASS, HAML: 4 буквы, изменившие frontend development</strong><br/><br />
Константин Кудряшов (Белоруссия, Минск)
</p>
<p>
<strong>&bull; Symfony Task – задачи батча (пакетной обработки). Как использовать, как улучшить</strong><br/><br />
Александр Безрученко (Россия, Таганрог)
</p>
<p>
<strong>&bull; Кастомизация генераторов в Symfony 1.3/1.4. Эффективное управление функционалом и структурой плагинов</strong><br/><br />
Николай Зык (Украина, Киев)
</p>
<p>
<strong>&bull; Философия сервисов. Практическое применение в Symfony 1.3/1.4</strong><br/></p>
<p>Николай Зык (Украина, Киев)
</p>
<p>
<strong>&bull; Symfony 2 – перезагрузка?</strong><br/><br />
Александр Демченко (Украина, Харьков)
</p>
<p>
<strong>&bull; Этапы разработки реального проекта на Symfony 2 + Doctrine 2</strong><br/><br />
Александр Скорней (Украина, Киев)
</p>
<p>
<strong>&bull; Внедрение компонента templating в существующий проект</strong><br/><br />
Станислав Сметанин (Россия, Ижевск)
</p>
<p>Подробности и новости:</p>
<p>
<strong>Сайт конференции:</strong> <a href="http://symfonycamp.org.ua/" target="_blank">symfonycamp.org.ua</a><br/><br />
<strong>Twitter:</strong> <a href="http://twitter.com/symfonycampua" target="_blank">@SymfonyCampUa</a><br/></p>
<p>Если Вы находите возможным поддержать нашу конференцию, просим связаться с <a href="http://symfonycamp.org.ua/contacts/" target="_blank">нами</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://jeka.ru/2010/05/31/konferenciya-symfony-camp-ua-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Doctrine 1.2: сортировка связей</title>
		<link>http://jeka.ru/2010/05/05/doctrine-sortirovka-svyazej/</link>
		<comments>http://jeka.ru/2010/05/05/doctrine-sortirovka-svyazej/#comments</comments>
		<pubDate>Wed, 05 May 2010 14:43:47 +0000</pubDate>
		<dc:creator>Jeka</dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[doctrine]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://jeka.ru/?p=443</guid>
		<description><![CDATA[Чтобы связанные объекты выводились в определенном нами порядке, при описании модели можно указать поле по которому будет вестись сортировка. 
Пример:

Image:
  columns:
    # .... необходимые поля
    pos: { type: integer, notnull: true, default: 0}  # поле по которому будет вестись сортировка
    product_id: {type: integer}

Product:
  [...]]]></description>
			<content:encoded><![CDATA[<p>Чтобы связанные объекты выводились в определенном нами порядке, при описании модели можно указать поле по которому будет вестись сортировка. </p>
<p>Пример:</p>
<pre class="brush: plain;">
Image:
  columns:
    # .... необходимые поля
    pos: { type: integer, notnull: true, default: 0}  # поле по которому будет вестись сортировка
    product_id: {type: integer}

Product:
   # .... необходимые поля
  relations:
    Images:
      type: many
      class: Image
      local: id
      foreign: product_id
      onDelete: 'SET NULL'
      orderBy: 'pos ASC' # &lt;- указываем по какому полю сортировать
</pre>
<p>Данная заметка касается версии Doctrine 1.2. Как я знаю в более старых версиях, подобное приходилось решать самостоятельно правкой классов в дистрибутиве Doctrine.</p>
]]></content:encoded>
			<wfw:commentRss>http://jeka.ru/2010/05/05/doctrine-sortirovka-svyazej/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Яндекс.Директ API</title>
		<link>http://jeka.ru/2010/04/28/yandeks-direkt-api/</link>
		<comments>http://jeka.ru/2010/04/28/yandeks-direkt-api/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 21:01:49 +0000</pubDate>
		<dc:creator>Jeka</dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[ SOAP]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[yandex]]></category>
		<category><![CDATA[реклама]]></category>
		<category><![CDATA[Яндекс.Директ]]></category>

		<guid isPermaLink="false">http://jeka.ru/2010/04/28/yandeks-direkt-api/</guid>
		<description><![CDATA[Получен на днях доступ к API Яндекс.Директ, сейчас изучаем возможности. Есть большие задачи и планы по его использованию.
Сам доступ предоставляется через SOAP.
]]></description>
			<content:encoded><![CDATA[<p>Получен на днях доступ к API Яндекс.Директ, сейчас изучаем возможности. Есть большие задачи и планы по его использованию.<br />
Сам доступ предоставляется через SOAP.</p>
]]></content:encoded>
			<wfw:commentRss>http://jeka.ru/2010/04/28/yandeks-direkt-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Вышла стабильная версия Propel 1.5</title>
		<link>http://jeka.ru/2010/04/27/vyshla-stabilnaya-versiya-propel-1-5/</link>
		<comments>http://jeka.ru/2010/04/27/vyshla-stabilnaya-versiya-propel-1-5/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 05:34:33 +0000</pubDate>
		<dc:creator>Jeka</dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[propel]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://jeka.ru/?p=437</guid>
		<description><![CDATA[
Хорошая новость для разработчиков использующих Propel, вышла стабильная версия Propel 1.5!!!
Кто не знает &#8211; это ORM для PHP (http://www.propelorm.org/).
Изменений в данной версии очень много, но как обещают разработчики, не надо этого пугаться, так как остается совместимость с версиями 1.4, 1.3.
Для апгрейда надо всего лишь перегенерировать модель и начать использовать новые возможности Propel.
Что нового, смотрим здесь [...]]]></description>
			<content:encoded><![CDATA[<p><img style="float: left; margin: 0 10px 10px 0" src="http://www.propelorm.org/chrome/theme/img/propel-logo.png" alt="Propel" /><br />
Хорошая новость для разработчиков использующих Propel, вышла стабильная версия Propel 1.5!!!<br />
Кто не знает &#8211; это ORM для PHP (<a href="http://www.propelorm.org/" target="_blank">http://www.propelorm.org/</a>).<br />
Изменений в данной версии очень много, но как обещают разработчики, не надо этого пугаться, так как остается совместимость с версиями 1.4, 1.3.<br />
Для апгрейда надо всего лишь перегенерировать модель и начать использовать новые возможности Propel.</p>
<p>Что нового, смотрим здесь <a href="http://www.propelorm.org/wiki/Documentation/1.5/WhatsNew">http://www.propelorm.org/wiki/Documentation/1.5/WhatsNew</a>.</p>
<p>Удачи!</p>
]]></content:encoded>
			<wfw:commentRss>http://jeka.ru/2010/04/27/vyshla-stabilnaya-versiya-propel-1-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Symfony: Фильтры формы &#8211; выпадающий список для текстового поля</title>
		<link>http://jeka.ru/2010/03/29/filtry-formy-vypadayushhij-spisok-dlya-tekstovogo-polya/</link>
		<comments>http://jeka.ru/2010/03/29/filtry-formy-vypadayushhij-spisok-dlya-tekstovogo-polya/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 17:53:18 +0000</pubDate>
		<dc:creator>Jeka</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[filter]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://jeka.ru/?p=428</guid>
		<description><![CDATA[Так получилось, что у одной модели имеется текстовое поле с не очень большим количеством вариантов значения. По идее можно сделать по правильному и вывести все в отдельную таблицу, но по некоторым причинам этого не делается.
Следовательно в админке при фильтрации, не очень охота писать значения этого поля ручками, легко можно сделать выпадающий список со всеми вариантами.
Сначала [...]]]></description>
			<content:encoded><![CDATA[<p>Так получилось, что у одной модели имеется текстовое поле с не очень большим количеством вариантов значения. По идее можно сделать по правильному и вывести все в отдельную таблицу, но по некоторым причинам этого не делается.<br />
Следовательно в админке при фильтрации, не очень охота писать значения этого поля ручками, легко можно сделать выпадающий список со всеми вариантами.<br />
Сначала сделал так:</p>
<pre class="brush: php;">

// SomeModelFormFilter.class.php
// ...
  public function configure()
  {
    $this-&gt;setWidget('status', new sfWidgetFormChoice(
      array('choices'=&gt;self::getStatuses())
    ));

    $this-&gt;setValidator('status', new sfValidatorChoice(array(
      'choices'=&gt;array_keys(self::getStatuses()),
      'required'=&gt;false
    )));
  }

  public static function getStatuses()
  {
     return array(
         '' =&gt; '',
         'one'=&gt;'Один',
         'two'=&gt;'Два',
         'three'=&gt;'Три'
     );
  }
//...
</pre>
<p>Оказалось, что хоть выпадающий список появляется, фильтрация не происходит.<br />
Немного покопавшись, нашел такое решение: надо для нашего поля status, указать тип &laquo;ForeignKey&raquo;.<br />
Делаем это перекрываем родительский метод &laquo;getFields()&raquo;.</p>
<pre class="brush: php;">

// SomeModelFormFilter.class.php
// ...
  public function getFields()
  {
    $fields = parent::getFields();
    $fields['status']='ForeignKey';

    return $fields;
  }
// ...
</pre>
<p>Все, теперь работает.</p>
]]></content:encoded>
			<wfw:commentRss>http://jeka.ru/2010/03/29/filtry-formy-vypadayushhij-spisok-dlya-tekstovogo-polya/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>phpBB 4.0 &amp; Symfony 2.0</title>
		<link>http://jeka.ru/2010/02/17/phpbb-4-0-symfony-2-0/</link>
		<comments>http://jeka.ru/2010/02/17/phpbb-4-0-symfony-2-0/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 15:20:18 +0000</pubDate>
		<dc:creator>Jeka</dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[ phpBB]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://jeka.ru/2010/02/17/phpbb-4-0-symfony-2-0/</guid>
		<description><![CDATA[Отличная новость прилетела! Говорят, что phpBB 4.0 будет написана с использованием Symfony 2.0
]]></description>
			<content:encoded><![CDATA[<p>Отличная новость прилетела! Говорят, что phpBB 4.0 будет написана с использованием Symfony 2.0</p>
]]></content:encoded>
			<wfw:commentRss>http://jeka.ru/2010/02/17/phpbb-4-0-symfony-2-0/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Некоторые особенности CSRF Protection в symfony</title>
		<link>http://jeka.ru/2010/01/18/csrf-protection/</link>
		<comments>http://jeka.ru/2010/01/18/csrf-protection/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 09:53:40 +0000</pubDate>
		<dc:creator>Jeka</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[CSRF Protection]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://jeka.ru/?p=410</guid>
		<description><![CDATA[В данной заметке я привожу некоторую ситуацию, с которой я столкнулся при работе с формами в замечательном PHP фреймворке Symfony. В частности, проблема возникала при включенной защите от межсайтовых запросов (CSRF Protection), что это такое вы можете прочитать в википедии (http://ru.wikipedia.org/wiki/CSRF, http://www.inattack.ru/article/552.html).]]></description>
			<content:encoded><![CDATA[<p>В данной заметке я привожу некоторую ситуацию, с которой я столкнулся при работе с формами в замечательном PHP фреймворке Symfony. В частности, проблема возникала при включенной защите от межсайтовых запросов (<strong><abbr title="Cross-Site Request Forgery">CSRF</abbr> Protection</strong>), что это за защита вы можете прочитать в википедии (<a href="http://ru.wikipedia.org/wiki/CSRF" target="_blank">http://ru.wikipedia.org/wiki/CSRF</a>, <a href="http://www.inattack.ru/article/552.html" target="_blank">http://www.inattack.ru/article/552.html</a>).</p>
<p>В симфонии при включенной CSRF защите в форму подставляется скрытое поле с именем _csrf_token, его значение формируется как md5 хеш от секретной строки, имени класса и <strong>идентификатора сессии</strong> (session_id).<br />
Пример формирования значения токена в Symfony:</p>
<pre class="brush: php;">
  // sfForm.class.php
  public function getCSRFToken($secret = null)
  {
    ....
    return md5($secret.session_id().get_class($this));
  }
</pre>
<p>Следовательно, если после некоторого действия значение, возвращаемое session_id() меняется, то дальнейшая валидация созданных до этого момента форм, не будет корректно обрабатываться.<br />
Такие случаи могут возникать, например, при авторизации пользователя (sfGuardPlugin) и дальнейшей обработке форм в одном запросе.<br />
Пример, у нас есть две формы c полями:<br />
1. sfGuardFormSignin: signin[username], signin[password]<br />
2. AddressForm: address[phone],address[city],&#8230; -</p>
<p>Мы хотим в одном запросе авторизовать пользователя с помощью логина пароля и сохранить обязательные поля из формы address<br />
Делаем примерно так:</p>
<pre class="brush: php;">
$this-&gt;auth_form = !$this-&gt;getUser()-&gt;isAuthenticated() ? new sfGuardFormSignin() : null;
$this-&gt;address_form = new AddressForm();
if ($request-&gt;isMethod('post'))
{
  // авторизуемся
  if (!$this-&gt;getUser()-&gt;isAuthenticated())
  {
    $this-&gt;auth_form-&gt;bind($request-&gt;getParameter('signin'));
    if ($this-&gt;auth_form-&gt;isValid())
    {
      $values = $this-&gt;auth_form-&gt;getValues();

      $this-&gt;getUser()-&gt;signin($values['user'], array_key_exists('remember', $values) ? $values['remember'] : false);
      $this-&gt;auth_form=null;
    }
  }

  // обрабатываем форму адреса
  $this-&gt;address_form-&gt;bind($request-&gt;getParameter('address'));
  if ($this-&gt;address_form-&gt;isValid())
  {
    // что-то делаем с формой, например сохраняем
    $this-&gt;address_form-&gt;save();
    //...

    $this-&gt;redirect('@somepath');
  }

}
</pre>
<p>Допустим, авторизация прошла успешно, но валидация формы адреса не прошла. Тогда нам покажется форма адреса с ошибками, но исправив ошибки мы все равно получим не валидную форму так как session_id изменился, а форма адреса создавалась с учетом старого его значения и<br />
нам будет в любом случае выдавать ошибку &laquo;csrf token: Required.&raquo;.<br />
Как избежать подобного?<br />
Способ который я применил (на мой взгляд не очень красивый) заключается в следующем: нужно после авторизации поставить в сессию атрибут<br />
о временном отключении &laquo;CSRF Protetion&raquo;  перед обработкой форм проверять данный атрибут и отключать защиту CSRFT.<br />
Пример:</p>
<pre class="brush: php;">
$this-&gt;auth_form = !$this-&gt;getUser()-&gt;isAuthenticated() ? new sfGuardFormSignin() : null;
$this-&gt;address_form = new AddressForm();
if ($request-&gt;isMethod('post'))
{

  // Авторизация
  if (!$this-&gt;getUser()-&gt;isAuthenticated())
  {
    $this-&gt;auth_form-&gt;bind($request-&gt;getParameter('signin'));
    if ($this-&gt;auth_form-&gt;isValid())
    {
      $values = $this-&gt;auth_form-&gt;getValues();

      $this-&gt;getUser()-&gt;signin($values['user'], array_key_exists('remember', $values) ? $values['remember'] : false); // &lt;&lt;&lt; здесь меняется session_id
      $this-&gt;getUser()-&gt;setAttribute('disable_csrf',true); // &lt;&lt;&lt; снимаем защиту CSRF
      $this-&gt;auth_form=null;
    }
  }

  // Отключаем защиту если требуется
  if ($this-&gt;getUser()-&gt;getAttribute('disable_csrf',false))
  {
    sfForm::disableCSRFProtection();
    unset ($this-&gt;address_form[sfForm::getCSRFFieldName()]);
  }

  // обработка формы адреса
  $this-&gt;address_form-&gt;bind($request-&gt;getParameter('address'));

  if ($this-&gt;address_form-&gt;isValid())
  {

    // что-то делаем с формой, например сохраняем
    $this-&gt;address_form-&gt;save();
    //...

    $this-&gt;getUser()-&gt;setAttribute('disable_csrf',null); // если все хорошо включаем защиту CSRF обратно
    $this-&gt;redirect('@somepath');
  }

}
</pre>
<p>Все вышеприведенное тестировалось на версии symfony 1.2, в этой версии CSRF защиту можно отключить только глобально. В более новых версиях фреймворка (1.3, 1.4), появилась возможность отключать защиту локально для конкретной формы по отдельности, что более правильно.<br />
З.Ы. Если кто-то скажет, как подобное можно более красиво решить, буду очень благодарен <img src='http://jeka.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://jeka.ru/2010/01/18/csrf-protection/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>sfYandexYMLPlugin &#8211; генерация YML для Яндекс.Маркета</title>
		<link>http://jeka.ru/2009/12/02/sfyandexymlplugin-generaciya-yml-dlya-yandeks-marketa/</link>
		<comments>http://jeka.ru/2009/12/02/sfyandexymlplugin-generaciya-yml-dlya-yandeks-marketa/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 09:31:03 +0000</pubDate>
		<dc:creator>Jeka</dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[yandex]]></category>
		<category><![CDATA[yandex.m]]></category>
		<category><![CDATA[yml]]></category>

		<guid isPermaLink="false">http://jeka.ru/?p=396</guid>
		<description><![CDATA[
Выложил еще один плагин, который позволяет упростить генерацию XML  для сервиса Яндекс.Маркет.
В плагин входят несколько классов, которые предоставляют объектный интерфейс для генерации YML файла.
Описание формата YML можно посмотреть здесь http://partner.market.yandex.ru/legal/tt/
В данный момент, не все еще возможности реализованы.
Например, по товарным предложениям, реализовано только самое простое предложение (offer).
Классы не привязаны к фреймворку symfony, так что думаю [...]]]></description>
			<content:encoded><![CDATA[<div style="background: #FFF; margin: 10px 10px 10px 0; float: left; border: 1px solid #EEEEEE;"><img style="margin: 20px;" title="Yandex.Market" src="http://partner.market.yandex.ru/yandex.market/icon1.gif" alt="" width="56" height="56" /></div>
<p>Выложил еще один <a href="http://www.symfony-project.org/plugins/sfYandexYMLPlugin" target="_blank">плагин</a>, который позволяет упростить генерацию XML  для сервиса <a href="http://market.yandex.ru" target="_blank">Яндекс.Маркет</a>.<br />
В плагин входят несколько классов, которые предоставляют объектный интерфейс для генерации YML файла.<br />
Описание формата YML можно посмотреть здесь <a href="http://partner.market.yandex.ru/legal/tt/" target="_blank">http://partner.market.yandex.ru/legal/tt/</a></p>
<p>В данный момент, не все еще возможности реализованы.<br />
Например, по товарным предложениям, реализовано только самое простое предложение (offer).</p>
<p>Классы не привязаны к фреймворку symfony, так что думаю использовать их можно в любом проекте на PHP.</p>
<p>Взять плагин сейчас возможно только из SVN.</p>
<p>Страница плагина: <a href="http://www.symfony-project.org/plugins/sfYandexYMLPlugin" target="_blank">http://www.symfony-project.org/plugins/sfYandexYMLPlugin</a><br />
SVN: <a href="http://svn.symfony-project.com/plugins/sfYandexYMLPlugin/trunk/" target="_blank">http://svn.symfony-project.com/plugins/sfYandexYMLPlugin/trunk/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jeka.ru/2009/12/02/sfyandexymlplugin-generaciya-yml-dlya-yandeks-marketa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
