Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

01.11.2008, 21:44
|
|
Постоянный
Регистрация: 19.02.2008
Сообщений: 438
Провел на форуме: 956872
Репутация:
186
|
|
Логинка. 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
Почему логинится только по последней строчке?
п.с. спс))
|
|
|

01.11.2008, 22:02
|
|
Познавший АНТИЧАТ
Регистрация: 30.04.2007
Сообщений: 1,206
Провел на форуме: 4778940
Репутация:
1257
|
|
$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..
|
|
|

01.11.2008, 22:03
|
|
Members of Antichat - Level 5
Регистрация: 15.06.2008
Сообщений: 941
Провел на форуме: 5111568
Репутация:
2399
|
|
делай:
Код:
user:coolpass:
luzer:badpass:
и все будет окей)
у меня такая же проблемма била)
просто ти не учитаваеш символа переноса..
user:coolpass<перенос>
и тебе дает пароль:
coolpass<перенос>
вот и несходитса)
|
|
|

01.11.2008, 22:16
|
|
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)>0 && 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..
|
|
|

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

01.11.2008, 22:31
|
|
Members of Antichat - Level 5
Регистрация: 25.02.2007
Сообщений: 495
Провел на форуме: 3244717
Репутация:
1980
|
|
тот же код =)
PHP код:
<?php
$f = array_map('trim',file("base.php"));
if(in_array($f,"{$login}:{$password}")) die("Вошли");
else die('Неправильный логин или пароль.');
?>
Последний раз редактировалось [Raz0r]; 01.11.2008 в 22:33..
|
|
|

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

02.11.2008, 02:28
|
|
Members of Antichat - Level 5
Регистрация: 15.06.2008
Сообщений: 941
Провел на форуме: 5111568
Репутация:
2399
|
|
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:
пробуй..
|
|
|

02.11.2008, 12:28
|
|
Постоянный
Регистрация: 19.02.2008
Сообщений: 438
Провел на форуме: 956872
Репутация:
186
|
|
Ну вот я сделал такую байду:
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(), то мы завершаем скрипт и остальная часть страницы не выполняется (сдесь это "ы"  ), без завршения как-нибудь можно обойтись?
|
|
|

02.11.2008, 13:15
|
|
Members of Antichat - Level 5
Регистрация: 09.10.2006
Сообщений: 1,698
Провел на форуме: 9098076
Репутация:
4303
|
|
вот кто нить напрямую обратиться к base.php и вся ваша хэк логинка летит мимо
Делай тогда с .htaccess'ом, а то бред)
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|