Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> *.csv & POST, сравнение данных из POST с даными из CSV 
:(
    Опции темы
Bacardi
  Дата 14.10.2005, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 8.3.2005
Где: Москва

Репутация: нет
Всего: 1



Пытаюсь сделать авторизацию. Но результат меня не устраивает ввиду того, что что-то работает не так, как я того хочу.)

В файле auth.csv храню логины и пароли:
Код

L111;P111;
L222;P222;


Скрипт login.php предоставляет пользователю форму ввода логина и пароля и отправляет его файлу проверки ввода:
Код

<?
#запрет кэширования
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0",false);
header("Pragma: no-cache");
?>
<!--форма ввода-->
<form action="checklogin.php" method="post">
<p>Имя пользователя:
<input type="text" name="login" value="<? if (isset($_COOKIE["login"])) {echo $_COOKIE["login"];}?>"></p>
<p>Пароль:
<input type="password" name="password"></p>
<input type="submit" value="Вход">
<input type="button" onClick="javascript: history.back()" value="Назад">
</form>


файл проверки ввода checklogin.php открывает файл с логинами и паролями, получает из массива $_POST введенные строки, и в цикле пытается их сравнить:
Код

#--------------------------------------------------------------------------
$log = $_POST["login"];
$pas = $_POST["password"];
setcookie("login",$log, time() + 60*60*24*30);
#--------------------------------------------------------------------------
$auths = fopen("../../catalogs/auth.csv","r");
if(!$auths)
    {echo"Ошибка открытия файла аутентификации!";}
else
    {
    $i=0;
    while($data = fgetcsv($auths,65535,";"))
        {
        $num=count($data);
        $login[$i]=$data[0];
        $pass[$i]=$data[1];
        $i++;
        }
    fclose($auths);
    $auths_count=$i;
    }
#--------------------------------------------------------------------------    
for ($i=0; $i<$auths_count; $i++)
    {
    if (strcmp($login[$i],$log)==0 && strcmp($pass[$i],$pas)==0)
    {
    session_start();
    session_register("auth");
    $_SESSION["auth"] = true;
    header("Location: info.php?cat_id=".$_SESSION["cat_id"]."&type_id=".$_SESSION["type_id"]."&prod_id=".$_SESSION["prod_id"]);
    exit;
    }
    else
    {
    header("Location: login.php");
    exit;
    }
    }


В результате ввода правильного логина и пароля скрипт мне открывает страницу login.php, будто они не правильные.

Я написал в нужных местах операторы echo, для проверки данных:
Код

...
    while($data = fgetcsv($auths,65535,";"))
        {
        $num=count($data);
        $login[$i]=$data[0];
        echo "data[0]: ".$data[0]."<br>";
        echo "login[$i]: ".$login[$i]."<br>";
        $pass[$i]=$data[1];
        echo "data[1]: ".$data[1]."<br>";
        echo "pass[$i]: ".$pass[$i]."<br>";
        $i++;
        }
...
for ($i=0; $i<$auths_count; $i++)
    {
    echo "login[$i]: ".$login[$i]."    log: ".$log."<br>";
    echo "pass[$i]: ".$pass[$i]."    pas: ".$pas."<br>";
    if (strcmp($login[$i],$log)==0 && strcmp($pass[$i],$pas)==0)
...


и вот, что я получил:
Код

data[0]: L111
login[0]: L
data[1]: P111
pass[0]: P111
data[0]: L222
login[1]: L
data[1]: P222
pass[1]: P222
login[0]: L log: L111
pass[0]: P111 pas: P111


Вопрос: какого ... он не хочет полностью сохранять строку в массив login[].
--------------------
Необычная смесь. Болтать, но не мешать.http://www.livejournal.com/users/__bacardi__/
PM MAIL WWW ICQ   Вверх
Darhazer
Дата 14.10.2005, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 28.9.2005
Где: HellCity (Sofia, Bulgaria)

Репутация: 7
Всего: 29



Не нужно так долго ... делай проверку еще при четение файла:

Код

 while($data = fgetcsv($auths,65535,";"))
        {
        if (strcmp($data[0],$log)==0 && strcmp($data[1],$pas)==0)
    {
    fclose($auths);
    session_start();
    session_register("auth");
    $_SESSION["auth"] = true;
    header("Location: info.php?cat_id=".$_SESSION["cat_id"]."&type_id=".$_SESSION["type_id"]."&prod_id=".$_SESSION["prod_id"]);
    exit;
    }
  }
    fclose($auths);
    header("Location: login.php");
    exit;
    }


P.S. Насчет проблема - может быт у тебя включено register_globals и скрипт выполняет $login[0] как $_POST["login"][0]... попробуй имя переменной променить

Это сообщение отредактировал(а) Darhazer - 14.10.2005, 15:50


--------------------
I'm a wheel, I'm a wheel, I can roll, I can feel
But you can't stop me turning
'Cause I'm the sun, I'm the sun, I can move, I can run
But you'll never stom me burning
PM MAIL WWW ICQ YIM   Вверх
Bacardi
Дата 14.10.2005, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 8.3.2005
Где: Москва

Репутация: нет
Всего: 1



Цитата(Darhazer @ 14.10.2005, 16:48)
делай проверку еще при четение файла

идея классная. щас попробую.


Цитата(Darhazer @ 14.10.2005, 16:48)
попробуй имя переменной променить

попробую, хотя и сомневаюсь немного.)
Добавлено @ 16:00
а чего ее менять, когда у тебя уже проверка без них обходится.
др дело, что опять не работает. не хочет распознавать логины и пароли.
Добавлено @ 16:02
ой. соврал. все работает.
спасибо! smile

off topic smile
--------------------
Необычная смесь. Болтать, но не мешать.http://www.livejournal.com/users/__bacardi__/
PM MAIL WWW ICQ   Вверх
Darhazer
Дата 14.10.2005, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 28.9.2005
Где: HellCity (Sofia, Bulgaria)

Репутация: 7
Всего: 29



Провер значения $log и $pas, которые получаеш?
P.S. Опоздал.

Это сообщение отредактировал(а) Darhazer - 14.10.2005, 16:08


--------------------
I'm a wheel, I'm a wheel, I can roll, I can feel
But you can't stop me turning
'Cause I'm the sun, I'm the sun, I can move, I can run
But you'll never stom me burning
PM MAIL WWW ICQ YIM   Вверх
Mal Hack
Дата 14.10.2005, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Для кого писал: http://vingrad.ru/PHP-ART-002849
Есть там правда, пара недочотов, но суть - работает.
PM ICQ   Вверх
Darhazer
Дата 14.10.2005, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 28.9.2005
Где: HellCity (Sofia, Bulgaria)

Репутация: 7
Всего: 29



Цитата(Mal @ 14.10.2005, 17:04)
Для кого писал: http://vingrad.ru/PHP-ART-002849
Есть там правда, пара недочотов, но суть - работает.

А если на сервере нет БД ?


--------------------
I'm a wheel, I'm a wheel, I can roll, I can feel
But you can't stop me turning
'Cause I'm the sun, I'm the sun, I can move, I can run
But you'll never stom me burning
PM MAIL WWW ICQ YIM   Вверх
Mal Hack
Дата 14.10.2005, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(Darhazer @ 14.10.2005, 18:22)
А если на сервере нет БД ?

А где ты такие сервера видел? Да, в теории и на практике есть, но блин, как без БД работать-то? Авторизация просто так не бывает, а бывает на каких-то проектах. Их тоже на файлы все?

В конце концов есть бесплатные сервера БД.
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1353 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.