PDA

Просмотр полной версии : Нужен php скрипт!


Tigger
20.11.2008, 11:29
Я в php не силен, так что прошу вашей помощи!
Нужен такой php скрипт:
Человек заходит на страницу, а там авторизация. Авторизация идет по такому принципы: челоек вводет Login и Password. Скрипт ищет в файле login.txt совпадения. В login.txt файлы записано видом login : password. Если все совпало, то заходит в users/index.php. То есть папка users доступана только для авторизовавшихся пользователей. А если не совпало, то выходит на страницу erro.php. Надо, что бы нельзя было срау попасть в www.site.ru/users, а можно быбыло только после авторизации. Помогите, пожалуйста. Очень надо!

[x26]VOLAND
20.11.2008, 11:48
В www.site.ru/users/index.php пропиши проверку на авторизацию. Если успешно, то пропускаем посетителя, если нет, редиректим на www.site.ru/login.php

SVAROG
20.11.2008, 12:03
а не кажеться что с БД удобней было бы?

[:|||||:]
20.11.2008, 12:15
можешь сделать basic authorisation для этой директории и в .htpasswd прописать логины и пассы

DDoSька
20.11.2008, 12:54
а не кажеться что с БД удобней было бы?
Для авторизации подключать базу?
в .txt - быдловариант, но тож можно...

Tigger
20.11.2008, 13:08
Я в php не очень! нет, без БД надо! Именно так. Кто-нибудь помогиет, пожалауйста!

[x26]VOLAND
20.11.2008, 14:14
users.txt - файл со строками вида login : password

http://site.com/login.php :
<html>
<body>
Login: <input type="text" name="login"><br>
Password: <input type="text" name="password"><br>
<input type="submit" name="submit"><br>
</body>
</html>

<?php
if (isset($_POST['submit']))
{
$usersDB = file('users.txt');

if (in_array($_POST['login'] . ' : ' . $_POST['password'], $usersDB))
{
SetCookie('login', $_POST['login']);
SetCookie('password', $_POST['password']);
header('Location: http://site.com/users/index.php');
die();
}
else
{
echo 'Неверные данные';
}
}
?>

http://site.com/users/index.php :
<?php
$usersDB = file('users.txt');

if (!in_array($_СOOKIE['login'] . ' : ' . $_СOOKIE['password'], $usersDB))
{
header('Location: http://site.com/login.php');
die(); // Обязательно!
}

//Остальной контент для отображения
//(виден только залогиненым юзерам)
?>

Это примитив конечно... Обязательно позаботься о защите файла users.txt. Используй алгоритмы хеширования для паролей. И про фильтрацию данных не забудь.

Tigger
20.11.2008, 22:39
[x26]VOLAND, огромное спасибо! Очень выручил!!!

.:EnoT:.
21.11.2008, 00:20
хорошо ещё было бы .htaccess добавить, иначе вся авторизация теряет смысл (если зайти http://site.ru/users.txt)

<Files *.txt>
order allow,deny
deny from all
</Files>

ну эт так, в догонку)

Tigger
21.11.2008, 01:28
Огромное спасибо [x26]VOLAND и .:EnoT:.

b0bahhh
21.11.2008, 03:47
при file() в строки попадают "\n" или "\r\n"
Так что вот это:
if (!in_array($_СOOKIE['login'] . ' : ' . $_СOOKIE['password'], $usersDB))
надо заменить на
if (!in_array($_СOOKIE['login'] . ' : ' . $_СOOKIE['password']."\n", $usersDB)) // или "\r\n"
в зависимости от операционки. Без этого совпадений не будет.