douyingmou1389 2018-07-22 03:53
浏览 17
已采纳

数据显示在前面的上方

I have a simple class to work with viewing the people who are blacklisted in my web application. Here is the index.php

require_once "../model/ViewBlacklist.php";
// Handling a navigation to the webpage
try {
    $viewBlacklist = new ViewBlacklist("view-blacklists.php", "View Blacklists", $navForUser);
} catch (Exception $ex) {
    echo $ex->getMessage();
}

Here is the ViewBlacklist class:

class ViewBlacklist {

    function __construct(string $page, string $pageTitle, string $navbar) {

        if (empty($_POST) && empty($_GET) && empty(file_get_contents("php://input"))) {
            $_SESSION["CSRFTOKEN"] = hash("sha512", random_bytes(64));
            $csrfToken = $_SESSION["CSRFTOKEN"];
            $pageTitle = $pageTitle;
            $navForUser = $navbar;
            $usernameBlacklist = "<table id='usernameBlacklistTable'>";
            $usernameBlacklist .= "<thead><tr><th>Username</th><th>Time Blocked</th><th>When time will expire</th><th>Remove Blacklist?</th></tr></thead>";
            $usernameBlacklist .= "<tbody>";
            $usernameBlacklist .= $this->getBlacklistedUsernames();
            $usernameBlacklist .= "</tbody>";
            $usernameBlacklist .= "</table>";
            $ipAddressBlacklist = "<table id='ipAddressBlacklistTable'>";
            $ipAddressBlacklist .= "<thead><th>Ip Address</th><th>Time Blocked</th><th>When time will expire</th><th>Remove Blacklist?</th></thead>";
            $ipAddressBlacklist .= "<tbody>";
            $ipAddressBlacklist .= $this->getBlacklistedIps();
            $ipAddressBlacklist .= "</tbody>";
            $ipAddressBlacklist .= "</table>";
            include_once $page;
            exit;
        }

    }

    private function getBlacklistedUsernames() : string {
        $blacklistedUsernames = "";
        $initDB = new DatabaseConfig();
        $db = $initDB->start_db();
        $sql = "SELECT username, added, allowed FROM blacklisted_users";
        $stmt = $db->prepare($sql);
        $stmt->execute();
        $data = $stmt->fetch(PDO::FETCH_ASSOC);
        $stmt->closeCursor();
        if (!empty($data)) {
            var_dump($data);
        } else {
            return "<tr><p class='empty-table-return'>There are no blacklisted usernames</p></tr>";
        }
    }

    private function getBlacklistedIps() : string {
        $blacklistedUsernames = "";
        $initDB = new DatabaseConfig();
        $db = $initDB->start_db();
        $sql = "SELECT ip_add, added, allowed FROM blacklisted_ips";
        $stmt = $db->prepare($sql);
        $stmt->execute();
        $data = $stmt->fetch(PDO::FETCH_ASSOC);
        $stmt->closeCursor();
        if (!empty($data)) {
            var_dump($data);
        } else {
            return "<tr><p class='empty-table-return'>There are no blacklisted IP addresses</p></tr>";
        }
    }

}

The problem is, where I'm calling $this->getBlacklistedUsernames(); or $this->getBlacklistedIps() the return from that data (which is currently in the else, because nothing lives in my blacklist tables right now) is going above my tables, so the words There are no blacklisted usernames appear above the entire <table> element contained in the variable $usernameBlacklist and the same for the ip addresses. Here is how it is called in the frontend:

<?php include_once "../header.php"; include_once "../nav.php"; ?>

<?php echo $usernameBlacklist; echo $ipAddressBlacklist; ?>

<?php include_once "../footer.php";

What is making my return from my get...() functions appear above the variable they're concatenated into?

  • 写回答

1条回答 默认 最新

  • douzhigan1687 2018-07-22 04:12
    关注

    So the problem is, it was actually an HTML validation problem. It turns out that you can't have an element be a direct descendent of a <tr> element that isn't a <td> element. So the reason it was a problem was because my <p> element had no <td> parent surrounding it, so the html validation failure forced the <p> up to the top.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B
  • ¥15 想问一下stata17中这段代码哪里有问题呀
  • ¥15 flink cdc无法实时同步mysql数据