ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Логинка. php.
  #1  
Старый 01.11.2008, 21:44
Аватар для Ru}{eeZ
Ru}{eeZ
Постоянный
Регистрация: 19.02.2008
Сообщений: 438
Провел на форуме:
956872

Репутация: 186
Отправить сообщение для Ru}{eeZ с помощью ICQ
По умолчанию Логинка. php.

Пишу логинку:
PHP код:
<?php

$f 
file("base.php");
print 
$f[0] . "and " $f[1];
foreach(
$f as $d) {
  
$d trim($d);
  list(
$user$pass) = split(":"$d);
}

if(isset(
$login) && isset($password)) {
  if(
$login == $user && $password == $pass) {
    print 
"Вошли";
  } else {
    print 
"Неправильный логин или пароль";
  }
} else {
print <<<HERE
<form method = "post">
Логин: <input type = "text" name = "login"><br />
Пароль: <input type = "text" name = "password"><br />
<input type = "submit" value = "Вход">
</form>

HERE;

}

?>
base.php:
Код:
user:coolpass
luzer:badpass

Почему логинится только по последней строчке?
п.с. спс))
 
Ответить с цитированием

  #2  
Старый 01.11.2008, 22:02
Аватар для mr.The
mr.The
Познавший АНТИЧАТ
Регистрация: 30.04.2007
Сообщений: 1,206
Провел на форуме:
4778940

Репутация: 1257


Отправить сообщение для mr.The с помощью ICQ
По умолчанию

$user, $pass
перезаписываються при каждом split(). нужно сделать примерно так:
PHP код:
foreach($f as $d) { 
  
$d trim($d); 
  list(
$user$pass) = split(":"$d); 

 if(
$login == $user && $password == $pass) { 
    print 
"Вошли"
    exit;
  } else { 
    print 
"Неправильный логин или пароль"
    exit;
  }

хотя это тоже не самый оптимальный вариант.

Последний раз редактировалось mr.The; 01.11.2008 в 22:05..
 
Ответить с цитированием

  #3  
Старый 01.11.2008, 22:03
Аватар для eLWAux
eLWAux
Members of Antichat - Level 5
Регистрация: 15.06.2008
Сообщений: 941
Провел на форуме:
5111568

Репутация: 2399


Отправить сообщение для eLWAux с помощью ICQ
По умолчанию

делай:
Код:
user:coolpass:
luzer:badpass:
и все будет окей)

у меня такая же проблемма била)
просто ти не учитаваеш символа переноса..
user:coolpass<перенос>
и тебе дает пароль:
coolpass<перенос>
вот и несходитса)
 
Ответить с цитированием

  #4  
Старый 01.11.2008, 22:16
Аватар для d_x
d_x
Reservists Of Antichat - Level 6
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме:
4137635

Репутация: 2407


По умолчанию

mr.The, при первом же неправильном логине и пассе твой скрипт выйдет просто из выполнения, не проверив все.

eLWAux, ты сам пробовал так?) В исходном коде вообще-то trim используется, чтобы переносы убрать, и проблема не в этом.

PHP код:
<?php
$login
=isset($_POST['login']) && !is_array($_POST['login']) ? $_POST['login'] : '';
$pass=isset($_POST['pass']) && !is_array($_POST['pass']) ? $_POST['pass'] : '';
if(
strlen($login)>&& strlen($password)>0

  
$f array_map('rtrim',file("base.php")); 

  foreach(
$f as $d
  { 
    
$tmp=explode(':'$d); 

    if(
$login === $tmp[0] && $password === $tmp[1]) 
      die(
"Вошли"); 
  } 

  die(
'Неправильный логин или пароль.'); 



print <<<HERE
<form method = "post"> 
Логин: <input type = "text" name = "login"><br /> 
Пароль: <input type = "text" name = "password"><br /> 
<input type = "submit" value = "Вход"> 
</form> 
HERE;
?>

Последний раз редактировалось d_x; 01.11.2008 в 22:22..
 
Ответить с цитированием

  #5  
Старый 01.11.2008, 22:26
Аватар для mr.The
mr.The
Познавший АНТИЧАТ
Регистрация: 30.04.2007
Сообщений: 1,206
Провел на форуме:
4778940

Репутация: 1257


Отправить сообщение для mr.The с помощью ICQ
По умолчанию

Цитата:
mr.The, при первом же неправильном логине и пассе твой скрипт выйдет просто из выполнения, не проверив все.
ээ... фак. как-то я этот момент пропустил. там можно флаг устанавливать при логине. и потом, после цикла проверять..
 
Ответить с цитированием

  #6  
Старый 01.11.2008, 22:31
Аватар для [Raz0r]
[Raz0r]
Members of Antichat - Level 5
Регистрация: 25.02.2007
Сообщений: 495
Провел на форуме:
3244717

Репутация: 1980
Отправить сообщение для [Raz0r] с помощью ICQ
По умолчанию

тот же код =)
PHP код:
<?php
$f 
array_map('trim',file("base.php"));
if(
in_array($f,"{$login}:{$password}")) die("Вошли");
else die(
'Неправильный логин или пароль.');
?>

Последний раз редактировалось [Raz0r]; 01.11.2008 в 22:33..
 
Ответить с цитированием

  #7  
Старый 01.11.2008, 22:35
Аватар для DDoSька
DDoSька
Постоянный
Регистрация: 05.05.2008
Сообщений: 403
Провел на форуме:
2375039

Репутация: 1160
Отправить сообщение для DDoSька с помощью ICQ
По умолчанию

Цитата:
Сообщение от [Raz0r]  
тот же код =)
PHP код:
<?php
$f 
array_map('trim',file("base.php"));
if(
in_array($f,"{$login}:{$password}")) die("Вошли");
else die(
'Неправильный логин или пароль.');
?>
Ты прав, но если обрезать 80 процентов от скрипта(не считать IF и форму)
 
Ответить с цитированием

  #8  
Старый 02.11.2008, 02:28
Аватар для eLWAux
eLWAux
Members of Antichat - Level 5
Регистрация: 15.06.2008
Сообщений: 941
Провел на форуме:
5111568

Репутация: 2399


Отправить сообщение для eLWAux с помощью ICQ
По умолчанию

PHP код:
<? $login='admin';
$pass='adminpass';
$f=file('base.php');
for (
$i=0$i<count($f); $i++)
$a=explode(':',$f[$i]);
 if (
$a[1]==$login && $a[2]==$pass)
 { die(
'yeee'); }
 else
 { die(
'fak('); }
base.php:
Код:
:test:pass:
:admin:adminpass:
:xaxa:xaxaxaax:
:eLWAux:admin:
пробуй..
 
Ответить с цитированием

  #9  
Старый 02.11.2008, 12:28
Аватар для Ru}{eeZ
Ru}{eeZ
Постоянный
Регистрация: 19.02.2008
Сообщений: 438
Провел на форуме:
956872

Репутация: 186
Отправить сообщение для Ru}{eeZ с помощью ICQ
По умолчанию

Ну вот я сделал такую байду:

PHP код:
<?php

$f 
file('base.php');

if(isset(
$login) && isset($password)) {
  foreach(
$f as $d) {
    
$d trim($d);
    list(
$user$pass) = split(":"$d);
    if(
$login == $user && $password == $pass) {
      die(
'Вошли');
    }
  }
    print 
"Неправильный логин или пароль";



} else {
print <<<HERE
<form method = "post">
Логин: <input type = "text" name = "login"><br />
Пароль: <input type = "text" name = "password"><br />
<input type = "submit" value = "Вход">
</form>

HERE;

}
print 
"ы";

?>
Но блин, если использовать die(), то мы завершаем скрипт и остальная часть страницы не выполняется (сдесь это "ы" ), без завршения как-нибудь можно обойтись?
 
Ответить с цитированием

  #10  
Старый 02.11.2008, 13:15
Аватар для Spyder
Spyder
Members of Antichat - Level 5
Регистрация: 09.10.2006
Сообщений: 1,698
Провел на форуме:
9098076

Репутация: 4303


По умолчанию

вот кто нить напрямую обратиться к base.php и вся ваша хэк логинка летит мимо
Делай тогда с .htaccess'ом, а то бред)
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books PHP FRAGNATIC PHP, PERL, MySQL, JavaScript 186 21.02.2010 02:41
Что такое Php? PAPA212 Болталка 13 28.12.2007 20:44
Безопасность в Php, Часть Iii k00p3r Чужие Статьи 0 11.07.2005 19:02
Защищаем Php. Шаг за шагом. k00p3r Чужие Статьи 0 13.06.2005 11:31



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ