Хочу правильно научиться писать код. Как уже писал в одной теме красиво и лаконично, но не сокращено.
Просьба просмотреть кусок кода и подсказать что здесь не так или как бы вы написали. Спасибо.
морда
PHP:
скопировать код в буфер обмена
// сперва делаем проверку // залогинен ли пользователь if ($obj_user -> admin_user()) { // пользователь залогинен echo "work pages"; } else { if ($obj_user -> check_user() == true) { echo "defaul pages"; }else{ // пользователь незалогинен и сессия у него пустая $smarty -> display('admin/login.tpl'); } }
Класс проверки и авторизации.
PHP:
скопировать код в буфер обмена
<?PHP class useradmin extends db { private $pass; private $login; public function admin_user() { /* Проверка информации по пользователям из сесии*/ if (isset($_SESSION['login']) && isset($_SESSION['pass'])) { $ifuser = $this -> getNumRows($this -> query( "SELECT * FROM user WHERE login='" . $_SESSION['login'] . "' AND pass= '" . $_SESSION['pass'] . "' LIMIT 1; ")); if ($ifuser == 1) { return true; } } return false; } public function check_user() { // Проверка информации из формы авторизации if (isset($_POST['login']) && isset($_POST['pass']) && $_POST['login'] != '' && $_POST['pass'] != '') { // делаем проверку на всякие плохие символы и так далее. list($this -> pass, $this -> login) = checkword ::usermatch($_POST['pass'], $_POST['login']); $data = $this -> query(" SELECT * FROM user WHERE login='" . $this -> login . "' AND pass='" . $this -> pass . "' limit 1;"); $user_db = $this -> getAssocRow($data); if ($this -> getNumRows($data) != 1) { // такого пользователя нет в базе return false; } else { // пользователь найден // запиываем данные в сессию $_SESSION['id'] = $user_db['id']; $_SESSION["login"] = $this -> login; $_SESSION["pass"] = $this -> pass; return true; } } return false; } }
Пока нет md5, попозже как добью добавлю.(Отредактировано автором: 11 Ноября, 2011 - 20:08:48)
|