Проблема с php скриптом

Discussion in 'PHP' started by SJet, 25 Mar 2007.

  1. SJet

    SJet Banned

    Joined:
    25 Nov 2006
    Messages:
    19
    Likes Received:
    2
    Reputations:
    0
    Имеется такая проблема: пишу простенький 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;
             
           }
       }
    Может кто поможет разобратся?
     
    #1 SJet, 25 Mar 2007
    Last edited by a moderator: 25 Mar 2007
  2. Helios

    Helios Elder - Старейшина

    Joined:
    14 Jan 2007
    Messages:
    414
    Likes Received:
    180
    Reputations:
    103
    Если у тебя в файле данные в виде login|hash, тогда измени:
    if (($line[0] == $login)and($line[1] == $hash)

    А так как ты написал, скрипт ищет в твоей строке столбцы с индексом <номер строки>, <номер строки>+1

    Это сработает для нолевой строки, но дальше - нет
     
    #2 Helios, 25 Mar 2007
    Last edited: 25 Mar 2007
  3. SJet

    SJet Banned

    Joined:
    25 Nov 2006
    Messages:
    19
    Likes Received:
    2
    Reputations:
    0
    Не в этом проблема. Я ставил вывод хеша пароля который ввёл клиент и который лежит в файле. Дак вот они абсолютно одинаковы, но скрипт не считает их таковыми
     
  4. nc.STRIEM

    nc.STRIEM Members of Antichat

    Joined:
    5 Apr 2006
    Messages:
    1,036
    Likes Received:
    347
    Reputations:
    292
    ну тут ваше скрипт крайне кривой!!
    и вобще зачем пользователей хранить в файле с расширением php ??

    попробуй заменить
    $line = explode( "|", $file[$i] );
    на
    $line = explode( '\|', $file[$i] );

    и что таоке $j = $i+1; ??
     
    #4 nc.STRIEM, 25 Mar 2007
    Last edited: 25 Mar 2007
    1 person likes this.
  5. Helios

    Helios Elder - Старейшина

    Joined:
    14 Jan 2007
    Messages:
    414
    Likes Received:
    180
    Reputations:
    103
    Прогони через trim() Хеш из файла, может к нему еще и \n или пробел приклеился, который на глазок можно не заметить
     
    1 person likes this.
  6. GreenBear

    GreenBear наркоман с медалью

    Joined:
    7 May 2005
    Messages:
    2,547
    Likes Received:
    1,398
    Reputations:
    612
    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 баксов
     
    3 people like this.
  7. nc.STRIEM

    nc.STRIEM Members of Antichat

    Joined:
    5 Apr 2006
    Messages:
    1,036
    Likes Received:
    347
    Reputations:
    292
    PHP:

    $file 
    fopen('users.inc');
    while(!
    feof($file))
    {
    $line rtrim(fgets($file));
    $line2=split('\|',$line)
    if (
    line2[0] == $login && line2[1] == $hash)
      die(
    'Вы вошли.!');
    }
     
    1 person likes this.
  8. Helios

    Helios Elder - Старейшина

    Joined:
    14 Jan 2007
    Messages:
    414
    Likes Received:
    180
    Reputations:
    103
    2GreenBeer
    PHP:
    if(trim($login) == $auth[0] AND trim($pas) = $auth[1]){
    Чтобы войти, достаточно згать только логин, а все из-за опечатки=)

    2nc.STRIEM
    PHP:
    $line2=split('\|',$line)
    Экранировать не нужно, ибо кавычки одинарные, и искать в таком случае будет именно \|, а не |
     
    1 person likes this.
  9. DRON-ANARCHY

    DRON-ANARCHY Отец порядка

    Joined:
    4 Mar 2005
    Messages:
    713
    Likes Received:
    142
    Reputations:
    50
    пойду зарегаю юзера какого-нить типа $_GET['cmd']
    пасморим че будет)))
    это я к тому что расширение лучше другое выбрать
     
    1 person likes this.
  10. nc.STRIEM

    nc.STRIEM Members of Antichat

    Joined:
    5 Apr 2006
    Messages:
    1,036
    Likes Received:
    347
    Reputations:
    292
    а ты проверь сначало)))
    так:
    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);

     
  11. SMiX

    SMiX Elder - Старейшина

    Joined:
    25 Jul 2005
    Messages:
    227
    Likes Received:
    55
    Reputations:
    29
    split() разбивает по регулярному выражению, и экранирование идет как бы не для парсера кода php, а для парсера пэттернов.
     
    1 person likes this.
  12. SJet

    SJet Banned

    Joined:
    25 Nov 2006
    Messages:
    19
    Likes Received:
    2
    Reputations:
    0
    Спасибо! А про разрешение - это только тестовый вариант скрипта. Как только он будет работать я все заменю
     
  13. SJet

    SJet Banned

    Joined:
    25 Nov 2006
    Messages:
    19
    Likes Received:
    2
    Reputations:
    0
    Я с этим вроде разобрался, но вот сново застрял, уже на сейсиях.
    Вобщем я создаю сейсию, регистрирую переменные, но на другой странице зти переменные не существуют. А с куками тохе неудача. Php пишет ошибку что типа заголовки уже отправлены. Может кто поможет мне разобратся?
     
  14. GreenBear

    GreenBear наркоман с медалью

    Joined:
    7 May 2005
    Messages:
    2,547
    Likes Received:
    1,398
    Reputations:
    612
    на другой странице тоже должна быть функция session_start() прописана
     
  15. SJet

    SJet Banned

    Joined:
    25 Nov 2006
    Messages:
    19
    Likes Received:
    2
    Reputations:
    0
    ок, сейчас попробую
     
  16. nc.STRIEM

    nc.STRIEM Members of Antichat

    Joined:
    5 Apr 2006
    Messages:
    1,036
    Likes Received:
    347
    Reputations:
    292
    Устанавливать куки можно только до того как ты отправил какую либо инфу браузеру