Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Проблема с php скриптом (https://forum.antichat.xyz/showthread.php?t=36350)

SJet 25.03.2007 19:36

Проблема с 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;
         
       }
   } 

Может кто поможет разобратся?

Helios 25.03.2007 19:54

Если у тебя в файле данные в виде login|hash, тогда измени:
if (($line[0] == $login)and($line[1] == $hash)

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

Это сработает для нолевой строки, но дальше - нет

SJet 25.03.2007 19:58

Не в этом проблема. Я ставил вывод хеша пароля который ввёл клиент и который лежит в файле. Дак вот они абсолютно одинаковы, но скрипт не считает их таковыми

nc.STRIEM 25.03.2007 20:08

ну тут ваше скрипт крайне кривой!!
и вобще зачем пользователей хранить в файле с расширением php ??

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

и что таоке $j = $i+1; ??

Helios 25.03.2007 20:08

Прогони через trim() Хеш из файла, может к нему еще и \n или пробел приклеился, который на глазок можно не заметить

GreenBear 25.03.2007 20:14

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 баксов

nc.STRIEM 25.03.2007 20:15

PHP код:


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



Helios 25.03.2007 20:39

2GreenBeer
PHP код:

if(trim($login) == $auth[0] AND trim($pas) = $auth[1]){ 

Чтобы войти, достаточно згать только логин, а все из-за опечатки=)

2nc.STRIEM
PHP код:

$line2=split('\|',$line

Экранировать не нужно, ибо кавычки одинарные, и искать в таком случае будет именно \|, а не |

DRON-ANARCHY 25.03.2007 21:43

пойду зарегаю юзера какого-нить типа $_GET['cmd']
пасморим че будет)))
это я к тому что расширение лучше другое выбрать

nc.STRIEM 25.03.2007 22:11

Цитата:

Сообщение от Helios


2nc.STRIEM
PHP код:

$line2=split('\|',$line

Экранировать не нужно, ибо кавычки одинарные, и искать в таком случае будет именно \|, а не |

а ты проверь сначало)))
так:
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); 



Время: 14:48