在打印HTML页面的函数中转义PHP

时间:2013-11-04 09:59:55

标签: php html

目前无法弄清楚如何在输出我的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中回显?

3 个答案:

答案 0 :(得分:0)

echo <<<_HTML

<html code> _HTML;

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

答案 1 :(得分:0)

htmlspecialchars中可能缺少参数ENT_QUOTES

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

另外,请查看htmlspecialchars(和/或htmlentities)文档以查看其他参数(第3个是关于字符集)

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

echo '<option>'.htmlspecialchars($row['title'], ENT_QUOTES).'</option>';}

答案 2 :(得分:0)

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

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

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