Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.59/63: Рейтинг темы: голосов - 63, средняя оценка - 4.59
26 / 23 / 9
Регистрация: 12.08.2011
Сообщений: 576
1

админка

18.11.2011, 04:18. Показов 11745. Ответов 31
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
вот набросала тут админку
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php
session_start();
//Поключаем конфиг
include("config.php");
 
//Необходимо подключиться к БД
$link = mysql_connect($dblocation, $dbuser, $dbpasswd)
or die("Не могу подключиться" );
// сделать $DB текущей базой данных
mysql_select_db($dbname, $link) or die ('Не могу выбрать БД');
 
//Если нет сессий
if(md5(crypt($_SESSION['user'],$_SESSION['password'])) != $_SESSION['SID']) {
 //Если кнопка не нажата, отображаем форму
if(!$_POST['do']){
 
echo '
<a href="registration.php">регистрация</a> <br/><br/>
<form name="1" action="" method="post">
     <input name="login" type="text" value=""> <br/>
     <input name="password" type="password" value="">  <br/>
     <input name="do" type="submit" value="Войти">
</form>';
 
}
//Если кнопка нажата
if($_POST['do']) {
//Проверяем данные
$login = $_POST['login'];
$upass = $_POST['password'];
if($login !='' AND $upass !='') {
//Создаем запрос
$q1=mysql_query("SELECT * FROM users WHERE nick='".$login."' AND password='".md5($upass)."' AND status=1");
 
//Проверяем существует ли хоть одна запись
if(mysql_num_rows($q1)===1) {
//Если есть, то создаем сессии и перенаправляем на эту страницу
$r=mysql_fetch_array($q1);
$_SESSION['user'] = $r['nick'];
$_SESSION['password'] = $r['password'];
 
$_SESSION['SID'] = md5(crypt($r['nick'],$r['password']));
 
@Header("Location: index.php");
}
else {echo 'Неверный логин/пароль; Возможно Ваш аккаунт не активирован';}
}
}
else {echo 'Введите данные';}
}
else {
 
   $q2 = @mysql_query("SELECT * FROM users WHERE nick='".$_SESSION['user']."' AND password='".$_SESSION['password']."' AND status=1");
if(@mysql_num_rows($q2)==1){
   $r2 = @mysql_fetch_array($q2);
 ?>  
   <right><?php echo 'Здравствуйте '.ucfirst($r2['nick']).'<span style="padding:0px 10px;">';?>
<? echo '<a href="index.php?exit=1">выход</a>';?></right>
 <?  
if($_GET['page'] !='') {
@include("tpl/".$_GET['page'].".php");
}
else { @include("privetstvie.php");}
 
}
   }
  if($_GET['exit']) {@session_destroy(); unset($_GET['exit']); mysql_close($link);   @Header("Location: index.php");}
?>
работает так захожу site.com/admin/
показывается форма входа ввожу данные и открывзется то что вы видите
вопрос такой как защитить другие страницы админки?
или это можно только если везде этот большой код вставлять?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.11.2011, 04:18
Ответы с готовыми решениями:

Админка
Всем привет! Я новичек в php! и хочу сделать админку себе на сайт(самопис портал)! Мне сказали что...

Админка на сайте
Помогите сделать админку))))) У меня не получаеться она (всё что выходит это с куками и сесией)....

Админка - защита
как по авторизации войдя в учетную запись ввести разного рода операции , которые не будут доступны...

Админка в WordPress
Я знаю php, ооп, но с WP никогда не работал, скажите могу ли я в админку сайта добавить подраздел и...

31
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
18.11.2011, 06:43 2
Используй .htaccess
0
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
18.11.2011, 08:40 3
Цитата Сообщение от little_dita Посмотреть сообщение
вопрос такой как защитить другие страницы админки?
используй сессии. При успешном входе в панель админа открывается сессия, назови ее напр. $_SESSION['admin']. И на каждой странице надо будет проверять существует ли такая сессия, если нет die(); напр., или на страницу 404.
Если у тя будет одна точка входа, то проверка будет только в одном файле (в файле точки входа)
1
26 / 23 / 9
Регистрация: 12.08.2011
Сообщений: 576
18.11.2011, 08:58  [ТС] 4
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
используй сессии
a подскажите пожайлуста как это реализовать
например есть станица
PHP
1
2
3
4
5
6
<?php $titlepage =  "Редактирование/";?>
<?php include("header.php");?>  
<?php include("util/sitebar.php");?>  
    <h1><center>Здравствуйте, вы находитесь в редактировании ..</center></h1>
 
  <?php include("footer.php");?>
kak к ней это все прикрепить
0
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
18.11.2011, 09:36 5
ну как, у вас есть страница входа, там и пишите при удачном входе..
PHP
1
2
3
4
5
6
7
8
9
10
11
12
if (условие входа, напр., - правильные логин и пароль)
{
    // Создаем сессию с логическим значением. хотя можете с любым другим значением
    $_SESSION['admin'] = true;  
}
 
// и проверка
if(isset($_SESSION['admin']))
{
     header('Location: главная страница админки.php');
     die();             
}
а на остальных страницах надо будет теперь проверять открыта ли сессия или нет
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
if(!isset($_SESSION['admin']))
{
     header('Location: страница входа в админку.php');
     die();             
}
?>
<?php $titlepage =  "Редактирование/";?>
<?php include("header.php");?>  
<?php include("util/sitebar.php");?>  
    <h1><center>Здравствуйте, вы находитесь в редактировании ..</center></h1>
 
  <?php include("footer.php");?>
2
26 / 23 / 9
Регистрация: 12.08.2011
Сообщений: 576
18.11.2011, 10:23  [ТС] 6
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
ну как, у вас есть страница входа, там и пишите при удачном входе..
a куда мне его вставить в моем случаи как то не пойму?
0
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
18.11.2011, 10:41 7
сама же пишешь
Цитата Сообщение от little_dita Посмотреть сообщение
работает так захожу site.com/admin/
т.е., мы попадаем на какой-то файл (не главный файл админки, а как бы промежуточный). И там уже решается пускать чека в админку или нет. Если пускаем, то запускаем сессию, иначе обратно же на промежуточный файл.
1
26 / 23 / 9
Регистрация: 12.08.2011
Сообщений: 576
18.11.2011, 10:51  [ТС] 8
Love_and_Peace,
это я поняла)
я не поняла куда мне это вставить в моем случаи
PHP
1
2
3
4
5
6
7
8
9
10
11
12
if (условие входа, напр., - правильные логин и пароль)
{
    // Создаем сессию с логическим значением. хотя можете с любым другим значением
    $_SESSION['admin'] = true;  
}
 
// и проверка
if(isset($_SESSION['admin']))
{
     header('Location: главная страница админки.php');
     die();             
}
0
450 / 203 / 27
Регистрация: 23.12.2010
Сообщений: 645
18.11.2011, 11:36 9
little_dita, в данном коде изначально sql инъекция поэтому если нужно что либо защитить надо сначала ее прикрыть
PHP
1
$q1=mysql_query(sprintf("SELECT * FROM users WHERE nick='%s' AND password='%s' AND status=1", mysql_real_escape_string($login), mysql_real_escape_string(md5($password)));
1
26 / 23 / 9
Регистрация: 12.08.2011
Сообщений: 576
18.11.2011, 11:39  [ТС] 10
Цитата Сообщение от Sulik78 Посмотреть сообщение
little_dita, в данном коде изначально sql инъекция поэтому если нужно что либо защитить надо сначала ее прикрыть
PHP
1
$q1=mysql_query(sprintf("SELECT * FROM users WHERE nick='%s' AND password='%s' AND status=1", mysql_real_escape_string($login), mysql_real_escape_string(md5($password)));
a можите подсказать просто с регистрацией первый раз сталкиваюсь(
0
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
18.11.2011, 11:40 11
Цитата Сообщение от little_dita Посмотреть сообщение
я не поняла куда мне это вставить в моем случаи
в файл обработчик входа в админку. ну где у тя форма входа
1
26 / 23 / 9
Регистрация: 12.08.2011
Сообщений: 576
18.11.2011, 11:43  [ТС] 12
Love_and_Peace,
так что ли
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?php
session_start();
//Поключаем конфиг
include("config.php");
 
//Необходимо подключиться к БД
$link = mysql_connect($dblocation, $dbuser, $dbpasswd)
or die("Не могу подключиться" );
// сделать $DB текущей базой данных
mysql_select_db($dbname, $link) or die ('Не могу выбрать БД');
 
//Если нет сессий
if(md5(crypt($_SESSION['user'],$_SESSION['password'])) != $_SESSION['SID']) {
 //Если кнопка не нажата, отображаем форму
if(!$_POST['do']){
 
echo '
<a href="registration.php">регистрация</a> <br/><br/>
<form name="1" action="" method="post">
     <input name="login" type="text" value=""> <br/>
     <input name="password" type="password" value="">  <br/>
     <input name="do" type="submit" value="Войти">
</form>';
if (условие входа, напр., - правильные логин и пароль)
{
    // Создаем сессию с логическим значением. хотя можете с любым другим значением
    $_SESSION['admin'] = true;  
}
 
// и проверка
if(isset($_SESSION['admin']))
{
     header('Location: index.php');
     die();             
}
 
}
//Если кнопка нажата
if($_POST['do']) {
//Проверяем данные
$login = $_POST['login'];
$upass = $_POST['password'];
if($login !='' AND $upass !='') {
//Создаем запрос
$q1=mysql_query("SELECT * FROM users WHERE nick='".$login."' AND password='".md5($upass)."' AND status=1");
 
//Проверяем существует ли хоть одна запись
if(mysql_num_rows($q1)===1) {
//Если есть, то создаем сессии и перенаправляем на эту страницу
$r=mysql_fetch_array($q1);
$_SESSION['user'] = $r['nick'];
$_SESSION['password'] = $r['password'];
 
$_SESSION['SID'] = md5(crypt($r['nick'],$r['password']));
 
@Header("Location: index.php");
}
else {echo 'Неверный логин/пароль; Возможно Ваш аккаунт не активирован';}
}
}
else {echo 'Введите данные';}
}
else {
 
   $q2 = @mysql_query("SELECT * FROM users WHERE nick='".$_SESSION['user']."' AND password='".$_SESSION['password']."' AND status=1");
if(@mysql_num_rows($q2)==1){
   $r2 = @mysql_fetch_array($q2);
 ?>  
   <right><?php echo 'Здравствуйте '.ucfirst($r2['nick']).'<span style="padding:0px 10px;">';?>
<? echo '<a href="index.php?exit=1">выход</a>';?></right>
 <?  
if($_GET['page'] !='') {
@include("tpl/".$_GET['page'].".php");
}
else { @include("privetstvie.php");}
 
}
   }
  if($_GET['exit']) {@session_destroy(); unset($_GET['exit']); mysql_close($link);   @Header("Location: index.php");}
?>
0
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
18.11.2011, 11:49 13
Цитата Сообщение от little_dita Посмотреть сообщение
так что ли
так у тя же есть уже сессия, я даже твой код не посмотрел сначала
Вот его проверяй в начале каждой странице админки
Цитата Сообщение от little_dita Посмотреть сообщение
$_SESSION['SID'] = md5(crypt($r['nick'],$r['password']));
PHP
1
2
3
4
5
if(!isset($_SESSION['SID']))
{
     header('Location: index.php');
     die();             
}
кроме индексного файла в твоем случае получается

Добавлено через 51 секунду
а то что вписала, мою проверку, убери
1
450 / 203 / 27
Регистрация: 23.12.2010
Сообщений: 645
18.11.2011, 11:50 14
little_dita, думаю проще будет написать функцию проверки
залогинен админ или нет например
PHP
1
2
3
4
5
function isAdmin()
{
 $query = "запрос в базу проверяющий сессию/куки"
 return (условие) true ? false;
}
затем вызывать ее в каждом файле
PHP
1
2
3
4
if (!isAdmin())
{
  exit('Доступ запрещен');
}
если не админ - дальше не продолжать выполнять скрипт
или можно задать в константе
PHP
1
2
3
4
5
6
define("ADMIN", true);
// но смысл тот же
if (!defined("ADMIN"))
{
  exit('.......');
}
0
26 / 23 / 9
Регистрация: 12.08.2011
Сообщений: 576
18.11.2011, 11:54  [ТС] 15
Love_and_Peace,
сделала так
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php
session_start();
//Поключаем конфиг
include("config.php");
 
//Необходимо подключиться к БД
$link = mysql_connect($dblocation, $dbuser, $dbpasswd)
or die("Не могу подключиться" );
// сделать $DB текущей базой данных
mysql_select_db($dbname, $link) or die ('Не могу выбрать БД');
 
//Если нет сессий
if(md5(crypt($_SESSION['user'],$_SESSION['password'])) != $_SESSION['SID']) {
 //Если кнопка не нажата, отображаем форму
if(!$_POST['do']){
 
echo '
<a href="registration.php">регистрация</a> <br/><br/>
<form name="1" action="" method="post">
     <input name="login" type="text" value=""> <br/>
     <input name="password" type="password" value="">  <br/>
     <input name="do" type="submit" value="Войти">
</form>';
if(!isset($_SESSION['SID']))
{
     header('Location: index.php');
     die();             
}
 
}
//Если кнопка нажата
if($_POST['do']) {
//Проверяем данные
$login = $_POST['login'];
$upass = $_POST['password'];
if($login !='' AND $upass !='') {
//Создаем запрос
$q1=mysql_query("SELECT * FROM users WHERE nick='".$login."' AND password='".md5($upass)."' AND status=1");
 
//Проверяем существует ли хоть одна запись
if(mysql_num_rows($q1)===1) {
//Если есть, то создаем сессии и перенаправляем на эту страницу
$r=mysql_fetch_array($q1);
$_SESSION['user'] = $r['nick'];
$_SESSION['password'] = $r['password'];
 
$_SESSION['SID'] = md5(crypt($r['nick'],$r['password']));
 
@Header("Location: index.php");
}
else {echo 'Неверный логин/пароль; Возможно Ваш аккаунт не активирован';}
}
}
else {echo 'Введите данные';}
}
else {
 
   $q2 = @mysql_query("SELECT * FROM users WHERE nick='".$_SESSION['user']."' AND password='".$_SESSION['password']."' AND status=1");
if(@mysql_num_rows($q2)==1){
   $r2 = @mysql_fetch_array($q2);
 ?>  
   <right><?php echo 'Здравствуйте '.ucfirst($r2['nick']).'<span style="padding:0px 10px;">';?>
<? echo '<a href="index.php?exit=1">выход</a>';?></right>
 <?  
if($_GET['page'] !='') {
@include("tpl/".$_GET['page'].".php");
}
else { @include("privetstvie.php");}
 
}
   }
  if($_GET['exit']) {@session_destroy(); unset($_GET['exit']); mysql_close($link);   @Header("Location: index.php");}
?>
теперь захожу в админку а он выдает что невозможно отобразить страницу(((
0
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
18.11.2011, 12:02 16
Цитата Сообщение от little_dita Посмотреть сообщение
теперь захожу в админку а он выдает что невозможно отобразить страницу(((
я ж написал
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
кроме индексного файла в твоем случае получается
1
450 / 203 / 27
Регистрация: 23.12.2010
Сообщений: 645
18.11.2011, 12:07 17
little_dita,
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
.........
//Проверяем данные
//если нет сессии если есть и она проверку прошла то можно сразу define('ADMIN', true);
$login = !empty($_POST['login']) ? mysql_real_escape_string($_POST['login']) : false;
$upass = !empty($_POST['password']) ? md5($_POST['password']) : false;
if($login && $upass) {
//Создаем запрос
$q1=mysql_query("SELECT COUNT(*) AS admin FROM users WHERE nick='".$login."' AND password='".$upass."' AND status=1");
 $r1 = mysql_fetch_assoc($q1);
 define("ADMIN", (bool)$r['admin']);
 if(ADMIN)
 {
   $_SESSION['user'] = $r['nick'];
   $_SESSION['password'] = $r['password'];
   $_SESSION['SID'] = md5(crypt($r['nick'],$r['password']));
 }
}
............
далее в файлах которые необходимо защитить в самом начале
PHP
1
2
3
4
if (!ADMIN)
{
  exit('ошибка');
}
0
26 / 23 / 9
Регистрация: 12.08.2011
Сообщений: 576
18.11.2011, 12:09  [ТС] 18
Love_and_Peace,
а исправила)))
а теперь в plan.php
дописала сверху вот это
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
if(!isset($_SESSION['SID']))
{
     header('Location: index.php');
     die();             
}
?><?php
if(!isset($_SESSION['SID']))
{
     header('Location: index.php');
     die();             
}
?>
и он при в ходи на эту страницу все всремя на index.php переводит даже если вошла(ну не на саму форму а на эту страницу else { @include("privetstvie.php");})
0
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
18.11.2011, 12:17 19
мм.., попробуй сделать как Sulik78 говорит.
Не пойму зачем 2 раза делать проверку.
если не сработает попробуй перезагрузить браузер
0
26 / 23 / 9
Регистрация: 12.08.2011
Сообщений: 576
18.11.2011, 12:18  [ТС] 20
Цитата Сообщение от Sulik78 Посмотреть сообщение
далее в файлах которые необходимо защитить в самом начале
записала в начале каждого файла так
PHP
1
2
3
4
5
6
<?php
if (!ADMIN)
{
  exit('ошибка');
}
?>
и всеравно открывает
0
18.11.2011, 12:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.11.2011, 12:18
Помогаю со студенческими работами здесь

Админка, добавить картинку
Всем привет, кто знает как делается и как можно сделать загрузку изображения на сайт через админку....

Админка для сайта
Добрый день ! недавно начал изучать php и другие языки веб-программирования, сейчас пишу сайт. Мне...

Админка для сайта
Скиньте пожалуста основу для админки, или ссилки на сайти по админках. Очень нужно.

простейшая админка php
Добрый день. Имеется файл config.php, хочу сделать для него простую админку, чтоб через форму...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru