скрипт авторизации

Боровиков

Новичок
Ребят, в общем тут такое дело, нужно написать скрипт который позволял бы авторизовываться на сайте, и при этом был подключаемым.
Например у меня есть 3 файла, в каждом инклудится основной файл core.php в котором прописанны параметры подключения к базе mysql и еще пара функций.
Так вот, если пользователь не авторизован то он не может попасть на какую либо страничку, а при регистрации и авторизации получает свободный доступ, естественно все данные хранятся в базе.
Кто сможет помочь?
 

Adelf

Administrator
Команда форума
Если хочешь делать сам - говори чего не получается.
Если хочешь, чтобы за тебя сделали - гоу в раздел "Работа"
 

Боровиков

Новичок
Если хочешь делать сам - говори чего не получается.
Если хочешь, чтобы за тебя сделали - гоу в раздел "Работа"
Дело в том что вообще ниче не получается, пробовал делать так как написанно в мануалах, получается но с защитой там пипец.
 

ArkDoom

Новичок
Ну самый просто варриант. Делай ссесию и при авторизации записывай туда инфу. Потом в начале каждого файла делай проверку на значения сессии (например $auth = 1 $isset($login)
 

Боровиков

Новичок
Ну самый просто варриант. Делай ссесию и при авторизации записывай туда инфу. Потом в начале каждого файла делай проверку на значения сессии (например $auth = 1 $isset($login)
Так в случае потери сесии (дырявый арбуз, или мошенники) То эти данные лего подставить
 

ArkDoom

Новичок
Ман, если ты вообще не знаешь как сделать что либо. Об офигенной безопастности даже еще не думай)

Ну и тебе на раздумье, пиши в сессию IP, Версию Браузера и т.п. ))
 

AmdY

Пью пиво
Команда форума
ArkDoom
хороший способ пожертвовать частью аудитории, причина очень простая - прокси. у того же gmail спокойно сохраняется авторизация при смене IP и браузера.
 

ArkDoom

Новичок
AmdY

1. Я думаю речь не о проекте с посещаемостью хотябы 1к людей которые будут жить на сайте, а о личном использвовании N-ым количеством людей.

2. Я думаю человеку врятли сейчас нужно делать сразу качественную авторизацию ибо все приходит постепенно ;D

и конечно же P.S. Для тех кто читает межстрок - я написал на раздумье)
 

AmdY

Пью пиво
Команда форума
ArkDoom
фиолетово какая посещаемость, если будет отваливаться авторизация люди будут уходить, а заказчик будет приходить править лицо. авторизация должна просто работать.
 

Боровиков

Новичок
ArkDoom
фиолетово какая посещаемость, если будет отваливаться авторизация люди будут уходить, а заказчик будет приходить править лицо. авторизация должна просто работать.
Посещаемость примерно 200 - 300 минимум, так как будет закупаться реклама на хорошую сумму.
Насчет заказчика то его нет, ибо сам делаю проект, и поэтому мне важна авторизация.
 

ArkDoom

Новичок
Раз вы все тааакие крутые, вот держите.


Код №1:
PHP:
<?php
$session = new session;
class session
{
public $lifeTime = 86400;
public $started = FALSE;
public function __construct ()
{
 ini_set('session.cookie_lifetime',157680000);
 ini_set('session.cookie_domain',COOKDOMAIN);
 ini_set('session.name',COOKPREFIX.'sid');
 ini_set('session.use_trans_sid',0);
 ini_set('session.use_cookies',1);
}
public function getId()
{
 $sn = ini_get('session.name');
 if (isset($_REQUEST[$sn])) {return gpcvar_str($_REQUEST[$sn]);}
 if (isset($_COOKIE[$sn])) {return gpcvar_str($_COOKIE[$sn]);}
 $this->start();
 return session_id();
}
public function start()
{
 if ($this->started) {return;}
 $this->started = TRUE;
 $sn = ini_get('session.name');
 session_set_save_handler(array($this,'open'),array($this,'close'),array($this,'read'),array($this,'write'),array($this,'destroy'),array($this,'gc'));
 if (isset($_REQUEST[$sn])) {$_COOKIE[$sn] = gpcvar_str($_REQUEST[$sn]);}
 session_start();
}
public function session_write_close() {return TRUE;}
public function open($savePath,$sessName) {return TRUE;}
public function close() {return TRUE;}
public function read($sessID) {return xE::$memcache->get('sess.'.$sessID);}
public function write($sessID,$sessData) {return xE::$memcache->set('sess.'.$sessID,$sessData,$this->lifeTime);}
public function destroy($sessID) {return xE::$memcache->delete('sess.'.$sessID);}
public function gc($lt) {return TRUE;}
}
function gpcvar_str(&$var) {if (is_array($var)) {return '';} return strval($var);}
?>

Код №2:
CREATE TABLE `xE_authsessions` (
`session_id` char(32) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
`uid` int(11) NOT NULL,
`ip` int(10) unsigned NOT NULL,
`ctime` int(11) NOT NULL,
PRIMARY KEY (`session_id`),
KEY `uid` (`uid`)
) ENGINE=InnoDB;
 

Боровиков

Новичок
Раз вы все тааакие крутые, вот держите.


Код №1:
PHP:
<?php
$session = new session;
class session
{
public $lifeTime = 86400;
public $started = FALSE;
public function __construct ()
{
 ini_set('session.cookie_lifetime',157680000);
 ini_set('session.cookie_domain',COOKDOMAIN);
 ini_set('session.name',COOKPREFIX.'sid');
 ini_set('session.use_trans_sid',0);
 ini_set('session.use_cookies',1);
}
public function getId()
{
 $sn = ini_get('session.name');
 if (isset($_REQUEST[$sn])) {return gpcvar_str($_REQUEST[$sn]);}
 if (isset($_COOKIE[$sn])) {return gpcvar_str($_COOKIE[$sn]);}
 $this->start();
 return session_id();
}
public function start()
{
 if ($this->started) {return;}
 $this->started = TRUE;
 $sn = ini_get('session.name');
 session_set_save_handler(array($this,'open'),array($this,'close'),array($this,'read'),array($this,'write'),array($this,'destroy'),array($this,'gc'));
 if (isset($_REQUEST[$sn])) {$_COOKIE[$sn] = gpcvar_str($_REQUEST[$sn]);}
 session_start();
}
public function session_write_close() {return TRUE;}
public function open($savePath,$sessName) {return TRUE;}
public function close() {return TRUE;}
public function read($sessID) {return xE::$memcache->get('sess.'.$sessID);}
public function write($sessID,$sessData) {return xE::$memcache->set('sess.'.$sessID,$sessData,$this->lifeTime);}
public function destroy($sessID) {return xE::$memcache->delete('sess.'.$sessID);}
public function gc($lt) {return TRUE;}
}
function gpcvar_str(&$var) {if (is_array($var)) {return '';} return strval($var);}
?>

Код №2:
CREATE TABLE `xE_authsessions` (
`session_id` char(32) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
`uid` int(11) NOT NULL,
`ip` int(10) unsigned NOT NULL,
`ctime` int(11) NOT NULL,
PRIMARY KEY (`session_id`),
KEY `uid` (`uid`)
) ENGINE=InnoDB;
Спасибо тебе, но мог бы ты обьяснить что тут к чему, и как авторизовываться с помощью этого?
 

ArkDoom

Новичок
Провал) Я думаю AmdY теперь поймет про, что я говорил :D


Боровиков
Ты хочешь чтобы дали код, рассказали как работает и...голых девочек?)))


P.S. AmdY я сменил бразуер и не смог зайти на форум....все я считаю что сайт отсой, разрабочики вообще, ухожу)))))
 

Боровиков

Новичок
Раз вы все тааакие крутые, вот держите.


Код №1:
PHP:
<?php
$session = new session;
class session
{
public $lifeTime = 86400;
public $started = FALSE;
public function __construct ()
{
 ini_set('session.cookie_lifetime',157680000);
 ini_set('session.cookie_domain',COOKDOMAIN);
 ini_set('session.name',COOKPREFIX.'sid');
 ini_set('session.use_trans_sid',0);
 ini_set('session.use_cookies',1);
}
public function getId()
{
 $sn = ini_get('session.name');
 if (isset($_REQUEST[$sn])) {return gpcvar_str($_REQUEST[$sn]);}
 if (isset($_COOKIE[$sn])) {return gpcvar_str($_COOKIE[$sn]);}
 $this->start();
 return session_id();
}
public function start()
{
 if ($this->started) {return;}
 $this->started = TRUE;
 $sn = ini_get('session.name');
 session_set_save_handler(array($this,'open'),array($this,'close'),array($this,'read'),array($this,'write'),array($this,'destroy'),array($this,'gc'));
 if (isset($_REQUEST[$sn])) {$_COOKIE[$sn] = gpcvar_str($_REQUEST[$sn]);}
 session_start();
}
public function session_write_close() {return TRUE;}
public function open($savePath,$sessName) {return TRUE;}
public function close() {return TRUE;}
public function read($sessID) {return xE::$memcache->get('sess.'.$sessID);}
public function write($sessID,$sessData) {return xE::$memcache->set('sess.'.$sessID,$sessData,$this->lifeTime);}
public function destroy($sessID) {return xE::$memcache->delete('sess.'.$sessID);}
public function gc($lt) {return TRUE;}
}
function gpcvar_str(&$var) {if (is_array($var)) {return '';} return strval($var);}
?>

Код №2:
CREATE TABLE `xE_authsessions` (
`session_id` char(32) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
`uid` int(11) NOT NULL,
`ip` int(10) unsigned NOT NULL,
`ctime` int(11) NOT NULL,
PRIMARY KEY (`session_id`),
KEY `uid` (`uid`)
) ENGINE=InnoDB;
Я так понимаю что для начала мне нужно записать в базу айпи юзера, потом его айди, и только потом присвоить ему сесию, и уже потом извлекать из нее имя сесии и по ней проводить авторизацию?
 

AmdY

Пью пиво
Команда форума
ArkDoom
и что? хочешь чтобы проделал ревью?
у тебя две серьёзные проблемы - sid берётся из реквеста, а значит можно передавать в GET и sid может легко уйти даже без хацкеров, например в ссылке другу.
вторая - в твоём хендлере нет блокировки и сессия может быть изменена из параллельного скрипта, тем самым нарушив целостность данных.
 

ArkDoom

Новичок
AmdY
Ты сделал ревью на первонайден с хабра код, гж =)

Я пытался донести мысль, что человек далек от всего этого, и делать авторизацию как у гмаил - смысла в пока нет. Я не встречал людей, среди обычных пользователей, которые используют по 2-3 бразуера одновременно))
 

Боровиков

Новичок
AmdY
Ты сделал ревью на первонайден с хабра код, гж =)

Я пытался донести мысль, что человек далек от всего этого, и делать авторизацию как у гмаил - смысла в пока нет. Я не встречал людей, среди обычных пользователей, которые используют по 2-3 бразуера одновременно))
А такие есть, у меня все знакомые сидят так, например в опере открыта одна страница однокласников, в сафари другая, в експлорере порнуха :)
Это к примеру.
 

ArkDoom

Новичок
Боровиков

я админю около 300 человек, и не замечал такого никогда) Ужас, зачем они это делают?))))))))

P.S. Тогда я пасс, если все такие крутые =) И я думаю ты врятли сдесь получишь ответ ибо у тебя вопрос не *помогите вот тут не работает*, а как сделать качественнуб авторизацию и расскажите как она работает. Гугли пока пальцы не сотрешь .... )))))
 

Боровиков

Новичок
Боровиков

я админю около 300 человек, и не замечал такого никогда) Ужас, зачем они это делают?))))))))

P.S. Тогда я пасс, если все такие крутые =) И я думаю ты врятли сдесь получишь ответ ибо у тебя вопрос не *помогите вот тут не работает*, а как сделать качественнуб авторизацию и расскажите как она работает. Гугли пока пальцы не сотрешь .... )))))
Ну если у чела 3 аккаунта то он в основном так и делает.
Ладно суть не в этом.
 

ArkDoom

Новичок
Боровиков
Если у человека - 3 аккаунта в одноклассниках, то у него раз3ение психики.

P.S. Тема перешла уже в флуд....
 
Сверху