Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Доступ для зарегестрированных и незарегестрированным посетителям сайта к разным категориям страниц сайта

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: Разграничение прав доступа к разным страницам сайта
SergAntDnepr
Отправлено: 26 Января, 2011 - 18:54:45
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




Здесь ниже всем зарегистрированным пользователям разрешено просматривать все публикации всех категорий выводимых на эту страницу. А как сделать так чтобы с 1-й по 4-ю категорию (cat) можно было всем смотреть, а с 5-й по 10-ю только зарегистрированным??? Подскажите ПОЖАЛУЙСТА!!!
<?php

session_start();

include ("bd.php");

if (isset($_COOKIE['auto']) and isset($_COOKIE['login']) and isset($_COOKIE['password']))
{//если есть необходимые переменные
if ($_COOKIE['auto'] == 'yes') {
$_SESSION['password']=strrev(md5($_COOKIE['password']));
$_SESSION['login']=$_COOKIE['login'];//сессия с логином
$_SESSION['id']=$_COOKIE['id'];//идентификатор пользователя
}
}

if (!empty($_SESSION['login']) and !empty($_SESSION['password']))
{
//если существет логин и пароль в сессиях, то проверяем их и извлекаем аватар
$login = $_SESSION['login'];
$password = $_SESSION['password'];
$result = mysql_query("SELECT id,avatar FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db);
$myrow = mysql_fetch_array($result);
//извлекаем нужные данные о пользователе
}
if (isset($_GET['id'])) {$id = $_GET['id']; }
if (!isset($id)) {$id = 1;}

/* Проверяем, является ли переменная числом */
if (!preg_match("|^[\d]+$|", $id)) {
exit ("<p>Неверный формат запроса! Проверьте URL!");
}

$result99 = mysql_query("SELECT * FROM data WHERE id='$id'",$db);

//проверяем авторизирован ли пользователь и если да то показываем публикацию
$result_secret = mysql_query("SELECT * FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db);
$myrow_secret = mysql_fetch_array($result_secret);
if (empty($myrow_secret['id']))
{
printf ("Эта публикация доступна только зарегистрированным пользователям!");
}
else
{
printf ("<p class='post_title2'>%s</p><p class='post_text'>%s</p><p class='post_adds'>Автор: %s</p><p class='post_adds'>Дата: %s</p><p class='post_view'>Просмотров: %s</p>",$myrow99["title"],$myrow99["text"],$myrow99["author"],$myrow99["date"],$myrow99["view"]);
}
?>
 
 Top
annihilus
Отправлено: 26 Января, 2011 - 19:54:12
Post Id



Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Нояб. 2009  


Помог: 0 раз(а)




жесть
 
 Top
SergAntDnepr
Отправлено: 26 Января, 2011 - 19:58:24
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




Простите, я новичёк в php. annihilus, почему жесть?
 
 Top
annihilus
Отправлено: 26 Января, 2011 - 20:16:45
Post Id



Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Нояб. 2009  


Помог: 0 раз(а)




SergAntDnepr пишет:
почему жесть?

слишком много букв Улыбка

добавьте значения к категориям , например к категории 1-4 значение 1 , на остальные 2.
потом если пользователь зарегистрирован показывайте все категории , а если нет то только те у которых значение 1... Что такое?

(Отредактировано автором: 26 Января, 2011 - 20:18:53)

 
 Top
SergAntDnepr
Отправлено: 26 Января, 2011 - 20:26:54
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




Annihilus, а куда и что надо добавить? Ещё раз прошу прощения в php только вникаю, код читаю, понимаю, а писать пока не могу. Очень прошу помогите. Уже и так пробовал и наперекосяк.
 
 Top
DiosPA
Отправлено: 26 Января, 2011 - 21:01:53
Post Id



Частый гость


Покинул форум
Сообщений всего: 180
Дата рег-ции: Янв. 2011  
Откуда: Россия


Помог: 2 раз(а)




вобще логика доступа простая допустим есть 3 странички
1 - доступ всем
2 - только зарегистрированным
3 - только группе зарегистрированных
----------
делаем так в 1 странице всё просто открыто и нормально Улыбка
2 проверяем сесси и куки если есть то ОК если нет то направляем на регенерацию
3 посложнее но логика тоже очень простая Улыбка проверяем сесси и куки всё как во втором случае если всё окей лезим в БД или кудаугодно смотрим есть ли у пользователя разрешение к просмотру если есть то открываем
----------
доступ типа такого
login = afla
pass = ***
dostup = 1
-----------
проверяем обычным IFом мол если доступ = 1 то всё ок если не равно тогда пишем доступ закрыт сорри Улыбка

надеюсь всё понятно Улыбка
 
 Top
SergAntDnepr
Отправлено: 26 Января, 2011 - 21:07:54
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




Попробую. В любом случае спасибо.
 
 Top
DiosPA
Отправлено: 26 Января, 2011 - 21:16:42
Post Id



Частый гость


Покинул форум
Сообщений всего: 180
Дата рег-ции: Янв. 2011  
Откуда: Россия


Помог: 2 раз(а)




это просто на самом деле Улыбка просто главное смотреть доступ можно по разному можно каждому пользователю давать свой доступ или в "доступе" указывать пользователей которые могут смотреть страничку Улыбка
иногда все два способа нужны это для более сложных проектов Улыбка
вот например как в соц сетях... Улыбка
если что пиши в icq разберёмся ;)
 
 Top
SergAntDnepr
Отправлено: 26 Января, 2011 - 21:25:15
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




DiosPA, пожалуйста поясните что такое -направляем на регенерацию-
 
 Top
DiosPA
Отправлено: 27 Января, 2011 - 01:33:07
Post Id



Частый гость


Покинул форум
Сообщений всего: 180
Дата рег-ции: Янв. 2011  
Откуда: Россия


Помог: 2 раз(а)




если пользователь не имее доступа мы перенаплавляем его так

PHP:
скопировать код в буфер обмена
  1. echo "<body><HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'></HEAD></body>";

вот так Ниндзя
но не забываем после этой надписи поставить exit; или ещё что то чтобы скрипт далее не отобразился на 100% Улыбка
 
 Top
SergAntDnepr
Отправлено: 27 Января, 2011 - 08:52:07
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




Мне кажется, что сначала надо выяснить публикацию какой категории хочет просмотреть пользователь. Если номер категории больше четвёртой, то $mysecret = 0;
остальные категории $mysecret = 1;

$result_cat = mysql_query("SELECT cat FROM data WHERE cat='$cat'",$db);
$myrow_cat = mysql_fetch_array($result_cat);
if {
$myrow_cat['cat'] > 4;
$mysecret = 0;
}
else {
$mysecret = 1;
}

А затем после строчки if (empty($myrow_secret['id']))
дописать && ($mysecret = 1;)

{
printf ("Эта публикация доступна только зарегистрированным пользователям!");
}

Может так? Хотя с синтаксисом наверное напутал.
(Добавление)
Вернее && ($mysecret == 1;)
(Добавление)
Пишет что -
Parse error: syntax error, unexpected ';' in Z:\home\test1.ru\www\view_post.php on line 91
Вот в этой строке -
$myrow_cat['cat'] > 4;

Наверное не так надо указывать категорию???

Подскажите кто нибудь. Прошу!
 
 Top
Uchkuma
Отправлено: 27 Января, 2011 - 10:07:48
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




DiosPA пишет:
если пользователь не имее доступа мы перенаплавляем его так
PHP:
скопировать код в буфер обмена
  1. echo "<body><HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'></HEAD></body>";
Руки отрывать за такие перенаплавления!

И не говорить "но ведь работает же"!

SergAntDnepr, оформите код во всех своих постах, как это делают другие.
(Добавление)
SergAntDnepr пишет:
Пишет что -
Parse error: syntax error, unexpected ';' in Z:\home\test1.ru\www\view_post.php on line 91
Есть онлайн-переводчики.
 
 Top
DiosPA
Отправлено: 27 Января, 2011 - 11:41:10
Post Id



Частый гость


Покинул форум
Сообщений всего: 180
Дата рег-ции: Янв. 2011  
Откуда: Россия


Помог: 2 раз(а)




Цитата:
Руки отрывать за такие перенаплавления!

кто как хочет :P
этот способ тоже нужно и можно использовать когда необходимо. Улыбка
 
 Top
SergAntDnepr
Отправлено: 27 Января, 2011 - 11:57:50
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




DiosPA пишет:
если пользователь не имее доступа мы перенаплавляем его так


Ну а как же всё таки узнать имеет доступ пользователь к данной категории или не имеет?
 
 Top
DiosPA
Отправлено: 27 Января, 2011 - 13:06:49
Post Id



Частый гость


Покинул форум
Сообщений всего: 180
Дата рег-ции: Янв. 2011  
Откуда: Россия


Помог: 2 раз(а)




SergAntDnepr - у вас сайт использует БД ?
если да то там скорее всего есть таблица с пользователями (логин\пароль)
------
делаем допустим такую структуру таблици:
-------------------------------- --
id -- login -- Pass -- Group --
1 -- Admin -- 123 -- 0 --
2 -- Moder -- 123 -- 1 --
3 -- User -- 123 -- 3 --
-------------------------------- --
когда пользователь залогинился (вошёл на сайт) регистрируем в сесси переменную:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $_SESSION['id'] = $group;
  3. //где - $group это # Группы из таблици БД или файла (в зависимости от сайта)
  4.  

в скрите в котором доступ :
проверка что пользователь вообще залогинился проверяем существование сессии
проверяем существование
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. if (isset ($_SESSION['id'])) {$id_group = $_SESSION['id'];} else {exit 'выполните вход';}
  3. //присвоили  $id_group = $_SESSION['id'];
  4. if ($id_group = 0) {echo 'ADMIN';} else {echo 'сорри нету доступа';}
  5.  

(Добавление)
Ps. на форуме не плохо только если руки отрывать не будут Не понял если что то говорю не правильно поправляйте просто не все же гуру ;)
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB