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

Форум PHP

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

 

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

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

тема: Несколько вопросов про session_id()
 
 автор: NIK   (12.12.2006 в 21:39)   письмо автору
 
 

1. Имеется 2 формы на 2 различных страницах и один единый обработчик этих 2-х форм.


<table width='100%' cellpadding='1' cellspacing='0'>
            <tr>
             <td>
              <b>&#203;&#238;&#227;&#232;&#237;</b>
             </td>
             <td align='right'>
              <input class='text' type='text' name='login' maxlength='15' style='width: 80px; height: 18px; margin-bottom: 1px;'>
             </td>
            </tr>
            <tr>
             <td>
              <b>&#207;&#224;&#240;&#238;&#235;&#252;</b>
             </td>
             <td align='right'>
              <input class='text' type='password' name='password' maxlength='9' style='width: 80px; height: 18px; margin-bottom: 2px;'>
             </td>
            </tr>
           </table>
           <table width='100%' cellpadding='1' cellspacing='0'>
            <tr>
             <td align='left' style='padding: 0px; margin: 0px;'>
              <input type='checkbox' name='remember[]' value='true' style='margin-top: 0px; margin-bottom: 0px; margin-left: 0px;'><small><u><b>&#199;&#224;&#239;&#238;&#236;&#237;&#232;&#242;&#252;</b></u></small>
             </td>
             <td align='right'>
              <input class='submit' type='button' name='menu_send' value=' &#194;&#245;&#238;&#228; ' onClick=ButtonDisable('menu_login','menu_send');>
             </td>
            </tr>
           </table>
           <input type='hidden' name='action' value='true'>
           <input type='hidden' name='session_id' value='".session_id()."'>
          </form>


обработчик:


session_start();

if (empty($_POST['action'])) {
  // выводим туже самую форму
} else {
  # &#206;&#239;&#240;&#229;&#228;&#229;&#235;&#255;&#229;&#236; &#232; &#238;&#225;&#240;&#224;&#225;&#224;&#242;&#251;&#226;&#224;&#229;&#236; &#239;&#229;&#240;&#229;&#236;&#229;&#237;&#237;&#251;&#229;
  $form_login = FormDataCheck($_POST['login'], 15);
  $form_password = FormDataCheck($_POST['password'], 9);
  $remember = $_POST['remember'];
  $sid = $_POST['session_id'];

  # &#207;&#240;&#238;&#244;&#229;&#240;&#229;&#236; &#237;&#224; &#240;&#229;&#244;&#229;&#240;&#229;&#240; &#232; SID
  if ($sid == session_id() AND strpos($_SERVER['HTTP_REFERER'], $_SERVER['SERVER_NAME'])) {
    // выполняем код
  } else {
    echo "ошибка";
  }
}


Как видно форму может вывести и сам обработчик, и самостоятельно. Я так и сделал, и если обратиться через форму, которая расположена на любой другой странице к обработчику - то генерируется новый ID сессии. Нкак не могу понять почему. А если обращаться с формы в самом обработчике - всё хорошо.

   
 
 автор: Whi-teOoS   (12.12.2006 в 22:14)   письмо автору
 
   для: NIK   (12.12.2006 в 21:39)
 

<input type='hidden' name='session_id' value='".session_id()."'>

зачем???

session_start() - либо стартует сессию, либо "возвращает" уже стартованную...

   
Rambler's Top100
вверх

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