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 :: Доступ для зарегестрированных и незарегестрированным посетителям сайта к разным категориям страниц сайта [2]

 PHP.SU

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


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

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


Новичок


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


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




DiosPA пишет:
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. на форуме не плохо только если руки отрывать не будут Не понял если что то говорю не правильно поправляйте просто не все же гуру ;)


У меня тоже самое что вы советуете только написано по другому :

//проверяем авторизирован ли пользователь и если да то показываем публикацию
$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"]);
}

Но мне надо для неавторизированых и незарегестрированных пользователей показывать заметки категории "Просто страница" и не показывать заметки "Секретная страница".

Все заметки хранятся в таблице data. В этой таблице есть поле cat. Так вот с 1-й по 4-ю cat надо показывать всем (и залогиненым и не залогиненым и не зарегестрированным), а с 5-й по 10-ю cat показывать только залогиненым.

(Отредактировано автором: 27 Января, 2011 - 13:27:05)

 
 Top
DiosPA
Отправлено: 27 Января, 2011 - 13:50:24
Post Id



Частый гость


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


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




немного не понял в чём собственно проблема тогда xD
если он не залонинился\не зарегестрирован то он не смог выполнить вход
следовательно $_SESSION['id'] у него нету а раз нету то выводим все разделы только для гостей а в тех местах где надо выводить для "зареганых" мы выводим "выполните вход или зарегистрируйтесь"
SergAntDnepr если не понял то напиши в icq я не кусаюсь Голливудская улыбка
 
 Top
SergAntDnepr
Отправлено: 27 Января, 2011 - 13:59:40
Post Id


Новичок


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


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




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


Ну а как же указать языком php что надо выводить для гостей разделы (cat) только с 1 по 4, а все разделы только зологиненым?
 
 Top
DiosPA
Отправлено: 27 Января, 2011 - 14:07:06
Post Id



Частый гость


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


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




господи да обычным условием if ()
щас секунду погоди пример напишу тебе Улыбка
(Добавление)
вот элементарный пример
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. if (isset($_SESSION['id'])){$login = 1;} else {$login = 0;}
  4. ?>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
  7. <title>TEST</title>
  8. </head>
  9. <body>
  10. <?php
  11. $text1 = 'текст для всех<br>';
  12. $text2 = 'только для зарегестрированых';
  13. $forms = "<label>логин</label><input name='' type='text'>";
  14. echo $text1;
  15. if ($login  == 1) {echo $text2;} else {echo $forms;}
  16. ?>
  17. </body>
  18. </html>
  19.  

пример показывает только логику работы примера....
 
 Top
annihilus
Отправлено: 27 Января, 2011 - 14:29:42
Post Id



Гость


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


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




жуть...

Есть таблица с категориями , допустим такая:
id subject text
1 кат1 текст1
2 кат2 текст2
3 кат3 текст3

Что бы закрыть не зарегеным пользователям доступ к определенной категории вам надо добавить поле в эту таблицу , что бы она выглядела например так:

id subject text group
1 кат1 текст1 0
2 кат2 текст2 1
3 кат3 текст3 1

Далее в своем коде , вы проверяете зарегистрирован ли пользователь.
Проверили , если пользователь зарегистрирован достаете из БД все категории например так "select * from {название таблицы};" и показываете им результат.

Если пользователь не зарегистрирован , то достаете все категории у которых группа 0, тоесть так "select * from {название таблицы} where group=0;" и так же показываете им результат...

таким образом , если вы не зарегистированы , то увидите только категорию {кат1},
если вы зарегистированы , то увидите все категории.

(Отредактировано автором: 27 Января, 2011 - 14:30:31)

 
 Top
SergAntDnepr
Отправлено: 27 Января, 2011 - 14:37:49
Post Id


Новичок


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


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




Спасибо! Вот сейчас наверное получится! Это то что было нужно!
(Добавление)
annihilus пишет:
жуть...

Есть таблица с категориями , допустим такая:
id subject text
1 кат1 текст1
2 кат2 текст2
3 кат3 текст3

Что бы закрыть не зарегеным пользователям доступ к определенной категории вам надо добавить поле в эту таблицу , что бы она выглядела например так:

id subject text group
1 кат1 текст1 0
2 кат2 текст2 1
3 кат3 текст3 1

Далее в своем коде , вы проверяете зарегистрирован ли пользователь.
Проверили , если пользователь зарегистрирован достаете из БД все категории например так "select * from {название таблицы};" и показываете им результат.

Если пользователь не зарегистрирован , то достаете все категории у которых группа 0, тоесть так "select * from {название таблицы} where group=0;" и так же показываете им результат...

таким образом , если вы не зарегистированы , то увидите только категорию {кат1},
если вы зарегистированы , то увидите все категории.


Решил попробовать вашим способом.
В таблицу data
id cat meta_d meta_k description text view author date mini_img title h2 h2_categories
добавил поле group
затем пишу так:
<?
$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 ("<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"]);
}
else
{
$result98 = mysql_query("SELECT * FROM data WHERE group=0",$db);
{
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>",$myrow98["title"],$myrow98["text"],$myrow98["author"],$myrow98["date"],$myrow98["view"]);
}
}

?>
Но теперь если незалогинен выводит просто вот так:
Автор:
Дата:
Просмотров:
Вот только 3 слова и больше ничего на всех категориях и где group 1 и group 0

Подскажите пожалуйста где я ошибся
 
 Top
annihilus
Отправлено: 27 Января, 2011 - 16:01:18
Post Id



Гость


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


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




Возможно из-за того что вы забыли выполнить

после
PHP:
скопировать код в буфер обмена
  1. $result98 = mysql_query("SELECT * FROM data WHERE group=0",$db);

(Отредактировано автором: 27 Января, 2011 - 16:03:03)

 
 Top
SergAntDnepr
Отправлено: 27 Января, 2011 - 16:39:39
Post Id


Новичок


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


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




annihilus пишет:
Возможно из-за того что вы забыли выполнить

после
PHP:
скопировать код в буфер обмена
  1. $result98 = mysql_query("SELECT * FROM data WHERE group=0",$db);


Дословно так
<?
$result99 = mysql_query("SELECT * FROM data WHERE id='$id'",$db);
$myrow99 = mysql_fetch_array($result99);
$result98 = mysql_query("SELECT * FROM data WHERE group='0'",$db);
$myrow98 = mysql_fetch_array($result98);

$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 ("<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"]);
}
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>",$myrow98["title"],$myrow98["text"],$myrow98["author"],$myrow98["date"],$myrow98["view"]);
}

?>

А выводит так Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in Z:\home\test1.ru\www\view_post.php on line 91

Автор:
Дата:
Просмотров:

Ошибка в этой строке:
$myrow98 = mysql_fetch_array($result98);
 
 Top
annihilus
Отправлено: 27 Января, 2011 - 16:45:49
Post Id



Гость


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


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




SergAntDnepr пишет:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in Z:\home\test1.ru\www\view_post.php on line 91


http://forum.php.su/topic.php?fo...8&topic=1140
 
 Top
SergAntDnepr
Отправлено: 28 Января, 2011 - 13:03:38
Post Id


Новичок


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


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




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

$result98 = mysql_query("SELECT * FROM data WHERE id='$id' AND group='0'",$db);
$myrow98 = mysql_fetch_array($result98);

$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 ("<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"]);
}

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>",$myrow98["title"],$myrow98["text"],$myrow98["author"],$myrow98["date"],$myrow98["view"]);
}

Подскажите, пожалуйста, что тут не так. Почему else не срабатывает?
поле group='0' в таблице data - это поле по которому определяется доступность заметки.

Логика вышеприведенного кода такая: Если залогиненый показываем $result99, в противном случае $result98

Что может быть не так??? Пожалуйста помогите!
 
 Top
annihilus
Отправлено: 28 Января, 2011 - 14:53:18
Post Id



Гость


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


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




SergAntDnepr пишет:
Почему else не срабатывает?

Потому что условие всегда положительно. Тоесть $myrow_secret['id'] всегда не пуста.

Смотрите какие данные из БД получаете.

(Отредактировано автором: 28 Января, 2011 - 15:02:45)

 
 Top
movEAX
Отправлено: 28 Января, 2011 - 21:28:07
Post Id



Частый посетитель


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


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






-----
армия.. самое убогое место
 
 Top
SergAntDnepr
Отправлено: 28 Января, 2011 - 22:07:47
Post Id


Новичок


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


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




И на том спасибо.
 
 Top
annihilus
Отправлено: 29 Января, 2011 - 00:08:32
Post Id



Гость


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


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




movEAX пишет:
Если надоест изобретать велосипед, то можно пройтись по ссылкам ниже:

А смысл тогда вообще изучать PHP , если можно скачать CMS, форум, заказать сайт, добавить пару скриптов и т.д.
 
 Top
movEAX
Отправлено: 29 Января, 2011 - 07:29:03
Post Id



Частый посетитель


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


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




annihilus пишет:
А смысл тогда вообще изучать PHP , если можно скачать CMS, форум, заказать сайт, добавить пару скриптов и т.д.

Фреймворки еще забыли. Без знаний php все перечисленное трудно будет расширять и допиливать.


-----
армия.. самое убогое место
 
 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