@razrab228
html, люблю больше php.

Функция не принимает значение из переменной вне функции, почему?

Всем здравствуйте)
Есть у меня 2 файла
file1.php:
<?php
session_start();
include('../sql.php');
$user_uid = $_SESSION['auth']['uid'];
$query = mysqli_query($connection, "SELECT * FROM users WHERE `uid` = '$user_uid'");
$result = mysqli_fetch_assoc($query);

function check_user_role($max_role) {
    if($result['role'] > $max_role) {
        return 0;
    } else {
        return 1;
    }
}
?>

file2.php:
<?php
include('../check_role.php');
include('../../sql.php');

echo check_user_role(3);
?>


суть в том, что file2 обращается к функции в file1, которая определяет роль пользователя и возвращает 1, если роль соответствует требованию, и 0 если нет. Но проблема в том, что функция принимает только $max_role, я пытался вывести значение базы данных внутри функции, но они ничего не возвращала. как можно решить данную проблему?
Видел решение с передачей уже ответа от бд в функцию:
file2.php:
$user_uid = $_SESSION['auth']['uid'];
$query = mysqli_query($connection, "SELECT * FROM users WHERE `uid` = '$user_uid'");
$result = mysqli_fetch_assoc($query);
echo check_user_role(3, $result);

но мне не особо нравится это решение, так как хочется сделать код меньше, и обрабатывать запрос уже на другой странице.
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
А где у вас в коде include("file1.php"); ?
Зачем подгружаете sql.php в каждом файле? Есть же include_once().
Ну и наконец: $user_uid, $query, $result должны по логике находиться или внутри функции, или в файле file2.php
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 13:31
10000 руб./за проект
19 апр. 2024, в 13:12
35000 руб./за проект
19 апр. 2024, в 13:06
6000 руб./за проект