Оцените авторизацию

blam

Новичок
Оцените авторизацию

Может баги какие есть...
PHP:
<?  session_start();  
// echo session_id();   
include ("config.php");
$login_err=""; 
  if (isset($_POST['submit']))   
{    
	if ($_COOKIE [session_name()]!=session_id() )    	
{$login_err .= "У вас отключены cookies в браузере<br>\n"; }

   	if ( !isset($_POST['pass']) || $_POST['pass']!=$psw )   	
  {$login_err .= "Неверный пароль<br>\n";}  	

      // есть ли ошибки...  	
        if ($login_err!="") {echo  $login_err;  
           } else {
               $_SESSION['login']=1;  	
          echo' Вы авторизированы. 
            <a href="/index.php">продолжить...</a>';   
             }  
}   else{   echo '
<form name="" method="post" action="/auth.php">
	  <input type="text" name="ps" size="20"><br>
 <center> 
	<input type="submit" name="submit" value="login">
	  <input type="reset" name="submit" value="reset">
	</center>
	  </form>' ;  }
?>
 

chisto_tolyan

Враг народа
А зачем выводить session_id()?)
И откуда берется пароль юзера($psw)
А вообще-то на эту тему уже куча материалов, как в факах так и на полях форума...поиск рулит)
 

dorfey

Guest
А где проверка того что ввел юзер в виде логина и пароля.

ps. "садись, два" (c) :D
 

chisto_tolyan

Враг народа
dorfey
А, конкретно в этом коде, какая разница, что ввел пользователь?)Эти данные ведь ни в каких запросах не участвуют и никуда не сохраняютса...просто сравнение..а, вообщет код малость кастрирован.8)
 

Фанат

oncle terrible
Команда форума
blam
скажи, ты понимаешь принципы оформления кода?
К примеру - когда надо делать отступ?
 

blam

Новичок
chisto_tolyan
А зачем выводить session_id()?)
это отладка, забыл убрать
dorfey
А где проверка того что ввел юзер в виде логина и пароля.
PHP:
   if ( !isset($_POST['pass']) || $_POST['pass']!=$psw )            {$login_err .= "Неверный пароль<br>\n";}
chisto_tolyan
Код действительно несколько урезан, но основное есть.
дополнил его немного

-~{}~ 30.09.05 12:48:

Фанат
скажи, ты понимаешь принципы оформления кода? К примеру - когда надо делать отступ?
Пока нет, где посмотреть эти принципы
 

Фанат

oncle terrible
Команда форума
я бы сделал, скорее, так:
PHP:
<?   
$login_err=""; 
if (isset($_POST['submit'])) {     
  if (empty($_COOKIE['check']))
    $login_err .= "У вас отключены cookies в браузере<br>\n";
  if ( !isset($_POST['pass']) || $_POST['pass']!=$psw ) 
    $login_err .= "Неверный пароль<br>\n"; 
  if (!$login_err) {
    session_start();
    $_SESSION['login']=1;       
    echo' Вы авторизированы. <a href="/index.php">продолжить...</a>';
    exit;
  }
}
setcookie('check',1);
echo $login_err;   
echo $login_form  ;  
?>
 

SiMM

Новичок
Ну отключены куки в браузере - ну и что? Для работы сессий они вовсе не обязательны.
 

Фанат

oncle terrible
Команда форума
blam
основной принцип при написании кода - оступы пишутся не от балды, а равноправные участки кода пишутся с ОДИНАКОВЫМИ отступами.
К примеру:
у тебя есть блок if
все вложенные в блок операторы пишутся с отступом. и при этом пишутся с ОДИНАКОВЫМ отступом.
PHP:
if (1==1) {
  operator();
  operator();
  operator();
}
если один оператор вложен в другой - всё повторяется.

PHP:
while($a < $b) {
  op();
  if (1==1) {
    operator();
    operator();
    operator();
  }
  op();
  op();
}
-~{}~ 30.09.05 10:56:

зачем выводить форму эхом?
выводи просто как хтмл.
 

chisto_tolyan

Враг народа
http://dev.nucleuscms.org/item/101/catid/17
вот для примеру, а вообще в гугл с запросом coding standart.
А насчет твоей проверки данных пользователя - их надо бы еще проверять и на корректность, чтоб вася пупкин не вводил всякие гадости типа SELECT UNION вместо логина)
 

Фанат

oncle terrible
Команда форума
chisto_tolyan
и что здесь случится, если юзер введёт всякие гадости типа SELECT UNION вместо логина?

-~{}~ 30.09.05 11:04:

blam
и выровняй свой код.
понят, что там происходит - ну совершенно невозможно
 

chisto_tolyan

Враг народа
Фанат
я ведь говорил, что именно здесь ничего, а вообще если выбирать пасс из БД, то может что-то и случится, если вставлять логин прям из гета
 

blam

Новичок
начнем попорядку...
Фанат
я бы сделал, скорее, так:
это почти мой первый вариант, тока более логичный его и буду использовать. эхом не вывожу, для простоты написал
принципы программирования понял спасибо
SiMM
Ну отключены куки в браузере - ну и что? Для работы сессий они вовсе не обязательны.
session.use_trans_sid = off , как тогда вести сессиию ? базы то нет.
chisto_tolyan
то может что-то и случится, если вставлять логин прям из гета а что будет, никак не пойму ?

В общем больших косяков нет, это радует ;)
ps и еще, что обозначают записи типа:
~{}~ 30.09.05 12:48:
 

blam

Новичок
chisto_tolyan
понятно

вобщем вопросов по этой теме пока больше нет
 

SiMM

Новичок
> session.use_trans_sid = off , как тогда вести сессиию ? базы то нет.
Очень просто. session.use_trans_sid надо просто ВКЛЮЧИТЬ.
 

Фанат

oncle terrible
Команда форума
blam
несколько очень важных замечаний.
Во-первых.
ты поступил ОЧЕНЬ дурно.
В следующий раз за такое поведение тебя вытолкают взашей без разговоров.
Мало того, что ты нарушил правила форума - но ты просто поступил подло по отношению к людям, которые решили помочь тебе.
НИКОГДА, слышишь, никогда не вываливай на форум какую-то обрезанную поделку вместо РЕАЛЬНОГО кода.
Ты просил оценить код. после этого ты пять раз говоришь, что на самом деле всё было не так. Ну и какой смысл тогда было вообще оценивать?
постарайся в будущем привозить здесь РЕАЛЬНЫЙ код.

Во-вторых.
session.use_trans_sid = off , как тогда вести сессиию ? базы то нет.
судя по последним трём словам, у тебя просто чудовищная каша в голове и ты абсолютно не понимаешь, что такое сессии.
Поясни, как бы ты обошёлся, если бы база была.
А я тебе объясню, что ты не понимаешь.

-~{}~ 01.10.05 10:17:

chisto_tolyan, ты чисто ЗАПАРИЛ писать не в тему.
 

blam

Новичок
Фанат
учту твои замечания

session.use_trans_sid насколько понял разрешает php принимать сессию через url, те get запрос

если была база, то через куки можно идентифицировать
сравниваем login pass в куках с login pass в базе, примерно так

сессия- сеанс пользователя , id и name сессии пишутся в куках(например), а на сервере храняться данные для этой сессии (> 1440 сек с последнего обращения).
Если браузер передал в заголовках name, id сессии и она есть на сервере, то сеанс продолжается.

что не так ?
каша некоторая есть, варю потихоньку )
 

Фанат

oncle terrible
Команда форума
если была база, то через куки можно идентифицировать
сравниваем login pass в куках с login pass в базе, примерно так
а зачем? зачем что-то писать в куки и сравнивать потом с базой, если у тебя и так есть сессия?
на сервере храняться данные для этой сессии
ну вот.
всё правильно ты понимаешь.
браузер передал id сессии , ты в сессии посмотрел, что юзер авторизован - и пускаешь.
зачем ещё какие-то куки с базой и чего они добавят такого, чего у тебя нет?
а, главное, каким образом куки с базой заменят session.use_trans_sid = off ???

может быть, проблема здесь:
Если браузер передал в заголовках name, id сессии
о каких заголовках речь?
 

blam

Новичок
Автор оригинала: Фанат
а зачем? зачем что-то писать в куки и сравнивать потом с базой, если у тебя и так есть сессия?
ну это теоретически
ну вот.
всё правильно ты понимаешь.
браузер передал id сессии , ты в сессии посмотрел, что юзер авторизован - и пускаешь.
зачем ещё какие-то куки с базой и чего они добавят такого, чего у тебя нет?
а, главное, каким образом куки с базой заменят session.use_trans_sid = off ???
ну в общем сессия намного удобнее думаю, да и с куками пока не сталкивался, не знаю. Куки ведь дольше могут жить один +.
может быть, проблема здесь:

о каких заголовках речь?
вот с форума:
Cookie: bblastvisit=112819811; bbuserid=17053; bbpassword=b4d61a394930d6830b00d690418f14d;
sessionhash=f906d5c3828122703f600345e8acd06
 
Сверху