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

админка

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

Студворк — интернет-сервис помощи студентам
вот набросала тут админку
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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.11.2011, 04:18
Ответы с готовыми решениями:

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

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

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

31
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
18.11.2011, 12:25
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от little_dita Посмотреть сообщение
и всеравно открывает
у тя уже сессия есть, так как ты уже входила в админку.
или сделай при выходе смерть всем сессиям, либо перезапусти браузер.
можно еще и в самом браузе убить PHPSESSID
1
 Аватар для Sulik78
450 / 203 / 27
Регистрация: 23.12.2010
Сообщений: 645
18.11.2011, 12:26
little_dita, значит ADMIN = true
дайте весь код который у Вас сейчас
0
26 / 23 / 9
Регистрация: 12.08.2011
Сообщений: 576
18.11.2011, 12:32  [ТС]
Цитата Сообщение от Sulik78 Посмотреть сообщение
little_dita, значит ADMIN = true
дайте весь код который у Вас сейчас
index.php
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']) {
//Проверяем данные
//если нет сессии если есть и она проверку прошла то можно сразу 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']));
 
@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");}
?>
файл который защищаю
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php
if (!ADMIN)
{
  exit('ошибка');           
}
?>
<?php $titlepage =  "Редактирование/";?>
<?php include("header.php");?>  
<?php include("util/sitebar.php");?>  
    <h1><center>Здравствуйте, вы находитесь в редактировании ..</center></h1>
 
  <?php include("footer.php");?>
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
18.11.2011, 12:36
Цитата Сообщение от little_dita Посмотреть сообщение
if (!ADMIN) { exit('ошибка'); }
не правильно,
ведь файл который ты защищаешь не знает о существовании константы ADMIN, сессию надо проверять в остальных файлах
1
26 / 23 / 9
Регистрация: 12.08.2011
Сообщений: 576
18.11.2011, 13:09  [ТС]
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
не правильно,
ведь файл который ты защищаешь не знает о существовании константы ADMIN, сессию надо проверять в остальных файлах
файл index.php k нему подключить?

Добавлено через 30 минут
Love_and_Peace,
t.e весь файл опять вставлять в мой файл?
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
18.11.2011, 13:50
Цитата Сообщение от little_dita Посмотреть сообщение
t.e весь файл опять вставлять в мой файл?
нет же.
на странице входа создаешь сессию какую-нибудь
а на остальных страницах (файлах) запускаешь сессию и проверяешь есть ли у тя такая
PHP
1
2
3
4
5
6
session_start();
if (!isset($_SESSION['SID']))
{
   header('Location: index.php');
   die();
}
это должно работать, не пойму в чем проблема
1
 Аватар для Sulik78
450 / 203 / 27
Регистрация: 23.12.2010
Сообщений: 645
18.11.2011, 14:32
Цитата Сообщение от little_dita Посмотреть сообщение
файл index.php k нему подключить?
вынесите проверку в отдельный файл и подключайте его в каждом файле
1
135 / 135 / 29
Регистрация: 18.10.2011
Сообщений: 306
18.11.2011, 16:12
SQL
1
SELECT COUNT(*) AS admin FROM users WHERE nick='".$login."' AND password='".$upass."' AND STATUS=1
Статус == 1 - сигнатура админа или активации акка ?
PHP
1
define("ADMIN", (bool)$r['admin']);
В сессию можно занести.
PHP
1
$_SESSION['ADMIN'] = (bool)$r['admin'];
PHP
1
2
3
4
5
6
session_start();
if (!$_SESSION['ADMIN']) //Если не админ и если не инициализирована переменная
{
   header('Location: index.php');
   die();
}
И не надо никакие файлы подключать и лезть в базу лишний раз.

Добавлено через 14 минут
И не обязательно хеш ника и пароля в сессию заносить, можно и флажком login обойтись в базе.
PHP
1
2
3
4
5
6
7
8
$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']));
тут тоже интересно. Заносите выборку из базы в $r1, а значения берете из неопределенного массива $r

Добавлено через 3 минуты
А еще интереснее то, что при такой выборке
SQL
1
SELECT COUNT(*) AS admin FROM users WHERE nick='".$login."' AND password='".$upass."' AND STATUS=1
Никаких ников и паролей в ней не будет.
PHP
1
2
3
$_SESSION['user'] = $r['nick'];
$_SESSION['password'] = $r['password'];
$_SESSION['SID'] = md5(crypt($r['nick'],$r['password']));
Поэтому SID будет хешем пустой строки.
1
26 / 23 / 9
Регистрация: 12.08.2011
Сообщений: 576
18.11.2011, 20:30  [ТС]
Цитата Сообщение от Sulik78 Посмотреть сообщение
вынесите проверку в отдельный файл и подключайте его в каждом файле
сделала файл proverka.php
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
<?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']) {
echo 'вы не вошли в админку';
 
   $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");
}
 
}
   }
  if($_GET['exit']) {@session_destroy(); unset($_GET['exit']); mysql_close($link);   @Header("Location: index.php");}
?>
что в ней не так?
0
484 / 439 / 123
Регистрация: 05.01.2010
Сообщений: 1,848
18.11.2011, 21:30
а если вот так?
session_check.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
function session_check()
{
    session_start();
    if(isset($_SESSION['user'])) 
    {
                return TRUE;
    }
    else 
    {
        header("Location: http://".$_SERVER['SERVER_NAME']."/login.php");
        return FALSE;
    }
}
?>
и проверку

PHP
1
2
3
4
5
6
7
8
9
10
11
...
if(session_check() && другие проверки(если есть))
{
    // 
 
}
else
{
    echo "<h2>У вас недостаточно прав для просмотра страницы.</h2>";
    echo "<a href=http://".$_SERVER['SERVER_NAME']."/index.php>Нажмите сюда для перехода на главную</a>";
}
1
135 / 135 / 29
Регистрация: 18.10.2011
Сообщений: 306
18.11.2011, 21:43
Цитата Сообщение от little_dita Посмотреть сообщение
что в ней не так?
Вы сами то хоть поняли, что сейчас сделали ?) Вам нужно сделать так, что бы пользователи, у которых нет прав админа, не могли заходить на странички админки ?
Вам надо написать в файле ТОЛЬКО проверку:
Если текущий пользователь не является админом
То переадресовываем на начальную страницу
Иначе ничего не делаем.
Для того, что бы проверить является ли пользователь админом надо реализовывать систему привилегий пользователей. Самый простой вариант хранить в таблице флаг админ/пользователь.
Когда пользователь логинится, занести в сессию флаг и другие параметры. В остальных файлах админки проверять установлен ли флаг админа в сессии. Если нет или если пользователь не залогинен, то отправляем его на главную страницу/форму регистрации. И да, надо еще в базу добавить флаг залогинен/не залогинен и перенаправлять на главную с формы входа, если залогинен. Все.
Вариант посложнее : Создать таблицу, где связать id пользователя c id привилегии. В самом коде проверять какой уровень привилегий у пользователя и исходя из этого разрешать/запрещать делать что-либо. Пример такой реализации можно посмотреть в фреймворке кохана.
2
Веб-мастер
 Аватар для Maksimchikfull
89 / 89 / 19
Регистрация: 11.08.2011
Сообщений: 674
19.11.2011, 00:40
Мне лень было всё читать. Думаю самое простое если будет некая БД, в которой хранятся пользователи у которых(на пример) такие поля:
id
date
admin
login
pass

Пользователь ходит по всему сайту с сессией ID которая содержит ид пользователя. Можно добавить сессию ADMIN в которой будет хранится значение админа(0 или 1).

Если к примеру не использовать сессию ADMIN, то придётся всё время делать выборку из БД на проверку админки, это лишняя нагрузка только.

Если admin 0, то выкидует с админки на обычную страницу, иначе ничего не делает и продолжает свою работу.

Вот код который накалякал прям на форуме, работо-способность не гарантирую, потому что мог ошибки наляпать:

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
<?php
session_start();
$login = "admin";
$pass = "admin";
 
$row = mysql_fetch_array(mysql_query("SELECT `id`,`admin` FROM `users` WHERE `login` = '$login' AND `pass` = '$pass'"));
 
if($row['id'] != ""){
$_SESSION['ID'] = $row['id'];
$_SESSION['ADMIN'] = $row['admin'];
}
else{
// Неверный логин/пароль
}
 
// Страница админки
// Без сессии ADMIN
if($_SESSION['ID'] != ""){
$row = mysql_fetch_array(mysql_query("SELECT `admin` FROM `users` WHERE `id` = '$_SESSION[ID]'"));
if($row['admin'] == 1){
// Продолжаем работу страницы
}
else{
// Выкидываем на обычную страницу
}
}
 
// С сессией ADMIN
if($_SESSION['ID'] != ""){
if($_SESSION['ADMIN'] == 1){
// Продолжаем
}
else{
// Выкидываем
}
}
?>
Очень просто!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.11.2011, 00:40
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru