При регистрации создается файл в котороим хранятся данные пользователей в таом виде:
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;
------
не работает, почему и как исправить?
дак у тебя же вначале айдишка идет вот и в чем проблема сначало раздели 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;
наверно потому что в файле вид:
id|login|pass
а сравниваеш ты
if($k==$login.'|'.$pass)
хотя честно говоря сам подход немного странный.. страшно подумать как долго будет перебирать файл допустим при 100к пользователей..
Kovalsky, думаешь кто то с базой в 100 к будет использовать данный метод, да проще об стену убиться
12 Май 2011, 17:42xman12, я убирал айди и делал так как ты, всеравно не работает, выдает "Несанкционированный доступ"
хз, почему
xman12, я не знаю, кто что будет использовать, просто я думаю что не стоит делать кривую авторизацию..
если делать, то сразу нормальную.. говнокод это потерянное время из жизни.. все равно потом придется переделывать.
мне кажется или здесь не хватает скобок?
foreach (file('data/users.dat') as $k) {
$exp=explode("|",$k);
$k1=''.$exp[1].'|'.$exp[2].'';
if($k1==$login.'|'.$pass){
$result=1;
break;
} }
Kovalsky, если такой умный дай мне норм авторизацию, я просто студент и практикуюсь на написаниях PHP-скриптов
xman12,
$login=trim($_POST['login']);
$pass=trim($_POST['pass']);
так же...не работает
Kovalsky, он еще этого не осознал, а осознает он тока с опытом , пока все перепробует а если ему показать мол так и так он один фиг не допетрит сразу , он должен это сам ощутить
12 Май 2011, 17:50Expert, я тебе лучше небольшой совет дам..
я раньше когда не мог понять почему $a!=$b хотя вроде бы должно быть равно просто тупо печатал их на странице..
увидеть глазами что происходит это уже полдела..
то есть перед if($k1==$login.'|'.$pass)
делай:
print $k1.'='.$login.'|'.$pass.'<br/>'; и смотри чего у тебя там находится