如何在php中的if语句中添加多个条件

Posted

技术标签:

【中文标题】如何在php中的if语句中添加多个条件【英文标题】:How can I add multiple conditions to if statment in php 【发布时间】:2017-08-13 18:00:13 【问题描述】:

我正在开发一个 php 项目。在 session.php 中,我允许哪些用户可以访问每个页面。登录用户和其他。但问题是我无法将数据库中表中的所有 id-s 添加到 if 语句中。因为我希望所有用户都可以访问所有“oglasi”。

        <?php
        include_once 'db.php';
        session_start();
        ob_start();

        $query = "SELECT id FROM oglasi";
        $result = mysqli_query($link, $query);

        while ($row = mysqli_fetch_array($result)) 
        $id = $row['id'];
        //if not logged in you can access
        if (empty($_SESSION['user_id']) &&
                $_SERVER['REQUEST_URI'] != '/SP/oglasi/index.php' &&
                $_SERVER['REQUEST_URI'] != '/SP/oglasi/registration.php' &&
                $_SERVER['REQUEST_URI'] != '/SP/oglasi/oglasi.php' &&
                $_SERVER['REQUEST_URI'] != '/SP/oglasi/oglasi_show.php?id='.$id &&
                $_SERVER['REQUEST_URI'] != '/SP/oglasi/user_insert.php' &&
                $_SERVER['REQUEST_URI'] != '/SP/oglasi/login_check.php') 
            header("Location: index.php");
            die();
        
          

        ?>

这是关键声明

    $_SERVER['REQUEST_URI'] != '/SP/oglasi/oglasi_show.php?id='.$id &&

$id 变量应该改变 1,2... 但它没有改变。

如果我这样做,它可以工作,但如果你有很多数据,那就不好了。

    $_SERVER['REQUEST_URI'] != '/SP/oglasi/oglasi_show.php?id=2' &&
    $_SERVER['REQUEST_URI'] != '/SP/oglasi/oglasi_show.php?id=1' &&

有人可以帮忙吗?

【问题讨论】:

检查strpos() 在每个循环中创建一个要比较的字符串,例如$compare_with,这个变量是每个循环中动态创建的字符串。最后将该字符串与$_SERVER['REQUEST_URI'] 进行比较。您也可以每次使用str_replace 使您成为$compare_with 字符串。 【参考方案1】:

我想你可以这样简化检查:

include_once 'db.php';
session_start();
ob_start();

//if not logged in you can access
if (empty($_SESSION['user_id']) &&
    strpos($_SERVER['REQUEST_URI'], '/SP/oglasi/') !== 0) 
    header("Location: index.php");
    die();    

您在这里检查 - 如果模式 /SP/oglasi/ 在位置 0 的 REQUEST_URI 中不存在(这意味着 REQUEST_URI 以它开头) - 然后将用户重定向到 index.php

如果不是所有 oglasi 子部分可以由用户访问 - 你仍然可以使用你的条件:

include_once 'db.php';
session_start();
ob_start();

if (empty($_SESSION['user_id']) &&
    $_SERVER['REQUEST_URI'] != '/SP/oglasi/index.php' &&
    $_SERVER['REQUEST_URI'] != '/SP/oglasi/registration.php' &&
    $_SERVER['REQUEST_URI'] != '/SP/oglasi/oglasi.php' &&
    $_SERVER['REQUEST_URI'] != '/SP/oglasi/user_insert.php' &&
    $_SERVER['REQUEST_URI'] != '/SP/oglasi/login_check.php' &&
    strpos($_SERVER['REQUEST_URI'], '/SP/oglasi/oglasi_show.php') !== 0  
)  
    header("Location: index.php");
    die();

【讨论】:

以上是关于如何在php中的if语句中添加多个条件的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 SAS中 LAG不能在条件语句中使用的问题!

如何在 Robot Framework 中编写 if 语句的多个条件

Groovy Tip 3 如何在if条件语句中判断对象为空

如果满足多个条件,如何使用 If 语句计算数字?

如何在多个if / else条件下使用Throws?

如何在python中为一个if语句设置多个条件[重复]