#php
#php
Вопрос:
Я работаю над небольшим форумом, и я хочу, чтобы было легко идентифицировать сотрудника.
На данный момент пользователь определен как $admin в файле конфигурации:
<?php
/******************************************************
------------------Required Configuration---------------
Please edit the following variables so the forum can
work correctly.
******************************************************/
//We log to the DataBase
mysql_connect('127.0.0.1', 'root', '');
mysql_select_db('forum_database');
//Forum Staff
$admin='The_Darthonian'; // For admin forum features
/******************************************************
-----------------Optional Configuration----------------
******************************************************/
//Forum Home Page
$url_home = 'index.php';
//Design Name
$design = 'default';
/******************************************************
----------------------Initialization-------------------
******************************************************/
include('init.php');
?>
У меня есть значок по пути default/images/role_moderator.gif
, который я хочу отобразить в профиле, если пользователь определен как администратор
У меня также есть переменная userid. Например, первая учетная запись будет 1, затем вторая 2 и так далее, Которые являются уникальными. Ниже приведен код профиля:
<?php
//This page display the profile of an user
include('config.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="<?php echo $design; ?>/style.css" rel="stylesheet" title="Style" />
<title>User Profile</title>
</head>
<body>
<div class="header">
<a href="<?php echo $url_home; ?>"><img src="<?php echo $design; ?>/images/logo.png" alt="Forum" /></a>
</div>
<div class="content">
<?php
if(isset($_SESSION['username']))
{
$nb_new_pm = mysql_fetch_array(mysql_query('select count(*) as nb_new_pm from pm where ((user1="'.$_SESSION['userid'].'" and user1read="no") or (user2="'.$_SESSION['userid'].'" and user2read="no")) and id2="1"'));
$nb_new_pm = $nb_new_pm['nb_new_pm'];
?>
<div class="box">
<div class="box_left">
<a href="<?php echo $url_home; ?>">Home</a> amp;gt; <a href="users.php">Users</a> amp;gt; Profile
</div>
<div class="box_right">
<a href="list_pm.php">Your messages(<?php echo $nb_new_pm; ?>)</a> - <a href="profile.php?id=<?php echo $_SESSION['userid']; ?>"><?php echo htmlentities($_SESSION['username'], ENT_QUOTES, 'UTF-8'); ?></a> (<a href="login.php">Logout</a>)
</div>
<div class="clean"></div>
</div>
<?php
}
else
{
?>
<div class="box">
<div class="box_left">
<a href="<?php echo $url_home; ?>">Home</a> amp;gt; <a href="users.php">Users</a> amp;gt; Profile
</div>
<div class="box_right">
<a href="signup.php">Sign Up</a> - <a href="login.php">Login</a>
</div>
<div class="clean"></div>
</div>
<?php
}
if(isset($_GET['id']))
{
$id = intval($_GET['id']);
$dn = mysql_query('select username, email, avatar, signup_date from users where id="'.$id.'"');
if(mysql_num_rows($dn)>0)
{
$dnn = mysql_fetch_array($dn);
?>
This is the profile of "<?php echo htmlentities($dnn['username']); ?>" :
<?php
if($_SESSION['userid']==$id)
{
?>
<br /><div class="center"><a href="edit_profile.php" class="button">Edit my profile</a></div>
<?php
}
?>
<table style="width:500px;">
<tr>
<td><?php
if($dnn['avatar']!='')
{
echo '<img src="'.htmlentities($dnn['avatar'], ENT_QUOTES, 'UTF-8').'" alt="Avatar" style="max-width:100px;max-height:100px;" />';
}
else
{
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title></title>
</head>
<body>
<?php
?>
<div>
<img src="default/images/no_avatar.jpg" alt="no_avatar" />
</div>
</body>
</html>
<?php
}
?></td>
<td class="left"><h1><?php echo htmlentities($dnn['username'], ENT_QUOTES, 'UTF-8'); ?></h1>
This user joined the website on <?php echo date('Y/m/d',$dnn['signup_date']); ?></td>
</tr>
</table>
<?php
if(isset($_SESSION['username']) and $_SESSION['username']!=$dnn['username'])
{
?>
<br /><a href="new_pm.php?recip=<?php echo urlencode($dnn['username']); ?>" class="big">Message "<?php echo htmlentities($dnn['username'], ENT_QUOTES, 'UTF-8'); ?>"</a>
<?php
}
}
else
{
echo 'We could not find this user anywhere. Prehaps their account was removed.';
}
}
else
{
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title></title>
</head>
<body>
<?php
?>
<div>
<img src="/default/images/no_avatar.jpg" alt="no_avatar" />
</div>
</body>
</html>
<?php
}
?>
</div>
<div class="foot"><a href="about.php">About Us</a> - <a href="termsofservice.php">Terms of Service</a></div>
</body>
</html>
Как я могу сделать так, чтобы, если пользователь определен как $admin в конфигурации, значок отображался в его профиле?
Комментарии:
1. Обязательно ли использовать конфигурационный файл? Если да, то почему? если нет, то я бы рекомендовал просто добавить еще один столбец в таблицу users с именем «admin» как логическое значение и просто установить для него значение true или false, если они являются администраторами форума.
2. @Kitson88 В настоящее время я использую if(isset($ _SESSION[‘username’]) и $ _SESSION[‘username’]== $admin). Как я могу изменить это, чтобы работать с переменной, называемой «модератор» в mysql?
3. Просто добавьте столбец и установите для него значение 0 (FALSE) по умолчанию при создании нового пользователя, и когда пользователь войдет в систему, и вы извлекаете информацию о пользователях из MySQL, вы можете либо установить переменную сеанса для хранения значения, либо использовать аналогичный оператор if: if(isset($_SESSION[‘username’],$_SESSION[‘mod’] ) и $_SESSION[‘username’]==$admin и $ _SESSION[‘mod’]==1) { echo «Вы администратор»; } else { echo «Вы не администратор»; }
4. Я создал логическую переменную в mysql под названием moderator (я переименовал моды в moderator в вашем комментарии выше). Я установил свой собственный статус модератора на 1, и все равно ничего. Кроме того, не могли бы вы удалить $admin из кода, я хочу, чтобы он полагался только на переменную msql.
5. Это новый код, который я имею — <?php if(isset($_SESSION[‘moderator’] ) and $_SESSION[‘moderator’]==1) { echo «You are admin»; } else { echo «You are not admin»; } ?> — Тем не менее, он по-прежнему говорит, что я не админ при доступе к странице.