繁体   English   中英

变量在 if 语句之外而不是在里面

[英]Variable works outside if statement and not inside it

我设法获得了我想用于进一步处理的变量。 不幸的是,我不能在 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
}

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

另外:请注意,在没有准备好的语句的情况下使用 mysqli_queries 是 SQL 注入的一个主要安全漏洞。 这不适用于 MySQLI(正如@Don't Panic 指出的那样),但为了简单起见:假设对您的端点的 GET 请求带有一个包含恶意 SQL 的 $persons 变量,例如:

1; DROP *.*;'

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM