Итак, я пытаюсь извлечь некоторые данные из моей базы данных SQL и использовать их в операторе IF.
У меня есть база данных с именем DB_Default, и у меня есть таблица с именем Users.
Внутри пользователей у меня есть все обычные столбцы, такие как идентификатор, имя пользователя, пароль, но у меня также есть столбец с именем isadmin.
Я хочу иметь возможность выполнять запрос mysql через PHP, выбирая всех пользователей с именем пользователя $_SESSION[username]
и isadmin = 1
.
Я собираюсь добавить несколько навигационных ссылок только для повышенных привилегированных пользователей. Итак, поскольку страница, на которую будет помещен код, предназначена только для зарегистрированных пользователей, я подумал правильно, давайте использовать уже определенный сеанс имени пользователя, т. Е. Если для имени пользователя моего сеанса было установлено значение «Администратор».
заявление должно быть
$result = mysql_query("SELECT * FROM users WHERE user_name='" . $_SESSION["user_name"] . "' and isadmin = '". $admin."'");
Я установил $admin = "1";
так, чтобы он мог возвращать результаты только в том случае, если у пользователя, вошедшего в систему, isadmin установлен на 1.
Вместо этого я либо показываю навигационные ссылки любому пользователю независимо от его статуса администратора, либо не вижу его вообще.
Честно говоря, код очень грязный, так как сейчас 5:40 утра, и я какое-то время не писал код, так что он довольно ржавый, поэтому я более чем осведомлен о том, насколько легко это должно быть исправлено.
Я на 99% уверен, что это связано с тем, что я только что установил $admin = "1";
, но хоть убей, не могу понять, где я ошибся. Отдохну сегодня и вернусь завтра. Надеюсь, к тому времени кто-то опубликует решение, и, очевидно, я проголосую за лучший ответ, иначе я просмотрю код и посмотрю, смогу ли я исправить это самостоятельно!
Спасибо!
ОБНОВЛЕНИЕ - Включенный код
<?php
$admin = 1;
$conn = mysql_connect("localhost","root","password");
mysql_select_db("DB_Default",$conn);
$result = mysql_query("SELECT * FROM users WHERE user_name='" . $_SESSION["user_name"] . "' and isadmin = '". $admin."'");
$row = mysql_fetch_array($result);
if(is_array($row)) {
$_SESSION["isadmin"] = $row[isadmin];
} else {
}
if($_SESSION["isadmin"] == '1'){
//has admin privs
} else {
//does not have admin privs
}
Я еще не настроил навигационные ссылки, так как я еще не дошел до этого этапа, однако ссылки будут внутри административных ссылок оператора if в административной части, а не в неадминистративной части.
$sql = "SELECT * FROM users WHERE user_name='" . $_SESSION["user_name"] . "' and isadmin = '". $admin."'"; var_dump($sql);
- person DannyPhantom   schedule 30.08.2015$result
значение true, т.е.if($result){ // isadmin }
- вместо проверки, возвращена ли строка -if(mysql_num_rows($result)){ // isadmin }
. Пустой возвращенный запрос по-прежнему является успешным запросом - person Sean   schedule 30.08.2015if(is_array($row)) { $_SESSION["isadmin"] = $row[isadmin]; } else { $_SESSION['isadmin'] = 0;
} - person DannyPhantom   schedule 30.08.2015if(mysql_num_rows($result) == 1) { $_SESSION["isadmin"] = true; } else { $_SESSION["isadmin"] = false; }
. Затем вы можете проверитьif($_SESSION["isadmin"]) { //admin } else { //not admin }
- person Sean   schedule 30.08.2015