0

目前无法弄清楚如何在输出 HTML 页面的打印函数中正确转义 php 函数。

例如,我有一个名为 removeClient 的页面,我想在其中根据其 ID 删除客户端。下拉框应该为用户提供当前可用的客户端 ID,并且他们应该能够单击一个。

我有一个主页,根据 URL 提供的视图调用函数。

现在,我希望页面打印带有 Postgres 数据库提供的 ID 的下拉菜单,然后是一些表单来填写新的用户数据。

被调用的函数如下;

    function removeClient() {

    include 'dbconnect.php';

    if ((isset($_POST['add']))) {

        if (isset($_POST['ID']) && (isset($_POST['FirstName'])) && (isset($_POST['LastName'])) && (isset($_POST['IP'])) && (isset($_POST['Status']))) {
            $clientid = $_POST['ID'];
            $FirstName = $_POST['FirstName'];
            $LastName = $_POST['LastName'];
            $ip = $_POST['IP'];
            $status = $_POST['Status'];

            $result = pg_query($dbconnection, "somequery");

            if (@pg_affected_rows($result) === 1) {

                echo "<p> Client removed!</p>";
            } else {

                echo "<p> Something went horribly wrong. Contact a system adminstrator </p>";
            }
        }
    }


    echo

    "<form name=\"addClient\" method=\"post\" action=\"?view=addClient\"/><br/>" .
    "<select name=\"clientID\" id=\"clientID\">         " .
    "<td>ID</td> <tr><input type=\"text\" maxlength=\"32\" name=\"ID\" /></tr><br/>" .
    "<td>First Name</td> <tr><input type=\"text\" maxlength=\"32\" name=\"FirstName\" /></tr><br/>" .
    "<td>Last Name</td> <tr><input type=\"text\" maxlength=\"32\" name=\"LastName\" /></tr><br/>" .
    "<td>IP Addr.</td> <tr><input type=\"text\" maxlength=\"32\" name=\"IP\" /></tr><br/>" .
    "<td>Status</td> <tr><input type=\"text\" maxlength=\"32\" name=\"Status\" /></tr><br/>" .
    "<input type=\"submit\" name=\"add\" value=\"Send\" /></form><br/>";
}

现在,我要做的是更改 " " 行。

到 Postgres 通过 PHP 加载她的数据库值的行。

对于 PHP 部分,我得到了这个;

    <option>Select userID</option>
<?php
$db = pg_connect("connection details") or   die('Could not connect: ' . pg_last_error());
$sql = pg_query("SELECT title FROM books WHERE ownedby='$user_id'";
while ($row = pg_fetch_assoc($sql)) {
echo '<option value="'.htmlspecialchars($row['title']).'"></option>';}
pg_close($db);
?>
</select>
<input type="hidden" name="userid" id="userid" value="<?php echo htmlspecialchars($user_id); ?>">

现在,我不确定如何在打印 HTML 页面的 echo 调用中实现这一点。我试图做很多逃避,但它还没有帮助。如何有效地将这段代码添加到我的表单结构中,在 php 中回显?

4

3 回答 3

0
echo <<<_HTML

<html code> _HTML;

使用这种方式在 echo 或 print 中编写 html 代码。

于 2013-11-04T10:06:47.303 回答
0

也许ENT_QUOTEShtmlspecialchars 中缺少参数?

htmlspecialchars($row['title'], ENT_QUOTES)

另外,检查htmlspecialchars(和/或htmlentities)文档以查看其他参数(第三个是关于 charset )

编辑:我不确定是否<option value="something"></option>可以显示该值,所以也许你也应该试试这个:

echo '<option>'.htmlspecialchars($row['title'], ENT_QUOTES).'</option>';}
于 2013-11-04T10:08:00.473 回答
0

正如 TiMESPLiNTER 指出的那样 - 你需要改变这个:

echo '<option value="'.htmlspecialchars($row['title']).'"></option>';}

echo '<option>'.htmlspecialchars($row['title']).'</option>';}
于 2013-11-04T10:11:38.640 回答