Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.08.2012, 12:39   #1
Alexander1311
Пользователь
 
Регистрация: 29.03.2012
Сообщений: 40
По умолчанию Защита админки

Здравствуйте, есть 4 файла
index.php-в нем форма для ввода логина и пароля;
login.php-
PHP код:
session_start();

$username $_POST["username"];
$password $_POST["password"];

if(
$password&&$username){
include(
"../blocks/bd.php"); 

$query mysql_query("SELECT * FROM userlist WHERE username='$username' ");
$numrows mysql_num_rows($query);

if(
$numrows !== 0){
    while(
$row mysql_fetch_assoc($query)){
    
$dbusername $row['username'];
    
$dbpassword $row['password'];
    }
    if(
$username == $dbusername&&$password == $dbpassword){
    echo 
"Вы вошли! <a href='member.php'>кликните</a> что бы перейти на страницу.";
    
$_SESSION['username'] = $dbusername;
    
    }
    else{
    echo
"неверный пароль!";
    }
}
else{
die (
"пользователь с таким именем не найден!");
}
echo (
$numrows); 
}
else{
die(
"Введите имя и пароль!");

member.php-
PHP код:
session_start();

if(
$_SESSION['username'])
    echo
"Здравствуйте, ".$_SESSION['username']."<br><a href='logout.php'>Выйти</a>";

else
echo
"Вы должны войти в систему!"
logout.php-
PHP код:
session_start();

session_destroy();

echo
"Вы вышли из системы. <a href='index.php'>Войти</a>"
Подскажите, как с их помощью защитить например 10 файлов, которые находятся в папке admin?
Заранее всем благодарен!
Alexander1311 вне форума Ответить с цитированием
Старый 12.08.2012, 12:51   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

В начале каждого из этих 10 файлов нужно просто проверять наличие значения в переменной $_SESSION['username'].
Если значения нет – отправляем юзера на страницу авторизации:
PHP код:
if(empty($_SESSION['username'])){
    
// перенаправление
    
header('Location: login.php');

В этом запросе возможна SQL-injection:
PHP код:
$query mysql_query("SELECT * FROM userlist WHERE username='$username' "); 
Andkorol вне форума Ответить с цитированием
Старый 12.08.2012, 12:57   #3
Alexander1311
Пользователь
 
Регистрация: 29.03.2012
Сообщений: 40
По умолчанию

За ответ спасибо)))
Цитата:
В этом запросе возможна SQL-injection
А как правильно защитить?
Alexander1311 вне форума Ответить с цитированием
Старый 12.08.2012, 13:03   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Alexander1311 Посмотреть сообщение
А как правильно защитить?
PHP код:
$query mysql_query("SELECT * FROM `userlist` 
         WHERE `username` = '" 
mysql_real_escape_string($username) . "' "); 
Защита от SQL-инъекций
Andkorol вне форума Ответить с цитированием
Старый 12.08.2012, 13:28   #5
Alexander1311
Пользователь
 
Регистрация: 29.03.2012
Сообщений: 40
По умолчанию

Andkorol,
Спасибо!
Alexander1311 вне форума Ответить с цитированием
Старый 12.08.2012, 13:47   #6
Alexander1311
Пользователь
 
Регистрация: 29.03.2012
Сообщений: 40
По умолчанию

Еще такой вопрос, все сделал как вы сказали, вроде работает) но не выходит, если нажать "выйти" переходит на страничку logout.php, все правильно. Но если попробовать снова войти то заходит и не просит вводить данные. Значит файл logout.php не удаляет данные. Как можно исправить?

Последний раз редактировалось Alexander1311; 12.08.2012 в 13:50.
Alexander1311 вне форума Ответить с цитированием
Старый 12.08.2012, 14:21   #7
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Добавить в logout.php:
PHP код:
$_SESSION['username'] = ''
Andkorol вне форума Ответить с цитированием
Старый 12.08.2012, 15:24   #8
Alexander1311
Пользователь
 
Регистрация: 29.03.2012
Сообщений: 40
По умолчанию

После нажатия на "выход", даже приходится наново авторизоваться на сайте, а вот доступ в админку все равно открыт(
Правда, код из файла member.php я добавил в каждый файл админки, а сам файл удалил.

Последний раз редактировалось Alexander1311; 12.08.2012 в 15:31.
Alexander1311 вне форума Ответить с цитированием
Старый 12.08.2012, 15:39   #9
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Alexander1311 Посмотреть сообщение
После нажатия на "выход", даже приходится наново авторизоваться на сайте, а вот доступ в админку все равно открыт(
Противоречиво.
Что значит "доступ в админку все равно открыт"?
Авторизация на сайте не должна пропускать юзеров с сайта в Админку – у Админа должен быть отдельный вход, отдельная от юзеров проверка доступа.
Организована она может быть по такому же принципу – но эта проверка должна быть реализована только под Админа.
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пароль для админки Catherina14 PHP 2 18.05.2012 16:25
Написание простенькой админки- 250 wmz johnymnemonic Фриланс 2 18.04.2012 02:09
WP. Две админки alex-chz WordPress и другие CMS 0 25.03.2010 10:22
Нужен программер для создания админки сайта Strellokk Фриланс 5 05.08.2009 18:17
реализация домашних страничек и админки Jensi PHP 6 11.05.2009 21:43