Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с авторизацией, не пойму в чем ошибка... 
V
    Опции темы
kentnsk
  Дата 10.10.2007, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 10.10.2007

Репутация: нет
Всего: нет



Вот собственно код:

файл login.php (авторизация):
Код

<?
  $k=0;

  if(isset($_POST['enter']))
  {
    require "db.php";

    $login=trim($_POST['login']);
    $pass=trim($_POST['pass']);
    
    $q=mysql_query("select * from users where login='$login' and pass='".md5($pass)."';");
    if (mysql_error())
    {
      die(mysql_error());
    }
    if(mysql_num_rows($q)!=1)
    {
      $error[$k]=1;
      $k++;
    }
    
    if(!ereg("^[0-9a-z_]{4,20}$",$login))
    {
      $error[$k]=2;
      $k++;
    }
    if(!ereg("^[0-9a-zA-Z]{5,20}$",$pass))
    {
      $error[$k]=3;
      $k++;
    }

    if($k==0)
    {
      session_start();
      setcookie(session_name(),session_id(),7200);
      $user['login']=mysql_result($q,0,'login');
      $user['pass']=mysql_result($q,0,'pass');
      // запоминаем данные о пользователе
      session_register("user");
      unset($q);
      mysql_close();
      header("Location: index.php");
      exit();
    }
    else
    {
      if (isset($_COOKIE[session_name()]))
      {
        setcookie(session_name());
      }
    }
  }

  if((!isset($_POST['enter']))||(isset($_POST['enter'])&&$k!=0))
  {
    ?>
    <html>
    <head>
    <title>Авторизация</title>
    </head>
    <body>       
    <h1>Авторизация:</h1><br>
    <?
    for($i=0;$i<$k;$i++)
    {
    switch($error[$i])
    {
        case '1':
            $error[$i]=0;
            echo "<b><br>Не правильно введен логин или пароль!</b>";
            break;
        case '2':
            $error[$i]=0;
            echo "<b><br>Неправильно введен логин!</b>";
            break;
        case '3':
            $error[$i]=0;
            echo "<b><br>Неправильно введен пароль!</b>";
            break;
    }
    }
    ?>    
    <form action="login.php" method=post>
      <table width="500" border="0">
        <tr>  
          <td width="250">
            >> Логин*:
          </td>
          <td width="250" valign="left">
            <input type=text name="login" style="width:250px;">
          </td>
        </tr>
        <tr>
          <td width="250">
            >> Пароль*:
          </td>
          <td width="250" valign="left">
            <input type=password name="pass" style="width:250px;">
          </td>
        </tr>
      </table>       
      <table width="500" border="0">
        <tr>
          <td width="500" colspan=2 align="center">
            <input type=submit name="enter" value="Войти">
          </td>
        </tr>
      </table>
    </form>
    <?
  }
  ?>
  </body></html>



файл auth.php (проверка на авторизованность, для доступа к запароленной части сайта):
Код

<?
  require "db.php";
  /* убиваем переменную user, чтобы нельзя было, нарисовав форму, отправить данные 
  в post-запросе. */
  unset($user);
  // флаг "ошибка сессии" - если он включён, работа прекратится.
  $session_error=false;
  // если не существует куки с идентификатором сессии, поднять флаг
  if(!isset($_COOKIE[session_name()]))
  {
    $session_error=true;
  }
  // если существует, запускаем механизм сессий и регистрируем переменную $user.
  else 
  {
    session_start();
    session_register("user");
    
    /* если случайно в массиве нет логина и пароля, работа тоже прекращается ("ничего 
    не знаем, мы вам их давали") */
    if(!isset($user['login'])||!isset($user['pass']))
    {
      $session_error=true;
    }
  }
  /* если пользователю до сих пор удалось геройски избежать ошибок, делается проверка 
  через базу так же, как и на входе. */
  if(!$session_error) 
  {
    $q=mysql_query("select * from users where login='".$user['login']."' and pass='".$user['pass']."';");
    if (mysql_error())
    {
      die(mysql_error());
    }
    if(mysql_num_rows($q)!=1)
    {
      $session_error=true;
    }
    unset($q);
  }

  // если была какая-то ошибка, то
  if($session_error) 
  {
    // уничтожаем данные сессии
    session_destroy();
    // уничтожаем куку, если она была
    if(!isset($_COOKIE[session_name()]))
    {
      setcookie(session_name(),"","");
    }
    // отправляем пользователя на вход, с возможностью вернуться на запрошенный адрес 
    header("Location: login.php");
    // прекращаем работу
    exit();
  }
  mysql_close();
?>


запароленный файл index.php:
Код

<?
  include("auth.php");
?>
<html>
<head><title>!!!</title></head>
<body>
Здравствуйте, <?=$user['login']?>!<br><br>
<a href="logout.php">LogOut</a>
</body>
</html>


ну и выход logout.php:
Код

<?
  if(isset($_COOKIE[session_name()])) 
  {
    // запуск механизма сессий
    session_start();
    // удаление файла
    session_destroy();
    // удаление куки
    setcookie(session_name(),"",time()-3600);
  }
  // выход со страницы
  header("Location: login.php");
?>


Вот... 
Проблема заключается в том что, скрипт (login.php) не дает авторизоваться второй раз (после выхода logout.php) и пишет ошибку:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by

Подскажите пожалуйста в чем может быть проблема? При первой авторизации проблем не возникает.
PM MAIL   Вверх
comcon1
Дата 10.10.2007, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

Репутация: нет
Всего: 17



Сделай logout.php так:
Код

<?
  if(isset($_COOKIE[session_name()])) 
  {
    session_start();
    session_destroy();
    setcookie(session_name(),"",time()-3600);
  } ?>
<html>
<head>
<menta http-equiv="refresh" content="1; login.php">
<title>Logout page</title>
<body>
Wait for 1 seconds
</body>
</html>

у тебя хедер послался, так после этого session_start уже нельзя делать))

Это сообщение отредактировал(а) comcon1 - 10.10.2007, 19:59


--------------------
PM MAIL   Вверх
kentnsk
Дата 10.10.2007, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 10.10.2007

Репутация: нет
Всего: нет



Тогда получается, что и в файле login.php надо header заменить? так как в файле auth.php тоже стоит session_start() ??
PM MAIL   Вверх
kentnsk
Дата 10.10.2007, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 10.10.2007

Репутация: нет
Всего: нет



Заменил в файле login.php :
Код

//......
if($k==0)
    {
      session_start();
      setcookie(session_name(),session_id(),7200);
      $user['login']=mysql_result($q,0,'login');
      $user['pass']=mysql_result($q,0,'pass');
      // запоминаем данные о пользователе
      session_register("user");
      unset($q);
      mysql_close();
      ?>
      <html>
        <head>
          <meta http-equiv="refresh" content="1; index.php">
          <title>Login page</title>
        </head>
        <body>
          Wait for 1 seconds
        </body>
      </html>
      <?
      //header("Location: index.php");
      exit();
    }
//......


Теперь вообще при попытке зайти перекидывает обратно на login.php, пишет Wait for 1 seconds, хотя должен же на index.php ??

Добавлено через 7 минут и 53 секунды
В браузере Опера перекидывает нормально, но при загрузке index.php опять пишет ошибку:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by
 smile 
PM MAIL   Вверх
comcon1
Дата 10.10.2007, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

Репутация: нет
Всего: 17



выкидывает в логин - значит ошибка в auth.php, там же у тебя есть header: login.php, если плохо авторизуеццо.
там тоже исправь с метой. Вот весь готовый код клади и будем разбираться дальше. работай.


--------------------
PM MAIL   Вверх
kentnsk
Дата 10.10.2007, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 10.10.2007

Репутация: нет
Всего: нет



Файл login.php получился следующего содержания:
Код

<?
  $k=0;

  if(isset($_POST['enter']))
  {
    require "db.php";

    $login=trim($_POST['login']);
    $pass=trim($_POST['pass']);
    
    $q=mysql_query("select * from users where login='$login' and pass='".md5($pass)."';");
    if (mysql_error())
    {
      die(mysql_error());
    }
    if(mysql_num_rows($q)!=1)
    {
      $error[$k]=1;
      $k++;
    }
    
    if(!ereg("^[0-9a-z_]{4,20}$",$login))
    {
      $error[$k]=2;
      $k++;
    }
    if(!ereg("^[0-9a-zA-Z]{5,20}$",$pass))
    {
      $error[$k]=3;
      $k++;
    }

    if($k==0)
    {
      session_start();
      setcookie(session_name(),session_id(),7200);
      $user['login']=mysql_result($q,0,'login');
      $user['pass']=mysql_result($q,0,'pass');
      // запоминаем данные о пользователе
      session_register("user");
      unset($q);
      mysql_close();
      ?>
      <html>
        <head>
          <meta http-equiv="refresh" content="1; index.php">
          <title>Login page</title>
        </head>
        <body>
          Wait for 1 seconds
        </body>
      </html>
      <?
      //header("Location: index.php");
      exit();
    }
    else
    {
      if (isset($_COOKIE[session_name()]))
      {
        setcookie(session_name());
      }
    }
  }

  if((!isset($_POST['enter']))||(isset($_POST['enter'])&&$k!=0))
  {
    ?>
    <html>
    <head>
    <title>Авторизация</title>
    </head>
    <body>       
    <h1>Авторизация:</h1><br>
    <?
    for($i=0;$i<$k;$i++)
    {
    switch($error[$i])
    {
        case '1':
            $error[$i]=0;
            echo "<b><br>Не правильно введен логин или пароль!</b>";
            break;
        case '2':
            $error[$i]=0;
            echo "<b><br>Неправильно введен логин!</b>";
            break;
        case '3':
            $error[$i]=0;
            echo "<b><br>Неправильно введен пароль!</b>";
            break;
    }
    }
    ?>    
    <form action="login.php" method=post>
      <table width="500" border="0">
        <tr>  
          <td width="250">
            >> Логин*:
          </td>
          <td width="250" valign="left">
            <input type=text name="login" style="width:250px;">
          </td>
        </tr>
        <tr>
          <td width="250">
            >> Пароль*:
          </td>
          <td width="250" valign="left">
            <input type=password name="pass" style="width:250px;">
          </td>
        </tr>
      </table>       
      <table width="500" border="0">
        <tr>
          <td width="500" colspan=2 align="center">
            <input type=submit name="enter" value="Войти">
          </td>
        </tr>
      </table>
    </form>
    <?
  }
  ?>
  </body></html>


После ввода логина/пасса выдается следующее:
Warning: session_start() [function.session-start]: The session id contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in /login.php on line 35

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent  in /login.php on line 35

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent in /login.php on line 35

Warning: Cannot modify header information - headers already sent in /login.php on line 36
Wait for 1 seconds

после чего спустя секунду перекидывает на index.php:
Код

<?
  include("auth.php");
?>
<html>
<head><title>!!!</title></head>
<body>
Здравствуйте, <?=$user['login']?>!<br><br>
<a href="logout.php">LogOut</a>
</body>
</html>


auth.php
Код

<?
  require "db.php";
  /* убиваем переменную user, чтобы нельзя было, нарисовав форму, отправить данные 
  в post-запросе. */
  unset($user);
  // флаг "ошибка сессии" - если он включён, работа прекратится.
  $session_error=false;
  // если не существует куки с идентификатором сессии, поднять флаг
  if(!isset($_COOKIE[session_name()]))
  {
    $session_error=true;
  }
  // если существует, запускаем механизм сессий и регистрируем переменную $user.
  else 
  {
    session_start();
    session_register("user");
    
    /* если случайно в массиве нет логина и пароля, работа тоже прекращается ("ничего 
    не знаем, мы вам их давали") */
    if(!isset($user['login'])||!isset($user['pass']))
    {
      $session_error=true;
    }
  }
  /* если пользователю до сих пор удалось геройски избежать ошибок, делается проверка 
  через базу так же, как и на входе. */
  if(!$session_error) 
  {
    $q=mysql_query("select * from users where login='".$user['login']."' and pass='".$user['pass']."';");
    if (mysql_error())
    {
      die(mysql_error());
    }
    if(mysql_num_rows($q)!=1)
    {
      $session_error=true;
    }
    unset($q);
  }

  // если была какая-то ошибка, то
  if($session_error) 
  {
    // уничтожаем данные сессии
    session_destroy();
    // уничтожаем куку, если она была
    if(!isset($_COOKIE[session_name()]))
    {
      setcookie(session_name(),"","");
    }
    // отправляем пользователя на вход, с возможностью вернуться на запрошенный адрес 
    ?>
      <html>
        <head>
          <meta http-equiv="refresh" content="1; login.php">
          <title>Auth page</title>
        </head>
        <body>
          Wait for 1 seconds
        </body>
      </html>
    <?
    //header("Location: login.php");
    // прекращаем работу
    exit();
  }
  mysql_close();
?>


и видим следующие ошибки:
Warning: session_start() [function.session-start]: The session id contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in auth.php on line 16

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent in /auth.php on line 16

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent in /auth.php on line 16
Wait for 1 seconds

Опять же ждем 1 секунду и попадаем обратно на login.php, прямо по кругу ходим..((
PM MAIL   Вверх
comcon1
Дата 11.10.2007, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

Репутация: нет
Всего: 17



Цитата(kentnsk @  10.10.2007,  21:20 Найти цитируемый пост)
Warning: session_start() [function.session-start]: The session id contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in /login.php on line 35

Блин, вот бред. Слухай, я всегда session_start(); первой строкой в PHP-файле делаю... Это гарантированно избавляет от ошибок типа
Цитата

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent  in /login.php on line 35


 Вот смотри мой login.php. На моем рабочем сайте, попробуй разберись. Я чо-т в твоем уже нихрена не понимаю. Пока сделай везде session_start() в начале файла. Кол-во ошибок уменьшится, попробуем поразбираться дальше. Просто щас надо качать твои файлы, устанавливать их себе и играться, я сейчас не могу это себе позволить.

Код

<?
session_start();
ob_start(); ?>
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-5"> 
<META http-equiv="Content-Script-Type" content="text/javascript">
<META http-equiv="Content-Style-Type" content="text/css">

<LINK rel="stylesheet" href="style/bottom_common.css" >
<LINK rel="stylesheet" href="style/jlist_common.css" >
<LINK rel="stylesheet" href="style/login.css" >

</head>
<? 
 require('include/config.inc.php');
 require('include/sql.lib.php');
 
 $sql_ins = new SQL();
 $sql_ins->select_db('genebee-journ');

# Authentification :)
 if ($_SERVER['REQUEST_METHOD'] == 'POST') {
     if ( ! isset($_POST['login']) ) {
      $ERROR = "<div class='error'>The field 'login' is required.</div>";
      echo "<body>";
     } else {
       $sql_ins->do_query('SELECT * FROM `users` WHERE login = \'' . $_POST['login'] . '\';');
       if ( $sql_ins->return_num_rows() != 1)  {
          $ERROR = "<div class='error'>Bad password for login '". $_POST['login'] . "'.</div>";
        echo "<body>";
       } else {
           $data_1 = array();
           $sql_ins->return_next_row($data_1);
           $sql_ins->close_query();
//           echo "<| " . md5($_POST['password']) . " |><br>";
           if ( md5($_POST['password']) != $data_1['shadow'] ) {
            $ERROR = "<div class='error'>Bad password for login '". $_POST['login'] . "'.</div>";
              echo "<body>";
           } else {
            if ( $data_1['keyword'] != '' ) {
            $sql_right = new SQL_ADM();
                $sql_right->select_db('genebee-journ');           
                $sql_right->do_query('UPDATE `users` SET `keyword`=\'\' WHERE login = \'' . $_POST['login'] . '\';');
                $sql_right->close_query();
            # it's nessesary to use CRON for clean up database...
            /*
            $ERROR = "<div class='error'>User '". $_POST['login'] . "' is already logged in from another computer.</div>";
              echo "<body>";
              */
            } 
            srand(time());
            $random_phraze = "Kju" . mt_rand(1, 10000)  . "Ku" . time();
            
            setcookie("name", $_POST['login']);
            setcookie("shadow", md5($_POST['password']));
            setcookie("phraze", $random_phraze);
            $_SESSION['name'] = $_POST['login'];

                $sql_ins->do_query('UPDATE `users` SET `keyword` = \'' . $random_phraze . '\' WHERE `login` = \'' . $_POST['login'] . '\';');
                
            // reload page into the very top :)
            echo "<body onload=\"top.location = 'index.php';\">";
           } // check password 
       } // check login     
     } // check form fill
 } // check POST method
 
 // CLEAR COOKIES
 if ($_SERVER['REQUEST_METHOD'] == 'GET') {
    if (isset($_GET['out']) and ($_GET['out'] == 1)) {
        // delete phraze parameter from database
        $sql_ins->do_query("UPDATE `users` SET `keyword` = NULL WHERE `login` = '".$_COOKIE['name']."';");
        setcookie("name", $_COOKIE['name'], time() - 3600);
        setcookie("shadow", $_COOKIE['shadow'], time() - 3600);
        setcookie("phraze", $_COOKIE['phraze'], time() - 3600);
        unset($_SESSION['name']);
            echo "<body onload=\"top.location = 'index.php';\">";
        }
 }
?>
<table height=100% width=100%>
<tr>
<td style="background: url('img/left_bg.jpg') repeat-y; padding-left: 35px; 
    vertical-align: top; text-align: center; " >
<!-- MAIN UNIQUE FRAME (START) -->
<? 
 ob_end_flush();
 if ($_SERVER['REQUEST_METHOD'] == 'POST'):
   if ( isset($ERROR) ): 
    echo "<br><br>".$ERROR;
    echo "<br>\n<a href=\"login.php?login=".$_POST['login']."\">Try again</a>";
   elseif (isset($_GET['out'])):
     echo "Wait..."; // something temporary
   endif;
 else: ?>
<form action="<?=$_SERVER['PHP_SELF']?>" method="POST" id="frmLOG" name="frmLOG"
 >
 <div>
 <div style="text-align: left; font-family: Verdana; font-size: 16px; font-weight: 800;">
  User authorization
 </div>
  <div>
   <label for="txtLogin">Login</label>
   <input type="text" name="login" id="txtlogin" value="<?= (isset($_GET['login'])) ? $_GET['login'] : "";?>">
   <label for="txtPwd">Password</label>
   <input type="password" name="password" id="txtpassword">
   <input type="checkbox" id="chkSave" name="saveLogin" value="no-save"
                <? if ( isset($_POST['saveLogin']) and $no_save ) { echo "checked"; } ?> >
   <label for="chkSave" id="lblSave">Don't save login</label>
  </div>
  <!-- input type="submit" value="Log in" id="btnSubmit" -->
  </div>
  <input type="reset" title="Clear all data" value="Reset" style="background: orange;">
  <input type="submit" title="Try to authorize" value="Login" style="background: orange; font-size: 14px;">
</form>
<?endif; ?>
<!-- MAIN UNIQUE FRAME (END) -->
</td>
</tr>
<tr>
<? 
 $links =  array(1 => array('value' => 'JCatalog', 'href' => 'index.php', 'plus' => 'target="_top"'),
                 2 => array('value' => 'Start', 'href' => 'start.php', 'plus' => ''),
                 3 => array('value' => 'Login', 'href' => 'login.php', 'plus' => ''),
                 );
 $smarty->assign('items', $links);
 $smarty->display('sb.tpl');
?>
</tr>
</table>
</body>
</html>


Это сообщение отредактировал(а) comcon1 - 11.10.2007, 00:30


--------------------
PM MAIL   Вверх
kentnsk
Дата 11.10.2007, 08:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 10.10.2007

Репутация: нет
Всего: нет



Перенес session_start() в начало файлов, ошибка не разрешилась....

При входе с другого компьютера авторизация и выход проходили без ошибок (тестировал несколько раз), но при попытке ввести не верный лог/пасс, скрипт грамотно обработал входные данные и не пустил зайти, следом ввел правильные логг/пасс и опять скрипт показал ошибки:

Warning: session_start() [function.session-start]: The session id contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in /login.php on line 35

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent  in /login.php on line 35

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent in /login.php on line 35

Warning: Cannot modify header information - headers already sent in /login.php on line 36
Wait for 1 seconds


HELP!  smile 
PM MAIL   Вверх
comcon1
Дата 11.10.2007, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

Репутация: нет
Всего: 17



Слухай, у меня такое ощущение, что устанавливая куки с именем session_name() равное session_id() ты делаешь имя сессии состоящим из одних цифр. Это нельзя. Делай время жизни сессии командой:
session_set_cookie_params
- переделай и скажи, чо вышло)
А вообще вот еще есть баг, но навряд ли это к тебе.
PHP bug в тему
посмотри, мож у тебя это??
там вот такой код выдавал твою ошибку...
Код

<?php
ob_start();
//setcookie('session_cookie', gzcompress('ä#+´!')); //just call once

session_name('session_cookie');
session_start();
echo 'test = ',$_SESSION['test'];
$_SESSION['test']='foo';

ob_end_flush();

?>



Это сообщение отредактировал(а) comcon1 - 11.10.2007, 09:57


--------------------
PM MAIL   Вверх
kentnsk
Дата 11.10.2007, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 10.10.2007

Репутация: нет
Всего: нет



Самое интересное что в браузере Opera все работает замечательно, а в IE выдаются ошибки((

echo session_name(); выдает PHPSESSID

пробовал session_name("SID"); 

setcookie(session_name()); или setcookie("SID"); 
все равно ошибки остаются
PM MAIL   Вверх
kentnsk
Дата 11.10.2007, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 10.10.2007

Репутация: нет
Всего: нет



Поставил:

      session_set_cookie_params(time()+7200);
      session_start();
      setcookie(session_name(),session_id());

Теперь и в IE все работает!)))

Огромное спасибо comcon1!!
PM MAIL   Вверх
anti_snayper
Дата 11.10.2007, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 13.2.2007

Репутация: нет
Всего: нет



У меня нечто подобное.
Допустим я авторизируюсь на странице
http://localhost/..../history.php?id_grypi=1&id_menu=1
после входа он меня кидает на  http://localhost/..../history.php А т.к. вксь сайт динамический, то вся страница сплошь в ошибках.
вот часть кода:
Код

<?php
session_start();
?>
...........
<?php
    include_once("auhtorization.php");
    $php_self = $_SERVER['PHP_SELF'];
    $regstr = "
           <FORM action=\"{$php_self}\" method=\"post\" border=5>
           <TABLE>
                <COL align=\"right\"> <COL align=\"left\">
                 <TR>
                        <TD>логин:</TD>
                        <TD><INPUT type=\"text\" name=\"user\" value=\"\"></TD>
                </TR>
         <TR>
               <TD>пароль:</TD>
               <TD><INPUT type=\"password\" name=\"pass\" value=\"\"></TD>
        </TR>
        <TR>
                 <TD colspan = 2><INPUT type=\"submit\" name=\"submit\" value=\"Войти\"></TD>
       </TR>
    </TABLE>
     </FORM>";
echo($regstr);
?>
 

а это auhtorization.php
Код

...........
<?php
// булева переменная $vhod определяет был произведен вход или нет
if ($vhod) {
    $_SESSION["username"] = $user;
            if (isset($_GET["url"]))
              {
         $url = $_GET["url"];  
               }
    else
               {
                  $url = "index.php";
      }
                      if (!isset($_COOKIE[session_name()])) 
                           {
               if (strstr($url,"?"))
                                   {
                header('Location: ' . $url . "&" . session_name() . "=". session_id());  
                                   }
               else  
                                   {
               header('Location: ' . $url . "?" . session_name() . "=" . session_id());  
                                   }
          }
              else
                          {
                                header('Location: ' . $url);
                           }
   }
}
?>

нужно чтобы после входа, пользователь перенаправлялся либо index.php
либо оставался на этой же странице но параметры передаваемые через GET не исчезали.
в чем ошибка может кто-нить подсказать?


Это сообщение отредактировал(а) anti_snayper - 11.10.2007, 19:19
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0572 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.