变量在if语句外部起作用,而不在其内部起作用

时间:2019-12-13 15:47:14

标签: php if-statement variables

我设法获得了想要用于进一步处理的变量。不幸的是,我不能在if语句中使用它。有人可以告诉我为什么吗?

$location = " ";
$persons = " ";
if (isset($_GET['filter'])) {
    $_SESSION['filter'] = "start";
    $location = $_GET['destination'];
    $checkin = $_GET['checkin'];
    $checkout = $_GET['checkout'];
    $adults = $_GET['adults'];
    $children = $_GET['children'];

    $persons = $adults + $children;

    $query = "SELECT * FROM hotels WHERE location LIKE '$location%' AND persons >= $persons";
    $results = mysqli_query($db, $query);
}
echo $location; // Working
if (isset($_SESSION['filter']) && (isset($_GET['highest']))) {
    echo $location; // Not working
    echo "example"; // Working
}

2 个答案:

答案 0 :(得分:1)

第二个IF条件可能不满足,这可能是因为未设置$ _GET ['highest']。

此外:请注意,使用不带预准备语句的mysqli_queries是SQL注入的主要安全漏洞。这对MySQLI不起作用(如@ Do n't Panic指出的那样),但是为了简单起见:假定对您的端点的GET请求带有$ persons变量,该变量包括恶意SQL,例如:

1; DROP *.*;'

使用准备好的语句,您可以告诉MySQL连接在SQL的什么位置期望什么类型的变量,以便不能注入恶意SQL。

答案 1 :(得分:-3)

请尝试将变量名称从$ location更改为其他