变量如何在PHP函数(全局变量/本地变量)中继承?

时间:2018-06-28 15:50:41

标签: php scope namespaces global globals

我的主要编程语言是python,但是我继承了一个PHP项目进行维护,并且试图修复一些SQL注入漏洞。我有一个让我感到困惑的文件。它正在工作,但我不知道如何。在第14行,它调用$db,但我不明白$db在该函数中如何可用。它是在项目中的其他php文件中定义的,但我的理解是必须声明全局变量(如$tbl_users才能在函数内使用。我还需要在哪里知道authValidateUser从哪里获得$db

<?php
$user_list_link = "edit_users.php";

function authValidateUser($user, $pass)
{
   global $tbl_users;

   $user = strtolower($user);
   $pass = md5($pass);

   $user = preg_replace("/[^a-z0-9.]+/i","",$user);
   $pass = preg_replace("/[^a-z0-9.]+/i","",$pass);

   return sql_query1($db, "select count(*) from $tbl_users where name = '$user' and password = '$pass';");
}

function authGetUserLevel($user, $lev1_admin)
{
   // User not logged in, user level '0'
   if(!isset($user))
      return 0;

   // Check if the user is can modify
   for($i = 0; isset($lev1_admin[$i]); $i++)
   {
      if(strcasecmp($user, $lev1_admin[$i]) == 0)
     return 2;
   }

   // Everybody else is access level '1'
   return 1;
}
?>

sql_query1如下:

function sql_query1 ($db, $sql)
{
        $r = mysqli_query($db, $sql);
        if (! $r) return -1;
        if (mysqli_num_rows($r) != 1 || mysqli_num_fields($r) != 1
                || ($result = mysqli_result($r, 0, 0)) == "") $result = -1;
        mysqli_free_result($r);
        return $result;
}

0 个答案:

没有答案