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]
Покинул форум
Сообщений всего: 24
Дата рег-ции: Февр. 2010
Помог: 0 раз(а)
DiosPA пишет:
SergAntDnepr - у вас сайт использует БД ?
если да то там скорее всего есть таблица с пользователями (логин\пароль)
------
делаем допустим такую структуру таблици:
-------------------------------- --
id -- login -- Pass -- Group --
1 -- Admin -- 123 -- 0 --
2 -- Moder -- 123 -- 1 --
3 -- User -- 123 -- 3 --
-------------------------------- --
когда пользователь залогинился (вошёл на сайт) регистрируем в сесси переменную:
(Добавление)
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 показывать только залогиненым.
Покинул форум
Сообщений всего: 180
Дата рег-ции: Янв. 2011 Откуда: Россия
Помог: 2 раз(а)
немного не понял в чём собственно проблема тогда xD
если он не залонинился\не зарегестрирован то он не смог выполнить вход
следовательно $_SESSION['id'] у него нету а раз нету то выводим все разделы только для гостей а в тех местах где надо выводить для "зареганых" мы выводим "выполните вход или зарегистрируйтесь" SergAntDnepr если не понял то напиши в icq я не кусаюсь
SergAntDnepr
Отправлено: 27 Января, 2011 - 13:59:40
Новичок
Покинул форум
Сообщений всего: 24
Дата рег-ции: Февр. 2010
Помог: 0 раз(а)
DiosPA пишет:
а раз нету то выводим все разделы только для гостей
Ну а как же указать языком php что надо выводить для гостей разделы (cat) только с 1 по 4, а все разделы только зологиненым?
DiosPA
Отправлено: 27 Января, 2011 - 14:07:06
Частый гость
Покинул форум
Сообщений всего: 180
Дата рег-ции: Янв. 2011 Откуда: Россия
Помог: 2 раз(а)
господи да обычным условием if ()
щас секунду погоди пример напишу тебе (Добавление)
вот элементарный пример
пример показывает только логику работы примера....
annihilus
Отправлено: 27 Января, 2011 - 14:29:42
Гость
Покинул форум
Сообщений всего: 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},
если вы зарегистированы , то увидите все категории.
Покинул форум
Сообщений всего: 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
Подскажите пожалуйста где я ошибся
annihilus
Отправлено: 27 Января, 2011 - 16:01:18
Гость
Покинул форум
Сообщений всего: 116
Дата рег-ции: Нояб. 2009
$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);
annihilus
Отправлено: 27 Января, 2011 - 16:45:49
Гость
Покинул форум
Сообщений всего: 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
Покинул форум
Сообщений всего: 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);
Подскажите, пожалуйста, что тут не так. Почему else не срабатывает?
поле group='0' в таблице data - это поле по которому определяется доступность заметки.
Логика вышеприведенного кода такая: Если залогиненый показываем $result99, в противном случае $result98
Что может быть не так??? Пожалуйста помогите!
annihilus
Отправлено: 28 Января, 2011 - 14:53:18
Гость
Покинул форум
Сообщений всего: 116
Дата рег-ции: Нояб. 2009
Помог: 0 раз(а)
SergAntDnepr пишет:
Почему else не срабатывает?
Потому что условие всегда положительно. Тоесть $myrow_secret['id'] всегда не пуста.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.