Происходит следующее: Модератор запрашивает страницу админки, выбивает окно авторизации, модератор вводит логин-пароль и ничего не происходит, предлагается ввести пароль-логин вновь.
В БД есть таблица в которой хранится логин-пароль пользователя который управляет админкой. Сайт переехал к новым хостерам и теперь при входе в админку по паролю войти не возможно. Без пароля админка работает как обычно. Подскажите пожалуйста в чем проблема? Наверное в php.ini что-то надо подрегулировать? Файл lock.php следующий:
<?
include("bd.php");
if (!isset($_SERVER['PHP_AUTH_USER']))
$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
$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 пишет:
жуть...
Есть таблица с категориями , допустим такая:
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
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 показывать только залогиненым.
Мне кажется, что сначала надо выяснить публикацию какой категории хочет просмотреть пользователь. Если номер категории больше четвёртой, то $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;
Annihilus, а куда и что надо добавить? Ещё раз прошу прощения в php только вникаю, код читаю, понимаю, а писать пока не могу. Очень прошу помогите. Уже и так пробовал и наперекосяк.
Здесь ниже всем зарегистрированным пользователям разрешено просматривать все публикации всех категорий выводимых на эту страницу. А как сделать так чтобы с 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"]);
}
?>