Xwab
Форумыnavigate_nextПрограммирование на PHP

авторизация на файлах
Сообщения
Expert

При регистрации создается файл в котороим хранятся данные пользователей в таом виде:

id|login|pass

авторизацию провожу так:


$login=@$_GET['login'];
$pass=@$_GET['pass'];
$result=0;
foreach (file('data/users.dat') as $k)
if($k==$login.'|'.$pass){
$result=1;
break;
}
if ($result!=1) die("Несанкционированный доступ");
session_start();
session_register("authorize");
$authorize=1;

------
не работает, почему и как исправить?

12 Май 2011, 17:29
xman12

дак у тебя же вначале айдишка идет вот и в чем проблема сначало раздели explode потом авторизуйся

$login=@$_GET['login'];
$pass=@$_GET['pass'];
$result=0;
foreach (file('data/users.dat') as $k)
$exp=explode("|",$k);
$k1=''.$exp[1].'|'.$exp[2].'';
if($k1==$login.'|'.$pass){
$result=1;
break;
}
if ($result!=1) die("Несанкционированный доступ");
session_start();
session_register("authorize");
$authorize=1;


__________
посл.ред. 12 Май 2011, 17:43; всего 1 раз 12 Май 2011, 17:37
Kovalsky

наверно потому что в файле вид:
id|login|pass

а сравниваеш ты
if($k==$login.'|'.$pass)

хотя честно говоря сам подход немного странный.. страшно подумать как долго будет перебирать файл допустим при 100к пользователей..

12 Май 2011, 17:39
xman12

Kovalsky, думаешь кто то с базой в 100 к будет использовать данный метод, да проще об стену убиться

12 Май 2011, 17:42
Expert

xman12, я убирал айди и делал так как ты, всеравно не работает, выдает "Несанкционированный доступ"
хз, почему

12 Май 2011, 17:43
xman12

Expert, ну смотри мож пробелы где то , обрабатывай trim ,

12 Май 2011, 17:45
Kovalsky

xman12, я не знаю, кто что будет использовать, просто я думаю что не стоит делать кривую авторизацию..
если делать, то сразу нормальную.. говнокод это потерянное время из жизни.. все равно потом придется переделывать.

мне кажется или здесь не хватает скобок?

foreach (file('data/users.dat') as $k) {
$exp=explode("|",$k);
$k1=''.$exp[1].'|'.$exp[2].'';
if($k1==$login.'|'.$pass){
$result=1;
break;
} }

12 Май 2011, 17:45
Expert

Kovalsky, если такой умный дай мне норм авторизацию, я просто студент и практикуюсь на написаниях PHP-скриптов

xman12,
$login=trim($_POST['login']);
$pass=trim($_POST['pass']);
так же...не работает


__________
посл.ред. 12 Май 2011, 17:50; всего 1 раз 12 Май 2011, 17:49
xman12

Kovalsky, он еще этого не осознал, а осознает он тока с опытом , пока все перепробует а если ему показать мол так и так он один фиг не допетрит сразу , он должен это сам ощутить

12 Май 2011, 17:50
Kovalsky

Expert, я тебе лучше небольшой совет дам..
я раньше когда не мог понять почему $a!=$b хотя вроде бы должно быть равно просто тупо печатал их на странице..
увидеть глазами что происходит это уже полдела..

то есть перед if($k1==$login.'|'.$pass)
делай:
print $k1.'='.$login.'|'.$pass.'<br/>'; и смотри чего у тебя там находится

12 Май 2011, 17:54
Ответить на тему