[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Привелегии для админа
Andruha
у меня есть страница назвем её page.php и вот идет проверка,если страница принаджлежит пользователю,то выводится предложение изменить данные о себе,загружается аватар,и возможность отправить сообщение личное,а если не пренадлежит ему то отправить сообщение какому то пользователю.
Так вот в чем вопрос,что бы для 1 человека,админ он будет,на его странице были особые привелегии,скажем там добавлять информацию в БД,я думаю надо,создать поле в таблице user,поле назвать скажем id_group,и вот если это админ то у него в поле 1,а у всех остальных 0.ток не знаю где втулить на странице у себя эту проверку,дя привелегий



Спустя 4 минуты, 15 секунд (20.01.2011 - 22:16) Andruha написал(а):
исходный код:
<?php
// вся процедура работает на сессиях.
session_start();

include ("bd.php");// файл bd.php с параметрами подключения к БД
if (isset($_GET['id'])) {$id =$_GET['id']; } //id "хозяина" странички
else
{ exit("Вы зашил на страницу без параметра!");} //если не указали id, то выдаем ошибку
if (!preg_match("|^[\d]+$|", $id)) {
exit("<p>Неверный формат запроса! Проверьте URL</p>");//если id не число, то выдаем ошибку
}

if (!empty($_SESSION['login']) and !empty($_SESSION['password']))
{
//если существует логин и пароль в сессиях, то проверяем, действительны ли они
$login = $_SESSION['login'];
$password = $_SESSION['password'];
$result2 = mysql_query("SELECT id FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db);
$myrow2 = mysql_fetch_array($result2);
if (empty($myrow2['id']))
{
//Если не действительны (может мы удалили этого пользователя из базы за плохое поведение)
exit("Вход на эту страницу разрешен только зарегистрированным пользователям!");
}
}

else {
//Проверяем, зарегистрирован ли вошедший
exit("Вход на эту страницу разрешен только зарегистрированным пользователям!"); }
$result = mysql_query("SELECT * FROM users WHERE id='$id'",$db);
$myrow = mysql_fetch_array($result);//Извлекаем все данные пользователя с данным id

if (empty($myrow['login'])) { exit("Пользователя не существует! Возможно он был удален.");} //если такого не существует

?>
<html>
<
head>
<
title><?php echo $myrow['login']; ?></title>
<
style type="text/css">
body {
background:#AAAAAA;
}

</style>
</
head>
<
body>
<
h2>Пользователь "<?php echo $myrow['login']; ?>"</h2>


<?php
print <<<HERE
|<a href='page.php?id=$myrow2[id]'>Моя страница</a>|<a href='index.php'>Главная страница</a>|<a href='all_users.php'>Список пользователей</a>|<a href='exit.php'>Выход</a><br><br>
HERE;
//выше вывели меню

if ($myrow['login'] == $login) {
//Если страничка принадлежит вошедшему, то предлагаем изменить данные и выводим личные сообщения

print <<<HERE

<form action='update_user.php' method='post'>
Ваш логин <strong>
$myrow[login]</strong>. Изменить логин:<br>
<input name='login' type='text'>
<input type='submit' name='submit' value='изменить'>
</form>
<br>

<form action='update_user.php' method='post'>
Изменить пароль:<br>
<input name='password' type='password'>
<input type='submit' name='submit' value='изменить'>
</form>
<br>

<form action='update_user.php' method='post' enctype='multipart/form-data'>
Ваш аватар:<br>
<img alt='аватар' src='
$myrow[avatar]'><br>
Изображение должно быть формата jpg, gif или png. Изменить аватар:<br>
<input type="FILE" name="fupload">
<input type='submit' name='submit' value='изменить'>
</form>
<br>

<h2>Личные сообщения:</h2>


HERE;

$tmp = mysql_query("SELECT * FROM messages WHERE poluchatel='$login' ORDER BY id DESC",$db);
$messages = mysql_fetch_array($tmp);//извлекаем сообщения пользователя, сортируем по идентификатору в обратном порядке, т.е. самые новые сообщения будут вверху

if (!empty($messages['id'])) {
do //выводим все сообщения в цикле
{
$author = $messages['author'];
$result4 = mysql_query("SELECT avatar,id FROM users WHERE login='$author'",$db); //извлекаем аватар автора
$myrow4 = mysql_fetch_array($result4);

if (!empty($myrow4['avatar'])) {//если такового нет, то выводим стандартный(может этого пользователя уже давно удалили)
$avatar = $myrow4['avatar'];
}
else {$avatar = "avatars/net-avatara.jpg";}

printf("
<table>
<tr>
<td><a href='page.php?id=%s'><img alt='аватар' src='%s'></a></td>

<td>Автор: <a href='page.php?id=%s'>%s</a><br>
Дата: %s<br>
Сообщение:<br>
%s<br>
<a href='drop_post.php?id=%s'>Удалить</a>

</td>
</tr>
</table><br>
"
,$myrow4['id'],$avatar,$myrow4['id'],$author,$messages['date'],$messages['text'],$messages['id']);
//выводим само сообщение
}
while($messages = mysql_fetch_array($tmp));

}
else {
//если сообщений не найдено
echo "Сообщений нет";
}

}


else
{
//если страничка чужая, то выводим только некторые данные и форму для отправки личных сообщений

print <<<HERE
<img alt='аватар' src='$myrow[avatar]'><br>
<form action='post.php' method='post'>
<br>
<h2>Отправить Ваше сообщение:</h2>
<textarea cols='43' rows='4' name='text'></textarea><br>
<input type='hidden' name='poluchatel' value='
$myrow[login]'>
<input type='hidden' name='id' value='
$myrow[id]'>
<input type='submit' name='submit' value='Отправить'>
</form>

HERE;
}

?>
</body>
</
html>
вот код с коментарием,кому не лень прочитать помогите

Спустя 16 минут, 18 секунд (20.01.2011 - 22:33) inpost написал(а):
Andruha
Ко мне в профиль и лечись от Попова + используй [ php] оформление для кодов! Так понятнее будет...

Спустя 1 минута, 53 секунды (20.01.2011 - 22:35) inpost написал(а):
Andruha
Вставь привелегии там, где ты их использовать будешь. А дополнительное поле в БД - это правильно.

Спустя 2 минуты, 18 секунд (20.01.2011 - 22:37) Andruha написал(а):
то еть через if?

Спустя 5 минут, 25 секунд (20.01.2011 - 22:42) Andruha написал(а):
типо вот так
$viborka = mysql_query ("SELECT id_group FROM users ",$db);
if($viborka==1)
{
привелегии
}

Спустя 16 минут, 50 секунд (20.01.2011 - 22:59) inpost написал(а):
Сложно ответить, потому что тут и выборка не правильная, и ничего не достаёшь. Извлекать из БД значение - один из первых уроков, а ты даже этого тут не показал.
Кажется, что ты просто код с ruseller.com скопировал, а сам даже не понимаешь, что там делается.

Спустя 12 минут, 47 секунд (20.01.2011 - 23:12) Andruha написал(а):
все правильно извлекает и возвращает массив,помог бы лучше раз такой умный

Спустя 7 минут, 59 секунд (20.01.2011 - 23:20) inpost написал(а):
$viborka = mysql_query ("SELECT id_group FROM users ",$db);

Извлекает ссылку на ресурс, ничего более. Она будет равна: resurce #4, resurce#16, и т.д.
В добавок ты извлекаешь всех пользователей, а надо лишь права конкретного пользователя, кто сейчас зашел на страницу (WHERE `id`= ID)

Спустя 7 минут, 8 секунд (20.01.2011 - 23:27) Andruha написал(а):
я думаю сделать это так:
$viborka = mysql_query ("SELECT id_group FROM users ",$db);
while($to = mysql_fetch_assoc($viborka)){
$people[] = $to['id_group'];
}
for ($i=0;$i<count($people);$i++)
{
if ($people[$i]==1)
{
привелегии
}
}

Спустя 51 секунда (20.01.2011 - 23:28) inpost написал(а):
Ага, значит я вредный и критикую...
1) Поповский код. -1
2) Никакой самостоятельности, использует чужой код, причем 4-х летней давности: -1
3) Не проходил первые уроки, где господин П рассказывал, как правильно извлекать значения из БД, -1
4) Считает свой код лучшим, отказывается читать и исправляться, хотя ссылки я предложил по исправлению. -1

Оценка автора: 1 бал, худшая работа на форуме за сегодняшний день!

П.С. вот теперь я точно критикую, не люблю, когда кто-то разбрасывается словами. Хочешь быть правым, получай!

Спустя 8 часов, 47 минут, 6 секунд (21.01.2011 - 08:15) alex12060 написал(а):
Понаписал то, совсем не ахти)
Лучше сделай как Inpost говорит, пройти реабилитацию Попова.

Не используй printf()
Не используй: <<<HERE......HERE;

А так, могу тебе помочь, только надо переписывать код заного. Я тебе сделаю это, только чуть позже, расскоменчу все, и ты узнаешь, что такое нормальный стиль коддинга)

Спустя 1 час, 43 минуты, 16 секунд (21.01.2011 - 09:58) alex12060 написал(а):
inpost


while($to = mysql_fetch_assoc($viborka)){
$people[] = $to['id_group'];
}
for ($i=0;$i<count($people);$i++)
{
if ($people[$i]==1)
{
привелегии
}
}



Да пусть меня Попов не осудит за плохое изучение его уроков, но по-моему тут нет его кода) А точнее код на относительно повышенном уровне)

Спустя 1 час, 9 минут, 34 секунды (21.01.2011 - 11:08) inpost написал(а):
alex12060
Я писал оценку пока не видел этого коментария. А разница между нашими коментариями, возможно, в 10-15 секунд.

И вообще, вместо критики мог бы и помочь =)

Спустя 13 минут, 52 секунды (21.01.2011 - 11:22) alex12060 написал(а):
У меня энтер сломался оО

Ладно, ща попробуем состряпать ему это дело) Я делал когда-то у себя такое)

Спустя 18 минут, 24 секунды (21.01.2011 - 11:40) alex12060 написал(а):
Не, что то не охото делать это)

Столько кода ненужного,пипец...

Спустя 3 часа, 25 минут, 34 секунды (21.01.2011 - 15:06) Andruha написал(а):
Да лан сам как нить разберусь.У меня тут другая идея,я создал отдельно папку administrator,ну и там index.php будет дя входа спец для админа,и обрабатывающая страница,
ну вот в обрабатывающей напишу проверку:
$prlog=mysql_query("SELECT login FROM `users` WHERE `id_group`=1 " ,$db);
$prpas=mysql_query("SELECT password FROM `users` WHERE `id_group`=1 ",$db); //где 1 в id_group- означает,что это админ,у всех остальных ноль и потом,проверка
$login=$_POST['login'];
$password=$_POST['password'];
if ( ($login==$prlog) && ($password==$prpas) )
{
привелегии
}
else
{
echo "Вы ввели неправильные пароль или логин!";
}

Спустя 52 секунды (21.01.2011 - 15:07) Andruha написал(а):
не получается так а если
а если
$result=mysql_query("SELECT login FROM `users` WHERE `id_group`=1 " ,$db);
while($prlog = mysql_fetch_assoc($result))
$logo[] = $prlog['login'];
то возвращает null

Спустя 53 минуты, 23 секунды (21.01.2011 - 16:00) inpost написал(а):
Andruha
Информация, что это определённый пользователь хранится в СЕССИИ.

А в верхнем примере ты просто проверяешь, есть ли админ вообще в базе данных. Ты должен брать данные авторизированного пользователя, и сравнивать их с правами.

Спустя 15 минут, 56 секунд (21.01.2011 - 16:16) Andruha написал(а):
а можно на примере кода?

Спустя 13 минут, 13 секунд (21.01.2011 - 16:29) inpost написал(а):
$result2 = mysql_query("SELECT id FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db);
$myrow2 = mysql_fetch_array($result2); - вот ты получил всё об этом пользователе, теперь его данные помести в сессию: $_SESSION = $myrow2;
И после обращайся непосредственно к ним, и сравнивай. Только доставай не id, и всё.

Спустя 17 минут, 4 секунды (21.01.2011 - 16:46) Andruha написал(а):
ясненько,только не понял фразу:Только доставай не id, и всё.

Спустя 7 минут, 11 секунд (21.01.2011 - 16:53) inpost написал(а):
в том примере из БД ты достал лишь id.

Спустя 20 минут, 2 секунды (21.01.2011 - 17:13) Andruha написал(а):
а ты имел не лишь а id,а все доставать,правильно?

Спустя 16 минут, 15 секунд (21.01.2011 - 17:30) inpost написал(а):
Andruha
Доставай то, что тебе надо.

Спустя 7 минут, 59 секунд (21.01.2011 - 17:38) Andruha написал(а):
спс!

Спустя 1 минута, 46 секунд (21.01.2011 - 17:39) Andruha написал(а):
а можно ещё вопрос.Вот у меня такая ситуация возникла вносит в БД пробел,если не было введено в поле ничего,хотя вроде все правильно сделал,вот код(МОЙ!)
-----------------------------
<?php
if (isset($_POST['country'])) { $country = $_POST['country']; if ($country == '') { unset($country);} }
if (isset($_POST['city'])) { $city = $_POST['city']; if ($city == '') { unset($city);} }
if (isset($_POST['product'])) { $product = $_POST['product']; if ($product == '') { unset($product);} }
$result = mysql_query ("INSERT INTO country (name)
VALUES('$country')");
$result_2 = mysql_query ("INSERT INTO city (name)
VALUES('$city')");
$result_3 = mysql_query ("INSERT INTO product (name)
VALUES('$product')");

Спустя 44 секунды (21.01.2011 - 17:40) Andruha написал(а):
получается если вввел страну,а остальное не ввел,то в другие таблицы вносит пробел

Спустя 23 минуты, 2 секунды (21.01.2011 - 18:03) inpost написал(а):
проверяй на содержание: if(!empty(trim($)))

Спустя 16 минут, 29 секунд (21.01.2011 - 18:20) Andruha написал(а):
trim-удаляет пробелы в начале и в конце строки
empty-проверяет установлена ли переменная,а все вместе,это как по русски будет читатся твоя проверка??

Спустя 18 минут, 38 секунд (21.01.2011 - 18:38) inpost написал(а):
empty - проверяет на пустоту. Убрали пробелы, проверили, пустая ли она, если не пустая - добавили в БД!

Спустя 33 минуты, 16 секунд (21.01.2011 - 19:12) Andruha написал(а):
Can't use function return value in write context in Ошибку выводит

Спустя 25 минут, 53 секунды (21.01.2011 - 19:37) inpost написал(а):
И как ты её использовал? Тупо скопипастил, или в справочнике оформил так как надо?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.