Я столкнулся с ошибкой, из-за которой глобальные функции работают неправильно и не могут получить доступ к переменной.
Вот мой код:
function getComments($id)
{
global $conn;
$COMPONENT_NAME = "view_company_comments";
include_once "validateUser.php";
Только для контекста, если COMPONENT_NAME
не будет присутствовать в каком-то определенном списке, выполнение скрипта прекратится с использованием функции d ie ().
Теперь внутри "validateUser. php":
(объяснил все в комментариях)
<?php
if (!isset($COMPONENT_NAME)) {
die(json_encode(["error" => "validating user: component was not set."]));
} else {
include_once "permissions.php";
$validateUser_allowedActions = permissionsInitActions();
//So far in, var_dump($COMPONENT_NAME) works properly here, and I get the component name succesfully.
//But watch next:
//"permissionsAllowed()" is a function from "permissions.php",
//this function returns "false" here, expected result is "true"
if (!permissionsAllowed($validateUser_allowedActions)) {
die(json_encode(["error" => $COMPONENT_NAME . ": Unvalidated user privillege."]));
}
}
А внутри "разрешения. php":
function permissionsAllowed($actions)
{
global $COMPONENT_NAME, $conn;
//Here, var_dump($COMPONENT_NAME) results to "null", which is weird
//because in "validateUser.php" it is a correct string value.
$sql = "SELECT id FROM permission_actions WHERE `name` = '$COMPONENT_NAME'";
$result = mysqli_query($conn, $sql);
$actionID = mysqli_fetch_assoc($result)["id"];
var_dump($COMPONENT_NAME);
if (in_array($actionID, $actions)) {
return true;
}
return false;
}
Что здесь происходит? Чего мне не хватает?
Спасибо за любую помощь.