alpotemkin
09.04.2009, 13:42
Доброго времени суток!
1. Имеется локальный сайт. На нем юзеры (работники фирмы) добавляют список купленных ими товаров для дальнейшей проверки сисадмином и бухгалтерией.
2. Вход на него осуществляется по связке Логин+Пароль+IP (вход по логину-паролю юзера только с конкретной машины юзера).
3. Юзеры могут добавлять товары, а так же видеть список добавленных товаров.
Вопрос:
Подскажите скрипт, с помощью которого можно разграничить права юзеров и администраторов.
Т.е. админ может добавлять и видеть все добавленные товары, а юзер добавлять и видеть только добавленные им товары.
P.S. Сайт сделан на PHP+MySQL. Буду благодарен, если выложите хотя бы небольшой пример, а не просто объяснение на словах и отсылку туда-то и туда-то.
Заранее благодарю за помощь.
ээ, вы как бы описали весь алгоритм)
1 Пользователь логинится - заодно проверяем его права (добавляем в БД столбец с правами)
2 Если юзер админ выводим все, не админ - выводим только его
if ($admin)
$query="select * from tovar where 1=1";
else $query="select * from tovar where user_name='".mysql_real_escape_string($username)."'";
MuXaJIbI4
09.04.2009, 15:05
where 1=1 писать нет необходимости
if (($login == $admin_login) and ($pass == $admin_pass))
{
showall(...);
}
else
show($user_id)
простейший пример :-/
-Hormold-
09.04.2009, 15:29
if($ip==ADMIN_IP){...}else{...}
alpotemkin
09.04.2009, 18:22
Нет, все равно не понял... :(
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'>
Логин:<br>
<input type='text' name='auth_name'><br>
Пароль:<br>
<input type='password' name='auth_pass'><br><br>
<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;">Список товаров
<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,kud a,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'>
Логин:<br>
<input type='text' name='auth_name'><br>
Пароль:<br>
<input type='password' name='auth_pass'><br><br>
<input type='submit' value=Вход><br>
</form>
";
}
exit;
?>
И не работает... В чем ошибка? Я с этим только начал работать и учиться, поэтому не пинайте, а разьясните пожалуйста...
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot