Forum Webscript.Ru

Разное => Поиск, изготовление скриптов и прочее... => Тема начата: IgorCH от 03 Августа 2004, 17:31:46

Название: Персанализация пользователя
Отправлено: IgorCH от 03 Августа 2004, 17:31:46
Если можете помогите написать скрипт персанализации.

Пользователь вводит свой пароль и имя, а его переправляет на его страницу или папку.
Все данные пароль, имя, имя страницы (папки) хранится в БД msql.
Название: Персанализация пользователя
Отправлено: iCEBERG2k4 от 04 Августа 2004, 10:54:50
10$ ^)
Название: Персанализация пользователя
Отправлено: commander от 04 Августа 2004, 11:36:43
IgorCH
страницу или папку может просматривать только данный пользователь?  Или его надо просто ридирекнуть?
Название: Персанализация пользователя
Отправлено: IgorCH от 04 Августа 2004, 12:17:35
Да только данный пользователь
Название: Персанализация пользователя
Отправлено: commander от 04 Августа 2004, 13:10:36
IgorCH
хех... ну тогда это немного по сложнее ... при условии что страница пользователя динамическая то можно сделать так:
БД:
create table users (
users_id int not null primary key auto_increment,
username varchar(50),
password varchar(50),
redirect varchar(255)
);
пишем модуль на Perl...  с применением модулей SQLayer и HTML::Template...:
AUTH.pm:
--------------------------------
package AUTH;

$AUTH::VERSION = \'1.0.0\';

use strict;
use SQLayer;
use CGI qw(:standard);
use HTML::Template;

sub check_user
{
    my $user_id = cookie(\'user_id\');
    if ($user_id)
    {
    return $user_id;
    }
    else
    {
    my $warn="You need authorization";
    auth_user($warn);
    exit;
    }
}
sub auth_user
{
    my $warn = shift;
    my $T = HTML::Template -> new(filename => "auth.tmpl");
    print "Content-type: text/html\\n\\n";
    $T -> param(warn=>$warn);
    print $T -> output();
}
sub auth_action
{
my $self = shift;
my %HKeys = @_;
my $username=$HKeys{\'username\'};
my $password=$HKeys{\'password\'};
my $D = SQLayer -> new(database => \'DBI:mysql:database=phorum;host=localhost;port=3306\', user => \'user\', passowrd => \'somepass\');
my $user_id=$D->row("SELECT users_id FROM users WHERE username=\'$username\' AND password=\'$password\'");
    if ($user_id)
    {
    my $cookie = Create_Cookie("1h", $user_id);
    my $redir=$D->row("SELECT redirect FROM users WHERE users_id=\'$user_id\'");
    print redirect(-uri=>"$redir", -cookie=>$cookie);
    exit;
    }
    else
    {
    my $warn="Wrong username or password";
    auth_user($warn);
    }
}
sub Create_Cookie
{
    my $exp = shift;
    my $val = shift;
    my $cookie = cookie(-name => \'user_id\',
                    -value => $val,
                    -expires => $exp);
return($cookie);
}
1;
__END__;
---------------------------------------------------------------
в самом скрипте делаем слежующее:
script.cgi:
---------------------------------------------------------------
#!/usr/bin/perl -w
use strict;
use CGI qw(:standard);
use lib \'.\';
use AUTH;

my $action=param(\'action\');
if ($action eq "auth")
{
my $username=param(\'username\');
my $password=param(\'password\');
AUTH->auth_action(username=>$username, password=>$password);
}
else
{
my $user_id = AUTH->check_user();
}
---------------------------------------------------------------
В скрипте который формирует страницу пользователя вставляешь такие строчки:
use AUTH;
my $user_id = AUTH->check_user();
Ещё надо сделать шаблон авторизации:
auth.tmpl:
--------------------------------------------------------------

AUTH.




Welcome to my System.


Please enter your user name and password:


















user name:



password:








-------------------------------------------------------------
ну вот собстевенно и все... пользуйся... :)