ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Скрипт разделения прав пользователей
  #1  
Старый 09.04.2009, 13:42
Аватар для alpotemkin
alpotemkin
Познающий
Регистрация: 07.05.2008
Сообщений: 49
Провел на форуме:
90698

Репутация: 5
Отправить сообщение для alpotemkin с помощью ICQ
По умолчанию Скрипт разделения прав пользователей

Доброго времени суток!

1. Имеется локальный сайт. На нем юзеры (работники фирмы) добавляют список купленных ими товаров для дальнейшей проверки сисадмином и бухгалтерией.

2. Вход на него осуществляется по связке Логин+Пароль+IP (вход по логину-паролю юзера только с конкретной машины юзера).

3. Юзеры могут добавлять товары, а так же видеть список добавленных товаров.

Вопрос:
Подскажите скрипт, с помощью которого можно разграничить права юзеров и администраторов.
Т.е. админ может добавлять и видеть все добавленные товары, а юзер добавлять и видеть только добавленные им товары.


P.S. Сайт сделан на PHP+MySQL. Буду благодарен, если выложите хотя бы небольшой пример, а не просто объяснение на словах и отсылку туда-то и туда-то.

Заранее благодарю за помощь.

Последний раз редактировалось alpotemkin; 09.04.2009 в 13:46..
 
Ответить с цитированием

  #2  
Старый 09.04.2009, 14:23
Аватар для Gifts
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

ээ, вы как бы описали весь алгоритм)

1 Пользователь логинится - заодно проверяем его права (добавляем в БД столбец с правами)
2 Если юзер админ выводим все, не админ - выводим только его

PHP код:
if ($admin
$query="select * from tovar where 1=1";
else 
$query="select * from tovar where user_name='".mysql_real_escape_string($username)."'"
 
Ответить с цитированием

  #3  
Старый 09.04.2009, 15:05
Аватар для MuXaJIbI4
MuXaJIbI4
Познающий
Регистрация: 20.11.2008
Сообщений: 68
Провел на форуме:
108674

Репутация: 32
По умолчанию

where 1=1 писать нет необходимости
 
Ответить с цитированием

  #4  
Старый 09.04.2009, 15:19
Аватар для awdrg
awdrg
Участник форума
Регистрация: 30.01.2009
Сообщений: 196
Провел на форуме:
505362

Репутация: 66
Отправить сообщение для awdrg с помощью ICQ
По умолчанию

PHP код:
if (($login == $admin_login) and ($pass == $admin_pass))
{
   
showall(...);
}
else
   
show($user_id
простейший пример :-/

Последний раз редактировалось awdrg; 09.04.2009 в 15:59..
 
Ответить с цитированием

  #5  
Старый 09.04.2009, 15:29
Аватар для -Hormold-
-Hormold-
Постоянный
Регистрация: 29.09.2007
Сообщений: 617
Провел на форуме:
3250478

Репутация: 999


Отправить сообщение для -Hormold- с помощью ICQ
По умолчанию

if($ip==ADMIN_IP){...}else{...}
 
Ответить с цитированием

  #6  
Старый 09.04.2009, 18:22
Аватар для alpotemkin
alpotemkin
Познающий
Регистрация: 07.05.2008
Сообщений: 49
Провел на форуме:
90698

Репутация: 5
Отправить сообщение для alpotemkin с помощью ICQ
По умолчанию

Нет, все равно не понял...

1. Юзер логинится на главной странице, код такой:

Код:
<?php

include ('auth.php');

if (isset($_POST['auth_name'])) {

$name=mysql_real_escape_string($_POST['auth_name']);
$pass=mysql_real_escape_string($_POST['auth_pass']);
$ip = $_SERVER['REMOTE_ADDR'];
$query = "SELECT * FROM login WHERE nick='$name' AND pass='$pass' AND ip='$ip'";
$res = mysql_query($query) or trigger_error(mysql_error().$query);
if ($row = mysql_fetch_assoc($res)) {
session_start();
session_regenerate_id();

$_SESSION['usrname'] = $row['nick'];
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
}

 header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
exit;
}

if (isset($_GET['action']) AND $_GET['action']=="logout") {
session_start();
session_destroy();
header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
exit;
}
if (isset($_REQUEST[session_name()])) session_start();
if (isset($_SESSION['usrname']) AND $_SESSION['ip'] == $_SERVER['REMOTE_ADDR']) return;
else {
echo "
<form method='POST'>
&nbsp;Логин:<br>
&nbsp;<input type='text' name='auth_name'><br>
&nbsp;Пароль:<br>
&nbsp;<input type='password' name='auth_pass'><br><br>
&nbsp;<input type='submit' value=Вход><br>
</form>
";
}
exit;

?>
2. Потом его перекидывает на страницу вывода товаров, код такой:

Код:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=KOI8-R" />
<?php
  $PageTitle = "Профиль";
?>
</head>

<body>
<span style="font-weight: bold;">Список товаров&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; <a href="new-tovar.php">Добавить товар</a></span>
<br>
<br>
<?php

include ('auth.php');

/* Определяем количество сообщений на странице */
$lim = "20";
@$page = $_GET['page'];
/* Меняем table на название вашей таблицы и не забываем указывать дополнительные параметры выборки (если они у вас есть) */
$res = mysql_query("SELECT COUNT(*) FROM tovar ORDER BY data");
$row = mysql_fetch_array($res);
$posts = $row[0];
$str = ceil($posts/$lim);
if(empty($page) or $page < 0) $page = 1;
if($page > $str) $page = $str;
$start = $page * $lim - $lim;
/* Дальше подставляете свой код вывода данных из базы в цикле, но обязательно укажите LIMIT $start, $lim */
$result = mysql_query("SELECT data,name,harakter,srok,cena,kolichestvo,summa,kuda,provereno FROM tovar LIMIT $start, $lim",$db);
$myrow = mysql_fetch_array($result);
//теперь нам надо узнать сколько в массиве $result строчек, это делается так:
$n=mysql_num_rows($result);
//вывод на страничку, выводить будем в виде таблицы
echo "<table border=1>
<tr><th>Дата</th><th>Название</th><th>Характеристика</th><th>Гарант. срок</th><th>Цена</th><th>Кол-во</th><th>Сумма</th><th>Куда</th><th>Проверено</th></tr>";
// и теперь в цикле выводим построчно
for($i=0;$i<$n;$i++)
 echo
"<tr><td>",mysql_result($result,$i,data),
"</td><td>",mysql_result($result,$i,name),
"</td><td>",mysql_result($result,$i,harakter),
"</td><td>",mysql_result($result,$i,srok),
"</td><td>",mysql_result($result,$i,cena),
"</td><td>",mysql_result($result,$i,kolichestvo),
"</td><td>",mysql_result($result,$i,summa),
"</td><td>",mysql_result($result,$i,kuda),
"</td><td>",mysql_result($result,$i,provereno),
"</td></tr>";
echo "</table>";
{printf ("<p>%s</p>",$myrow["title"]);}
while ($myrow = mysql_fetch_array ($result)); 
/* Дальше все остается без изменений */
echo '<a href=?page='. ($page - 1) .'>Назад</a>**';
$i=1;
while ($i <= $str)
{
if ($i==$page)
{echo '<strong><a href=?page='.$i.'>'.$i.'</a></strong>*';}
else
{echo '<a href=?page='.$i.'>'.$i.'</a>*';}
$i = $i+1;
}
echo '**<a href=?page='. ($page + 1) .'>Вперед</a>';
?>

</body>
</html>
Сделал так:

Код:
<?php

include ('auth.php');

if (isset($_POST['auth_name'])) {

$name=mysql_real_escape_string($_POST['auth_name']);
$pass=mysql_real_escape_string($_POST['auth_pass']);
$ip = $_SERVER['REMOTE_ADDR'];
$query = "SELECT * FROM login WHERE nick='$name' AND pass='$pass' AND ip='$ip'";

//В базе: all  -админ, а пустое поле - обычный юзер

if ($admin)  
$query="SELECT * FROM tovar WHERE group='all'"; 
else
$query="SELECT * FROM tovar WHERE auth_name='".mysql_real_escape_string($name)."'";

$res = mysql_query($query) or trigger_error(mysql_error().$query);
if ($row = mysql_fetch_assoc($res)) {
session_start();
session_regenerate_id();

$_SESSION['usrname'] = $row['nick'];
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
}

 header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
exit;
}

if (isset($_GET['action']) AND $_GET['action']=="logout") {
session_start();
session_destroy();
header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
exit;
}
if (isset($_REQUEST[session_name()])) session_start();
if (isset($_SESSION['usrname']) AND $_SESSION['ip'] == $_SERVER['REMOTE_ADDR']) return;
else {
echo "
<form method='POST'>
&nbsp;Логин:<br>
&nbsp;<input type='text' name='auth_name'><br>
&nbsp;Пароль:<br>
&nbsp;<input type='password' name='auth_pass'><br><br>
&nbsp;<input type='submit' value=Вход><br>
</form>
";
}
exit;

?>
И не работает... В чем ошибка? Я с этим только начал работать и учиться, поэтому не пинайте, а разьясните пожалуйста...

Последний раз редактировалось alpotemkin; 13.04.2009 в 12:07..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт Пользователей онлайн SXtingeR13 PHP, PERL, MySQL, JavaScript 8 16.03.2009 15:51



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ