Так вот в чем вопрос,что бы для 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] оформление для кодов! Так понятнее будет...
Ко мне в профиль и лечись от Попова + используй [ 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)
{
привелегии
}
$viborka = mysql_query ("SELECT id_group FROM users ",$db);
if($viborka==1)
{
привелегии
}
Спустя 16 минут, 50 секунд (20.01.2011 - 22:59) inpost написал(а):
Сложно ответить, потому что тут и выборка не правильная, и ничего не достаёшь. Извлекать из БД значение - один из первых уроков, а ты даже этого тут не показал.
Кажется, что ты просто код с ruseller.com скопировал, а сам даже не понимаешь, что там делается.
Кажется, что ты просто код с 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)
{
привелегии
}
}
$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 бал, худшая работа на форуме за сегодняшний день!
П.С. вот теперь я точно критикую, не люблю, когда кто-то разбрасывается словами. Хочешь быть правым, получай!
1) Поповский код. -1
2) Никакой самостоятельности, использует чужой код, причем 4-х летней давности: -1
3) Не проходил первые уроки, где господин П рассказывал, как правильно извлекать значения из БД, -1
4) Считает свой код лучшим, отказывается читать и исправляться, хотя ссылки я предложил по исправлению. -1
Оценка автора: 1 бал, худшая работа на форуме за сегодняшний день!
П.С. вот теперь я точно критикую, не люблю, когда кто-то разбрасывается словами. Хочешь быть правым, получай!
Спустя 8 часов, 47 минут, 6 секунд (21.01.2011 - 08:15) alex12060 написал(а):
Понаписал то, совсем не ахти)
Лучше сделай как Inpost говорит, пройти реабилитацию Попова.
Не используй printf()
Не используй: <<<HERE......HERE;
А так, могу тебе помочь, только надо переписывать код заного. Я тебе сделаю это, только чуть позже, расскоменчу все, и ты узнаешь, что такое нормальный стиль коддинга)
Лучше сделай как 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 секунд.
И вообще, вместо критики мог бы и помочь =)
Я писал оценку пока не видел этого коментария. А разница между нашими коментариями, возможно, в 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 "Вы ввели неправильные пароль или логин!";
}
ну вот в обрабатывающей напишу проверку:
$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
а если
$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, и всё.
$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')");
-----------------------------
<?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-проверяет установлена ли переменная,а все вместе,это как по русски будет читатся твоя проверка??
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 написал(а):
И как ты её использовал? Тупо скопипастил, или в справочнике оформил так как надо?