<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"  href="/xslt/final.xslt"?><html>
  <head>
    <title>Codeigniter Blog. Step4: Авторизация</title>
    <meta name="css" content=""/>
    <meta name="js" content=""/>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta name="id" content="7"/>
    <link rel="alternate" type="application/rss+xml" title="RSS" href="/rss.xml"/>
  </head>
  <body>
    <div class="main">
      <div class="wrap">
        <div class="L">
          <h1><a href="/">..</a> / Codeigniter Blog. Step4: Авторизация</h1>
          <ol class="tags big">
            <li>
              <a href="/codeigniter-blog">codeigniter-blog</a>
            </li>
          </ol>
          <div class="myContent"><p>На <a href="/article/6">предыдущем шаге</a> было сделано добавление записей в блог, но эта возможность доступна любому с улицы. Необходимо добавить авторизацию для блога, чтобы эта функция была доступна только админу. Для поддержки авторизации будет задействован механизм сессий, который позволяет сохранять массивы данных пользователя между обращнения к разным скриптам. В Codeigniter <a href="#" title="codeigniter.com/user_guide/libraries/sessions.html" rel="nofollow" class="external">предусмотрена библиотека</a>, облегчающая работу с эти механизмом. Существуют так же целый ряд <a href="#" title="codeigniter.com/wiki/Category:Libraries::Authorization/" rel="nofollow" class="external">готовых решений и библиотек</a> с расширенными возможностями авторизации, но для простейшего блога  мы можем написать и сами.</p>
<h2>1.</h2>
<p>Выведем на главную страницу блога ссылки залогинивания, разлогинивания и добавления записи. Для этого дорабатываем вьюер блога /system/application/views/blog_view.php.</p>
<p>

<table class="code">
    <tbody>
        <tr>
            <td><!--php-->
            <pre class="brush: plain">&lt;html&gt;  
            &lt;body&gt;     
                   &lt;?
                    foreach ($query-&gt;     result() as $row)
                    {
                        echo "&lt;h1&gt;     ".$row-&gt;     title."&lt;/h1&gt;     ";
                        echo "&lt;p&gt;     ".$row-&gt;     body."&lt;/p&gt;     ";
                        echo anchor('blog/comments/'.$row-&gt;     id,'comments');
                    }
                     echo "&lt;p&gt;     ".anchor('admin/login','logon')." 
 ";
                     echo  anchor('admin/logoff','logoff')." 
 ";
                     echo  anchor('admin/record_add','new record')." &lt;/p&gt;     ";
                   ?&gt;     
            &lt;/body&gt;    </pre><!--/php--></td>
        </tr>
    </tbody>
</table>
</p>
<p> </p>
<h2>2.</h2>
<p>создаем контроллер администрирования /system/application/controller/admin.php</p>
<p> </p>
<p>

<table class="code">
    <tbody>
        <tr>
            <td><!--php-->
            <pre class="brush: plain">&lt;?php
            class Admin extends Controller {
             function Admin()
               {
                parent::Controller();
                $this-&gt;     load-&gt;     helper('url');
                $this-&gt;     load-&gt;     helper('form');
                 // подключаем библиотеку поддержки сессий
                $this-&gt;     load-&gt;     library('session');
               }
            }
            ?&gt;    </pre><!--/php--></td>
        </tr>
    </tbody>
</table>
</p>
<h2>3.</h2>
<p>Переносим функцию добавления записей в блог из контроллера блога контроллере /system/application/controller/blog.php<br/>
в контроллер администрирования /system/application/controller/admin.php</p>
<p>

<table class="code">
    <tbody>
        <tr>
            <td><!--php-->
            <pre class="brush: plain">   function record_add()
              {
                    if (isset($_POST)) if (isset($_POST['title'])) // проверяем были ли отосланы данные формы
                    {
                        $this-&gt;     db-&gt;     insert('records',$_POST);  //  записываем данные формы
                        redirect('');  //  редирект в начало
                    } else  // если данных нет - выводим форму для добавления новой записи в блог
                    $this-&gt;     load-&gt;     view('record_add');
              }</pre><!--/php--></td>
        </tr>
    </tbody>
</table>
</p>
<p>Исправляем вьюер /system/application/views/record_add.php<br/>
в нем находим строку:<br/>
echo form_open('blog/record_add');<br/>
и заменяем ее на<br/>
echo form_open('admin/record_add');</p>
<h2>4.</h2>
<p>Создаем пустую функцию залогинивания в контроллере администрирования  /system/application/controller/admin.php<br/>

<table class="code">
    <tbody>
        <tr>
            <td><!--php-->
            <pre class="brush: plain"> function login()
             {
                     $this-&gt;     load-&gt;     view('login');
             }</pre><!--/php--></td>
        </tr>
    </tbody>
</table>
</p>
<h2>5.</h2>
<p>создаем вьюер для залогинивания  /system/application/views/login.php.<br/>

<table class="code">
    <tbody>
        <tr>
            <td><!--php-->
            <pre class="brush: plain">&lt;html&gt;  
            &lt;head&gt;     
              &lt;title&gt;     &lt;/title&gt;     
            &lt;/head&gt;     
            &lt;body&gt;     
            &lt;? echo form_open('admin/login');?&gt;     
            &lt;input type="text" id="login" name="login" value="guest"/&gt;     
            &lt;input type="text" id="password" name="password" value="guest"/&gt;     
            &lt;input type="submit"/&gt;     
            &lt;? echo form_close(); ?&gt;     
            &lt;/body&gt;     
            &lt;/html&gt;    </pre><!--/php--></td>
        </tr>
    </tbody>
</table>
</p>
<h2>6.</h2>
<p>Проверяем вывод формы для залогинивания http://ci/admin/login и добавления записи в блог http://ci/admin/record_add</p>
<h2>7.</h2>
<p>Теперь необходимо перекрыть возможность доступа к функциям администрирования без логина.<br/>
для этого дорабатываем конструктор контроллера администрирования /system/application/controller/admin.php<br/>

<table class="code">
    <tbody>
        <tr>
            <td><!--php-->
            <pre class="brush: plain"> function Admin()
             {
              parent::Controller();
              $this-&gt;     load-&gt;     helper('url');
              $this-&gt;     load-&gt;     helper('form');
              $this-&gt;     load-&gt;     library('session');
               // проверяем наличие принака залогинивания в сессии
               // если залогинились - выполняем вызванную функцию
               if ($this-&gt;     session-&gt;     userdata('logon') != '') return;
               // переход к обработке логина
               if ($this-&gt;     uri-&gt;     segment(2)==='login') return;
               // редирект на логин, если залогинивания не было
               redirect('admin/login');
            }</pre><!--/php--></td>
        </tr>
    </tbody>
</table>
</p>
<p>запускаем скрипт добавления записи в блог http://ci/admin/record_add и обнаруживаем, что доступ закрыт - перебрасывает на залогинивание.</p>
<h2>8.</h2>
<p>Дорабатываем функцию обработки логина</p>
<p>

<table class="code">
    <tbody>
        <tr>
            <td><!--php-->
            <pre class="brush: plain"> function login()
             {
                    if (isset($_POST['password'])) // проверяем был ли прислан пароль
                    // проверяем корректность пароля и логина
                    // Ахтунг! В реальном скрипте пароль в явном виде не должен присутствовать.
                    if ($_POST['password']==='guest')
                    if ($_POST['login']==='guest')
                    {
                        $session_data = array('logon' =&gt;      'Yes!'); // записываем в сессию признак логона
                        $this-&gt;     session-&gt;     set_userdata($session_data);
                        redirect(''); // редирект на главную страницу
                    }
                    $this-&gt;     load-&gt;     view('login');
             }</pre><!--/php--></td>
        </tr>
    </tbody>
</table>
</p>
<p>Заходим http://ci/admin/login. Залогиниваемся "guest/guest" снова проверяем добавление записи в блог http://ci/admin/record_add  и убеждаемся,что доступ открыт.</p>
<h2>9.</h2>
<p>Теперь в контроллер администрирования необходимо добавить функцию разлогинивания - выхода из редакторского режима.</p>
<p>

<table class="code">
    <tbody>
        <tr>
            <td><!--php-->
            <pre class="brush: plain"> function logoff()
             {
                     $this-&gt;     session-&gt;     sess_destroy();  // обнуляем сессию
                     redirect(''); // редирект на главную страницу
             }</pre><!--/php--></td>
        </tr>
    </tbody>
</table>
</p>
<p>вызываем ее  в броузере http://ci/admin/logoff происходит уничтожение сессии и редирект на главную страницу.<br/>
Снова переходим на страницу добавления записи http://ci/admin/record_add Убеждаемся,что разлогинивание произошло</p>
<h2>10.</h2>
<p>Все что сделано выложена в папке <a href="/doc/step-by-step.zip">step4</a>. К этому можно добавить оформление блога. Пример с оформлением находится в папке - <a href="/js/step-by-step.zip">step4a</a></p></div>
          <ol class="tags big">
            <li class="date">2007-09-03</li>
            <li>
              <a href="/codeigniter-blog">codeigniter-blog</a>
            </li>
          </ol>
          <ol class="see">
            <li>
              <a href="#"><span>phpfaq.ru/sessions#example</span> - <b>Сессии. Подробное описание работы и объяснение механизма.  (phpfaq.ru)</b></a>
            </li>
            <li>
              <a href="#"><span>www.realcoding.net/article/view/386</span> - <b>Сессии в PHP (примеры авторизации)</b></a>
            </li>
          </ol>
          <ul class="comment">
            <li id="a21" title="a0">
              <a name="guest/guest" title="" rel="23.01.08"/>
              <div>талантище! все работает, все понятно</div>
            </li>
            <li id="a23" title="a0">
              <a name="big" title="" rel="31.01.08"/>
              <div>да, согласен - талант изложения материала! респект!</div>
            </li>
            <li id="a34" title="a0">
              <a name="www.steklo.biz" title="" rel="26.03.08"/>
              <div>Две последние ссылки указывают на один и тот же архив.</div>
            </li>
            <li id="a69" title="a34">
              <a name="&#x418;&#x441;&#x430;&#x430;&#x43A; &#x422;&#x44B;&#x43D;&#x433;&#x44B;&#x43B;&#x447;&#x430;&#x432;" title="" rel="02.09.08"/>
              <div>В архиве сложены по шагам все исходники.<br/>В директории step1 - первый шаг, step2 - второй шаг и т.д.</div>
            </li>
            <li id="a120" title="a0">
              <a name="&#x42E;&#x440;&#x438;&#x439;" title="" rel="09.10.08"/>
              <div>Столкнулся с проблемой - для blog_view.php css отображается, а для login.php нет ): Пробывал делать через id и через class не получается. В чем может быть причина?</div>
            </li>
            <li id="a121" title="a0">
              <a name="&#x42E;&#x440;&#x438;&#x439;" title="" rel="09.10.08"/>
              <div>Проблема решилась</div>
            </li>
            <li id="a194" title="a0">
              <a name="&#x410;&#x43B;&#x435;&#x43A;&#x441;&#x430;&#x43D;&#x434;&#x440;" title="" rel="14.12.08"/>
              <div>Хотелось бы спросить.<br/>При проверке в конструкторе наличие сессии, вы просто пишите return; Далее проверяете сегмент и опять return;<br/>Теперь если человек с установленной сессией обращается к этому классу, то вначале конструктор проверяет и находит сессию, а что дальше то возвращает?</div>
            </li>
            <li id="a195" title="a194">
              <a name="&#x418;&#x441;&#x430;&#x430;&#x43A; &#x442;&#x44B;&#x43D;&#x433;&#x44B;&#x43B;&#x447;&#x430;&#x432;" title="erum.ru" rel="15.12.08"/>
              <div>А ничего. Просто если в сессии есть признак залогинивания конструктор разрешает использовать другие методы контроллера. Надо было бы всякий раз проверять пароль и логин?</div>
            </li>
            <li id="a196" title="a195">
              <a name="&#x410;&#x43B;&#x435;&#x43A;&#x441;&#x430;&#x43D;&#x434;&#x440;" title="" rel="16.12.08"/>
              <div>Да, я думаю это можно решить при помощи создания модели  и обращение к ней в конструкторе, если модель возвращает TRUE то разрешаем работу, так ведь?</div>
            </li>
            <li id="a197" title="a196">
              <a name="&#x418;&#x441;&#x430;&#x430;&#x43A; &#x422;&#x44B;&#x43D;&#x433;&#x44B;&#x43B;&#x447;&#x430;&#x432;" title="erum.ru" rel="16.12.08"/>
              <div>Модель нужна только для работы с БД. А из нее мы тащим только пароль и логин. После того как пароль проверен отрабатывается только механизм сессии. Он доступен на любом уровне и к модели отношения не имеет.</div>
            </li>
            <li id="a198" title="a196">
              <a name="&#x418;&#x441;&#x430;&#x430;&#x43A; &#x422;&#x44B;&#x43D;&#x433;&#x44B;&#x43B;&#x447;&#x430;&#x432;" title="erum.ru" rel="16.12.08"/>
              <div>Я там дал ссылки на phpfaq про сессии. Посмотрите. Там вроде прозрачно все.</div>
            </li>
            <li id="a205" title="a198">
              <a name="&#x410;&#x43B;&#x435;&#x43A;&#x441;&#x430;&#x43D;&#x434;&#x440;" title="" rel="18.12.08"/>
              <div>С сессиями никаких вопросов нет, разве что для стандартной библиотека лучше включить криптования кук.<br/>Вам спасибо.</div>
            </li>
            <li id="a227" title="a0">
              <a name="&#x418;&#x433;&#x43E;&#x440;&#x44C;" title="" rel="28.01.09"/>
              <div>У меня вопрос...<br/>А если я захочу держать все файлы контроллеров администрирования здесь /system/application/controller/admin/ как мне тогда организовать авторизацию?</div>
            </li>
            <li id="a228" title="a227">
              <a name="&#x418;&#x441;&#x430;&#x430;&#x43A; &#x422;&#x44B;&#x43D;&#x433;&#x44B;&#x43B;&#x447;&#x430;&#x432;" title="erum.ru" rel="29.01.09"/>
              <div>заведите директорию admin. Положите туда контроллеры, например login.php и вызывайте по адресу сайт.ру/admin/login</div>
            </li>
            <li id="a229" title="a228">
              <a name="&#x418;&#x433;&#x43E;&#x440;&#x44C;" title="" rel="29.01.09"/>
              <div>Большое спасибо за ответ. Но меня больше интересовало как защитить от просмотра сразу всю директорию, а не прикручивать к каждому контроллеру администрирования авторизацию?</div>
            </li>
            <li id="a230" title="a229">
              <a name="&#x418;&#x441;&#x430;&#x430;&#x43A; &#x422;&#x44B;&#x43D;&#x433;&#x44B;&#x43B;&#x447;&#x430;&#x432;" title="erum.ru" rel="29.01.09"/>
              <div>У вас два вопроса в одном. <br/>Если нужно вынести папку с приложением вообще за корневую директорию смтоите <a title="http://php5.kiev.ua/codeigniter/general/managing_apps.html" rel="nofollow" class="external" href="#">ссылка</a>  <br/>Если вопрос про то как обойтись без проверки в каждом модуле авторизации, вспомните про ООП.  Можно сделать отдельный класс своего контроллера типа<br/>Class MY_Controller extends Controller  <br/>А все остальные контроллеры наследуйте от него. В этот MY_Controller можно заложить и проверку авторизации и все прочее, что будет общим для всех контроллеров. Т.е. Расширяете стандартный контроллер CI до необходимой функциональности. <br/>Есть и другие пути. Но они не короче.</div>
            </li>
            <li id="a231" title="a230">
              <a name="&#x418;&#x433;&#x43E;&#x440;&#x44C;" title="" rel="29.01.09"/>
              <div>Спасибо большое за ответы, а особенно за наследование, как то не догадался. Я третий день как знакомлюсь CI. Не сочтите пожалуйста за наглость но у меня еще один вопрос.))).. такого содержания...<br/>На всех своих проэктах  я использовал систему статистики пос. сайта написанную на PHP она состоит из примерно 20-30 файлов + БД все это дело находилось в одной папке. Используя в своих новых проэктах CI я хотелбы использовать и эту статистику, но я не могу понять как мне ее прикрутить. чтобы она была доступна например по адресу сайт.ru/admin/моя_статитика/<br/>Заранее благодарен!</div>
            </li>
            <li id="a232" title="a231">
              <a name="&#x418;&#x441;&#x430;&#x430;&#x43A;  &#x422;&#x44B;&#x43D;&#x433;&#x44B;&#x43B;&#x447;&#x430;&#x432;" title="erum.ru" rel="30.01.09"/>
              <div>Посмотрите на файл .htaccess там в самом начале стоит перекрытие обработки картинок, js и т.п. Аналогично переопределите в .htaccess  обработку файлов из директории со статистикой.</div>
            </li>
            <li id="a233" title="a232">
              <a name="&#x418;&#x433;&#x43E;&#x440;&#x44C;" title="" rel="30.01.09"/>
              <div>Спасибо Вам огромное и успехов ваших проэктах.</div>
            </li>
            <li id="a241" title="a197">
              <a name="&#x444;&#x44B;&#x432;&#x430;&#x43F;" title="strc.su" rel="16.02.09"/>
              <div>классно написано, но [url=<a title="http://vsa4ina.st8.ru]&#x43F;&#x43E;&#x440;&#x43D;&#x43E;[/url" rel="nofollow" class="external" href="#">ссылка</a>  ] и [url=<a title="http://ctrc.su]&#x441;&#x435;&#x43A;&#x441;[/url" rel="nofollow" class="external" href="#">ссылка</a>  ] лучше</div>
            </li>
            <li id="a313" title="a0">
              <a name="&#x430;&#x440;&#x442;&#x435;&#x43C;" title="" rel="21.06.09"/>
              <div>если разлогиниться а потом нажать кнопку back  в браузере - попадаешь на запароленную страницу!</div>
            </li>
            <li id="a314" title="a0">
              <a name="&#x418;&#x441;&#x430;&#x430;&#x43A;  &#x442;&#x44B;&#x43D;&#x433;&#x44B;&#x43B;&#x447;&#x430;&#x432;." title="erum.ru" rel="21.06.09"/>
              <div>запароленная страница тащится из кэша броузера.</div>
            </li>
            <li id="a317" title="a314">
              <a name="&#x430;&#x440;&#x442;&#x435;&#x43C;" title="" rel="22.06.09"/>
              <div>я это понимаю, знаете как это предатвротить (для всех браузеров)<br/>header("Cache-Control: no-cache, must-revalidate"); <br/>header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");<br/>в конструкторе контроллера работает тока в ИЕ, остальным браузерам на это начхать</div>
            </li>
            <li id="a318" title="a317">
              <a name="&#x418;&#x441;&#x430;&#x430;&#x43A; &#x422;&#x44B;&#x43D;&#x433;&#x44B;&#x43B;&#x447;&#x430;&#x432;" title="erum.ru" rel="22.06.09"/>
              <div>Совсем не понимаю. Back в броузере вообще не должен вызывать что-то с сервера, а должен тянуть страницу из кэша. <br/>Возможно где-то у вас в каких-то броузерах кэш отключен.<br/>Кстати header может не отрабатываться на криво настроенном прокси.</div>
            </li>
            <li id="a319" title="a318">
              <a name="&#x430;&#x440;&#x442;&#x435;&#x43C;" title="" rel="22.06.09"/>
              <div>так, как сделать так чтоб back не возврощал на запароленную страницу?</div>
            </li>
            <li id="a417" title="a0">
              <a name="&#x410;&#x43D;&#x434;&#x440;&#x435;&#x439;" title="" rel="23.12.09"/>
              <div>Здраствуйте. Не могли бы вы скинуть содержимое своего файла .htaccess <br/>Никак не могу избавиться от index.php в URL<br/>Заранее спасибо!)</div>
            </li>
            <li id="a418" title="a417">
              <a name="&#x418;&#x441;&#x430;&#x430;&#x43A; &#x422;&#x44B;&#x43D;&#x433;&#x44B;&#x43B;&#x447;&#x430;&#x432;" title="erum.ru" rel="23.12.09"/>
              <div>order allow,deny<br/>allow from all<br/>Options -Indexes<br/>RewriteEngine On # добавляем<br/>Options +FollowSymLinks<br/>Options -Indexes<br/>DirectoryIndex index.php<br/>RewriteEngine on<br/>RewriteCond $1 !^(index\.php|images|robots\.txt|public|[0-9a-z_\-]*\.xsl|.*\.xslt)<br/>RewriteCond %{REQUEST_URI} !\.(css¦js¦jpg¦gif)$<br/>RewriteCond %{REQUEST_FILENAME} !-f<br/>RewriteCond %{REQUEST_FILENAME} !-d<br/>RewriteRule ^([^~]*)(~*.*)$ /index.php/$1 [L,QSA]</div>
            </li>
            <li id="a426" title="a417">
              <a name="&#x415;&#x432;&#x433;&#x435;&#x43D;&#x438;&#x439; &#x417;&#x430;&#x440;&#x438;&#x446;&#x43A;&#x438;&#x439;" title="" rel="20.01.10"/>
              <div>Первое что делаем <br/>здесь-&gt; корень\system\application\config\config.php<br/>//удаляем index.php из адреса<br/>$config['index_page'] = "";<br/>Второе что делаем <br/>здесь-&gt;<br/>корень\.htaccess<br/># обращение к директории без указания имени файла. <br/>DirectoryIndex index.php<br/># определение кодировки, в которой сервер выдает файлы<br/> <br/>AddDefaultCharset utf-8  <br/># даём указания (Оn-включение) серверу по дерективе mod_rewrite<br/>RewriteEngine On<br/>RewriteBase /<br/># убираем с адреса www<br/>RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]<br/>RewriteRule ^/?(.*) <a title="http://%1/$1" rel="nofollow" class="external" href="#">ссылка</a>   [L,R=permanent]<br/># убираем с адреса index.php<br/>RewriteCond %{REQUEST_FILENAME} !-f<br/>RewriteCond %{REQUEST_FILENAME} !-d<br/>RewriteRule ^(.*)$ index.php/$1 [L]</div>
            </li>
            <li id="a427" title="a319">
              <a name="&#x415;&#x432;&#x433;&#x435;&#x43D;&#x438;&#x439; &#x417;&#x430;&#x440;&#x438;&#x446;&#x43A;&#x438;&#x439;" title="" rel="20.01.10"/>
              <div>так, как сделать, чтоб back не возврАщал на запароленную страницу?????<br/>у когото есть реальные соображения?????</div>
            </li>
            <li id="a428" title="a318">
              <a name="&#x415;&#x432;&#x433;&#x435;&#x43D;&#x438;&#x439; &#x417;&#x430;&#x440;&#x438;&#x446;&#x43A;&#x438;&#x439;" title="" rel="20.01.10"/>
              <div>эта тема не раскрыта... я уже бьюсь над етим неделю - вопрос актуален)</div>
            </li>
            <li id="a429" title="a418">
              <a name="&#x415;&#x432;&#x433;&#x435;&#x43D;&#x438;&#x439; &#x417;&#x435;&#x440;&#x438;&#x446;&#x43A;&#x438;&#x439;" title="" rel="20.01.10"/>
              <div>да..гляжу я что с датой добавления на сайтике есть пробельчики...) админы!!! зовите прогеров !!!!</div>
            </li>
            <li id="a430" title="a428">
              <a name="Le capitaine Nemo" title="" rel="20.01.10"/>
              <div>Ну если не задумываясь проверьте js наличие куки. Если ее нет - значит нужно сделать редирект на логин.</div>
            </li>
            <li id="a431" title="a429">
              <a name="&#x418;&#x441;&#x430;&#x430;&#x43A; &#x422;&#x44B;&#x43D;&#x433;&#x44B;&#x43B;&#x447;&#x430;&#x432;" title="erum.ru" rel="20.01.10"/>
              <div>Не пугайте. Я четко знаю сегодняшнее число, время года и даже год!<br/>Все совпадает. Вы запулили почлание точно в срок. <br/>К тому же и переделывать здесь все равно не буду. Зачем?</div>
            </li>
            <li id="a497" title="a426">
              <a name="Paha" title="" rel="16.04.10"/>
              <div>Options +FollowSymLinks<br/>Options -Indexes<br/>DirectoryIndex index.php<br/>RewriteEngine on<br/>RewriteCond %{REQUEST_FILENAME}  !index\.php.*<br/>RewriteRule ^(.*)$ index.php/$1<br/>и нет никаких проблем</div>
            </li>
            <li id="a518" title="a0">
              <a name="&#x421;&#x435;&#x440;&#x433;&#x435;&#x439;" title="" rel="24.05.10"/>
              <div>Битая ссылка:<br/>Пример с оформлением находится в папке - step4a</div>
            </li>
            <li id="a536" title="a0">
              <a name="&#x412;&#x438;&#x442;&#x430;&#x43B;&#x44F;" title="" rel="19.07.10"/>
              <div>Скажите, а что будет, если не закончив сесиию залогинится еще раз ??<br/>я так понимаю начнется новая сессия, а что с первой ??</div>
            </li>
            <li id="a537" title="a0">
              <a name="&#x430;&#x43B;&#x435;&#x43A;&#x441;&#x435;&#x439;" title="" rel="19.07.10"/>
              <div>это только у меня, или у всех?<br/>когда по ссылкам логинемся, разлогиневаемся и добавляем запись -  все хорошо, а если напрямую в браузере после разлогиневания пишу строку:<br/>"my_site/admin/record_add", то появляется форма для добавления записи, а не форма для ввода пароля.(и только после добавления записи появляется форма логина).в чем тут дело?</div>
            </li>
            <li id="a550" title="a536">
              <a name="shal" title="mecs.kz/" rel="06.08.10"/>
              <div>Если память мне не изменяет, сессия заканчивается по времени, указанным в файле config.php</div>
            </li>
            <li id="a555" title="a0">
              <a name="&#x412;&#x430;&#x43B;&#x435;&#x440;&#x430;" title="" rel="01.09.10"/>
              <div>Большое спасибо за предоставленный материал. Почти не встречал настолько доступно изложенного, написанного по сути, с примерами, и самое главное прикладными-работающими примерами материала!!!<br/>Что сказать, одни спасибо )))!!!!!</div>
            </li>
            <li id="a583" title="a536">
              <a name="&#x418;&#x43B;&#x44C;&#x44F;" title="" rel="04.01.11"/>
              <div>Просто произойдет замещение сессии</div>
            </li>
            <li id="a584" title="a537">
              <a name="&#x418;&#x43B;&#x44C;&#x44F;" title="" rel="04.01.11"/>
              <div>Ну в действии то нету проверки на сессийность, добавь - будет</div>
            </li>
            <li id="a585" title="a430">
              <a name="&#x418;&#x43B;&#x44C;&#x44F;" title="" rel="04.01.11"/>
              <div>Измените функцию : <br/>function record_add () <br/>    {<br/>      if (!isset($_POST['title']))<br/>      {<br/>        $this-&gt;load-&gt;view('record_add');<br/>      }<br/>      else <br/>      {<br/>        if ($this-&gt;session-&gt;userdata('isLogin')) {<br/>          $this-&gt;db-&gt;insert('records', $_POST);<br/>          redirect('');<br/>        } <br/>        else <br/>        {<br/>          echo 'Вы не зарегестрированны';<br/>        }<br/>      }<br/>    }<br/>Должно помочь</div>
            </li>
            <li id="a682" title="a0">
              <a name="&#x41C;&#x430;&#x43A;&#x441;&#x438;&#x43C; &#x41F;&#x435;&#x440;&#x435;&#x43F;&#x435;&#x43B;&#x438;&#x446;&#x430;" title="" rel="22.01.12"/>
              <div>Пользуюсь этим фреймворком уже несколько лет. Удобная справка и вообще хорошо документирован.<br/>Кстати, появилось руководство пользователя на русском для версии 2.0.0<br/><u class="external" title="codeigniter.su">http://codeigniter.su</u></div>
            </li>
          </ul>
        </div>
      </div>
      <div class="R">
        <a href="/" title="&#x41D;&#x430; &#x433;&#x43B;&#x430;&#x432;&#x43D;&#x443;&#x44E;"/>
      </div>
    </div>
    <div id="li"/>
  </body>
</html>

