Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Магазин по продаже контента (php)

Ответить
Настройки темы
Магазин по продаже контента (php)

Аватара для dmitryst

Ветеран


Сообщения: 7315
Благодарности: 909


Конфигурация

Профиль | Отправить PM | Цитировать


Коллеги! Нужна помощь в реализации защищенной клиентской зоны сайта и выдачи контента клиенту после оплаты. С оплатой, вроде, сам разберусь . Т.е. на сайте есть папка (может, и не папка) с некими файлами, надо ее оградить от простых клиентов и дать доступ тем, кто прошел транзакцию оплаты. Как это сделать? Можно ссылку на алгоритм или, еще лучше, скрипт. На perl тоже сойдет.

ЗЫ. гугла допрашивал. Что-то в последнее время ничего толкового не выдает, одни стандартные инет-магазины

-------
Осваиваю FreeBSD


Отправлено: 01:24, 03-10-2010

 

Аватара для dmitryst

Ветеран


Сообщения: 7315
Благодарности: 909

Профиль | Отправить PM | Цитировать


Нда, активность зашкаливает... Может, у кого есть пример обработки файла .htpasswd из php? Нужно туда добавлять или удалять юзеров с паролями, как это сделать из скрипта- не понятно (в гугле искал уже)

-------
Осваиваю FreeBSD


Отправлено: 20:26, 24-10-2010 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Deadooshka


Сообщения: 2562
Благодарности: 697

Профиль | Отправить PM | Цитировать


HTTP-аутентификация делается заголовками. htpasswd - это средствами сервера. Если скриптом, то и базу можно использовать.

Отправлено: 04:28, 25-10-2010 | #12


Аватара для dmitryst

Ветеран


Сообщения: 7315
Благодарности: 909

Профиль | Отправить PM | Цитировать


Цитата Sham:
HTTP-аутентификация делается заголовками. »
да это я читал.. В .htpassdw писать что? "deny from all"? Или без разницы? Совсем не хочется, чтобы кто-то по прямым ссылкам заходил (в mod_rewrite я уже совсем запутался )

Еще вопрос... Пароль выдается на какой-то срок, скажем, 30 дней. Надо оповещать клиента перед окончанием действия его пароля. Я сделал так - пишу в два поля timestamp и timestamp+30 дней. Затем через cron буду запускать скрипт, сравнивающий текущий timestamp и записаный в БД, ну и, соответственно, отправляющий мейл когда надо. Неэлегантно, но сравнительно просто. Есть у кого какие предложения?

-------
Осваиваю FreeBSD


Отправлено: 13:37, 25-10-2010 | #13


Deadooshka


Сообщения: 2562
Благодарности: 697

Профиль | Отправить PM | Цитировать


Цитата dmitryst:
В .htpassdw писать что? »
ничего туда не надо, там шифрованые пароли и логины, это фича apache (не PHP). Тут все есть про 401 и куча примеров внизу...

Цитата dmitryst:
пишу в два поля timestamp и timestamp+30 дней »
второе не нужно (сложение +30 дней не сильно грузит). Все элегантно и эстетично.

Отправлено: 14:49, 25-10-2010 | #14


Аватара для dmitryst

Ветеран


Сообщения: 7315
Благодарности: 909

Профиль | Отправить PM | Цитировать


Цитата Sham:
второе не нужно (сложение +30 дней не сильно грузит). »
вот не понял, честно. Почему второе не нужно? У меня, скажем, три поля - "user", "kogda_vidan_pass", "kogda_zakonchitsya_pass" . В первом - юзер, во втором я ставлю timestamp когда юзер получил пароль, затем к этому timestamp добавляю 30 дней (в секундах), пишу в третье поле. Ну, и потом раз в день сравниваю значения из второго и третьего полей. Пишутся эти поля один раз .

Цитата Sham:
Тут все есть про 401 и куча примеров внизу... »
почитал/сделал. Есть папка, скажем, /uploads, ее надо защитить. Во-первых, из примеров не совсем понятно, что делать с полученным правильным паролем/пассом. Пока просто " header ("Location: $url");", но в саму папку можно зайти и без пароля. Нужен именно защищенный вход в папку, с выдачей скрипта всё понятно. Да, насчет .htpasswd я очепятался - .htaccess нужен. Но если я туда пишу "deny from all" - не зайти никак. Что делать?

-------
Осваиваю FreeBSD


Отправлено: 15:14, 25-10-2010 | #15


Deadooshka


Сообщения: 2562
Благодарности: 697

Профиль | Отправить PM | Цитировать


зачем лишнее поле, если можно каждый раз считать +30 для проверки. другое дело, если сортировка или связка нужна...

если 401 только для папки с файлами нужно, то лучше htpasswd. Придется скриптом рулить htpasswd. тынц тынц. Логины фиксирум в базе и в htpasswd...

Отправлено: 17:46, 25-10-2010 | #16


Аватара для dmitryst

Ветеран


Сообщения: 7315
Благодарности: 909

Профиль | Отправить PM | Цитировать


Цитата Sham:
зачем лишнее поле, если можно каждый раз считать +30 для проверки. »
и как оно будет выглядеть, по-вашему? Если я каждый раз буду добавлять +30 дней к текущей дате, так я буду ждать до второй эпохи Unix или пока разряды счетчика не переполнятся . Так что Вы, коллега, неправы... Проще сравнить число из базы с текущим, если разница положительная, то ничего и не делаем. Повторяю, скрипт планируется запускать раз в сутки, этого достаточно, чтобы заранее оповестить клиента.

за
Цитата:
тынц тынц.
спасибо (хотя я первую статью читал уже..)

-------
Осваиваю FreeBSD


Отправлено: 21:26, 25-10-2010 | #17


Аватара для dmitryst

Ветеран


Сообщения: 7315
Благодарности: 909

Профиль | Отправить PM | Цитировать


Нашел тут скрипт для кодирования паролей и добавления в .htpasswd. Работает, проверил...

читать дальше »
PHP код: Выделить весь код

<?php

$GLOBALS
['_CRYPT_APR_MD5_64'] = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
function 
_to64($value$count){
$result '';
$count abs($count);
while(--
$count) {
$result .= $GLOBALS['_CRYPT_APR_MD5_64'][$value 0x3f];
$value >>= 6;
}
return 
$result;
}
function 
_bin($hex){
$rs '';
$ln strlen($hex);
for(
$i 0$i $ln$i += 2) {
$rs .= chr(array_shift(sscanf(substr($hex$i2), '%x')));
}
return 
$rs;
}
function 
encrypt($string$salt null){
if (
is_null($salt)) {
$salt _genSalt();
} elseif (
preg_match('/^\$apr1\$/'$salt)) {
$salt preg_replace('/^\$apr1\$(.{8}).*/''\\1'$salt);
} else {
$salt substr($salt0,8);
}

$length strlen($string);
$context $string '$apr1$' $salt;
$binary _bin(md5($string $salt $string));

for (
$i $length$i 0$i -= 16) {
$context .= substr($binary0, ($i 16 16 $i));
}
for ( 
$i $length$i 0$i >>= 1) {
$context .= ($i 1) ? chr(0) : $string[0];
}

$binary _bin(md5($context));

for(
$i 0$i 1000$i++) {
$new = ($i 1) ? $string substr($binary0,16);
if (
$i 3) {
$new .= $salt;
}
if (
$i 7) {
$new .= $string;
}
$new .= ($i 1) ? substr($binary0,16) : $string;
$binary _bin(md5($new));
}

$p = array();
for (
$i 0$i 5$i++) {
$k $i 6;
$j $i 12;
if (
$j == 16) {
$j 5;
}
$p[] = _to64(
(
ord($binary[$i]) << 16) |
(
ord($binary[$k]) << 8) |
(
ord($binary[$j])),
5
);
}

return
'$apr1$' $salt '$' implode($p) .
_to64(ord($binary[11]), 3);
}
function 
_genSalt(){
$rs '';
for(
$i 0$i 8$i++) {
$rs .=$GLOBALS['_CRYPT_APR_MD5_64'][rand(0,63)];
}
return 
$rs;
}


if (isset(
$login) and $login != "" and isset($pass) and $pass != "")
{
$file fopen(".htpasswd","a");
$p encrypt($pass)."\n\r";
$res=$login.":".$p;
fputs($file,$res);}
?>

-------
Осваиваю FreeBSD


Отправлено: 23:08, 25-10-2010 | #18


Deadooshka


Сообщения: 2562
Благодарности: 697

Профиль | Отправить PM | Цитировать


Цитата dmitryst:
и как оно будет выглядеть, по-вашему? Если я каждый раз буду добавлять +30 дней к текущей дате, так я буду ждать до второй эпохи Unix или пока разряды счетчика не переполнятся »
короче, взаимные непонятки...

Отправлено: 05:46, 26-10-2010 | #19


Аватара для dmitryst

Ветеран


Сообщения: 7315
Благодарности: 909

Профиль | Отправить PM | Цитировать


Цитата Sham:
короче, взаимные непонятки... »
объясняю. Вот вы зашли 1 января, зарегистрировались, вам дали пароль на 10 дней (например). Пишу в базу - "Sham", timestamp (от 1 янв), timestamp+10дней. Раз в сутки я проверяю разницу между вторым число и первым. Это не зависит ни от каких других факторов, всё уже прописано в базе, я считаю только разницу между третьим полем и вторым. Когда разница станет меньше чем 2 дня, к слову, вам придет письмецо с извещением, что действие пароля закончится через 2 дня. По-моему, проще некуда, да и подделать / хакнуть тут ничего не получится.


В остальном, так сказать, "жизнь налаживается" - сделал уже админку с добавлением/просмотром юзеров в .htpasswd. Работает без проблем, апач пароль принимает, хотя и ругается типа "не мой пароль, но сойдет" .
UPD: Нашел другой скрипт, переделал, теперь у апача претензий нет. Если кому нужно - выложу.

-------
Осваиваю FreeBSD


Отправлено: 15:20, 26-10-2010 | #20



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Магазин по продаже контента (php)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Защита контента Dragon7 Вебмастеру 13 15-07-2011 03:40
Интерфейс - корявый интерфейс просмотра контента Ingolder Microsoft Windows 7 0 17-05-2009 23:46
безопасная авторизация IIS сервера и контента. exo Microsoft Windows NT/2000/2003 10 13-02-2009 11:26
Уценка контента оператором united Мобильные ОС, смартфоны и планшеты 6 17-10-2008 15:23
пишем примитивный тырнет-магазин : помогите с сессиями в PHP koresaram Вебмастеру 21 06-09-2006 19:11




 
Переход