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

25.03.2007, 19:36
|
|
Новичок
Регистрация: 25.11.2006
Сообщений: 19
Провел на форуме: 49731
Репутация:
11
|
|
Проблема с php скриптом
Имеется такая проблема: пишу простенький php движок для сайта, и вот неожиданно застрял на аутидентификации.
Сделал регистрацию, а вот со входом проблемы... Вобшем логин пароль проверку проходит, а вот пароль нет(в файле хранится его хеш)
Вот сам код:
PHP код:
if ($act == login)
{
$login = $_POST['login'];
$pas = $_POST['pas'];
$testlogin = empty($login);
$testpas = empty($pas);
if (($testlogin == 1)or($testpas == 1))
{
echo 'Ошибка! Не все поля заполнены!';
exit;
}
$file = file("users.inc.php");
$users = count($file);
$hash = md5($pas);
for ($i=0; $i<$users; $i++)
{
$line = explode( "|", $file[$i] );
$j = $i+1;
По идее ошибка где-то здесь, но найти её я не могу...
if (($line[$i] == $login)and($line[$j] == $hash)
{
echo 'Вы вошли.!';
exit;
}
}
Может кто поможет разобратся?
Последний раз редактировалось nc.STRIEM; 25.03.2007 в 20:17..
|
|
|

25.03.2007, 19:54
|
|
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме: 1469995
Репутация:
589
|
|
Если у тебя в файле данные в виде login|hash, тогда измени:
if (($line[0] == $login)and($line[1] == $hash)
А так как ты написал, скрипт ищет в твоей строке столбцы с индексом <номер строки>, <номер строки>+1
Это сработает для нолевой строки, но дальше - нет
Последний раз редактировалось Helios; 25.03.2007 в 20:04..
Причина: Очепятка)
|
|
|

25.03.2007, 19:58
|
|
Новичок
Регистрация: 25.11.2006
Сообщений: 19
Провел на форуме: 49731
Репутация:
11
|
|
Не в этом проблема. Я ставил вывод хеша пароля который ввёл клиент и который лежит в файле. Дак вот они абсолютно одинаковы, но скрипт не считает их таковыми
|
|
|

25.03.2007, 20:08
|
|
Members of Antichat - Level 5
Регистрация: 05.04.2006
Сообщений: 1,066
Провел на форуме: 3493315
Репутация:
1228
|
|
ну тут ваше скрипт крайне кривой!!
и вобще зачем пользователей хранить в файле с расширением php ??
попробуй заменить
$line = explode( "|", $file[$i] );
на
$line = explode( '\|', $file[$i] );
и что таоке $j = $i+1; ??
Последний раз редактировалось nc.STRIEM; 25.03.2007 в 20:12..
|
|
|

25.03.2007, 20:08
|
|
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме: 1469995
Репутация:
589
|
|
Прогони через trim() Хеш из файла, может к нему еще и \n или пробел приклеился, который на глазок можно не заметить
|
|
|

25.03.2007, 20:14
|
|
наркоман с медалью
Регистрация: 07.05.2005
Сообщений: 3,704
Провел на форуме: 19975136
Репутация:
4536
|
|
PHP код:
if($act == 'login'){
$login = $_POST['login'];
$pas = $_POST['pas'];
if(!$login OR !$pass){
die('Ошибка! Не все поля заполнены!');
}
$users = file('users.inc.php');
$count = sizeof($users);
$pas = md5($pas);
for($i=0;$i<$count;$i++){
$auth = $users[$i];
$auth = explode('|', $auth);
if(trim($login) == $auth[0] AND trim($pas) = $auth[1]){
die('Вы вошли!');
}
}
}
с тебя 10 баксов
|
|
|

25.03.2007, 20:15
|
|
Members of Antichat - Level 5
Регистрация: 05.04.2006
Сообщений: 1,066
Провел на форуме: 3493315
Репутация:
1228
|
|
PHP код:
$file = fopen('users.inc');
while(!feof($file))
{
$line = rtrim(fgets($file));
$line2=split('\|',$line)
if (line2[0] == $login && line2[1] == $hash)
die('Вы вошли.!');
}
|
|
|

25.03.2007, 20:39
|
|
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме: 1469995
Репутация:
589
|
|
2GreenBeer
PHP код:
if(trim($login) == $auth[0] AND trim($pas) = $auth[1]){
Чтобы войти, достаточно згать только логин, а все из-за опечатки=)
2nc.STRIEM
Экранировать не нужно, ибо кавычки одинарные, и искать в таком случае будет именно \|, а не |
|
|
|

25.03.2007, 21:43
|
|
Отец порядка
Регистрация: 04.03.2005
Сообщений: 1,007
Провел на форуме: 1204641
Репутация:
412
|
|
пойду зарегаю юзера какого-нить типа $_GET['cmd']
пасморим че будет)))
это я к тому что расширение лучше другое выбрать
|
|
|

25.03.2007, 22:11
|
|
Members of Antichat - Level 5
Регистрация: 05.04.2006
Сообщений: 1,066
Провел на форуме: 3493315
Репутация:
1228
|
|
Сообщение от Helios
2nc.STRIEM
Экранировать не нужно, ибо кавычки одинарные, и искать в таком случае будет именно \|, а не |
а ты проверь сначало)))
так:
PHP код:
$fo=fopen('1.txt','r');
$s=fgets($fo);
$a=split('|',$s);
print_r($a);
потом так:
PHP код:
$fo=fopen('1.txt','r');
$s=fgets($fo);
$a=split('\|',$s);
print_r($a);
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|